<?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>53219</bug_id>
          
          <creation_ts>2011-01-26 18:22:53 -0800</creation_ts>
          <short_desc>Convert markstack to a slot visitor API</short_desc>
          <delta_ts>2011-03-07 16:21:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>53360</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>buildbot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>kent.hansen</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>340688</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-26 18:22:53 -0800</bug_when>
    <thetext>Convert markstack to a slot visitor API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341147</commentid>
    <comment_count>1</comment_count>
      <attachid>80382</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-27 17:11:53 -0800</bug_when>
    <thetext>Created attachment 80382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341150</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-27 17:15:28 -0800</bug_when>
    <thetext>Attachment 80382 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSArray.h:30:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 114 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>341183</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-27 17:45:53 -0800</bug_when>
    <thetext>Attachment 80382 did not build on qt:
Build output: http://queues.webkit.org/results/7651064</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341198</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-27 17:59:07 -0800</bug_when>
    <thetext>Attachment 80382 did not build on win:
Build output: http://queues.webkit.org/results/7593365</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341207</commentid>
    <comment_count>5</comment_count>
      <attachid>80390</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-27 18:04:53 -0800</bug_when>
    <thetext>Created attachment 80390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341211</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-27 18:08:23 -0800</bug_when>
    <thetext>Attachment 80390 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSArray.h:30:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 114 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>341242</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-27 18:45:45 -0800</bug_when>
    <thetext>Attachment 80390 did not build on qt:
Build output: http://queues.webkit.org/results/7532385</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341259</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-27 19:40:18 -0800</bug_when>
    <thetext>Attachment 80390 did not build on gtk:
Build output: http://queues.webkit.org/results/7561392</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341326</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-27 23:12:29 -0800</bug_when>
    <thetext>Attachment 80390 did not build on mac:
Build output: http://queues.webkit.org/results/7603393</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341503</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-01-28 10:20:35 -0800</bug_when>
    <thetext>-        ALWAYS_INLINE void append(JSValue);
-        void append(JSCell*);
+        void append(JSValue*);
+        void append(JSCell**);

I think we want these APIs to be 

deprecatedAppend(JSValue*);
template &lt;typename T&gt; deprecatedAppend(DeprecatedPtr&lt;T&gt;);
template &lt;typename T&gt; append(WriteBarrier&lt;T&gt;);

We rely on MarkStack&apos;s interface, and the help of the compiler, to suss out all the objects that aren&apos;t yet moving-safe. I think it&apos;s worth it to limit the surface area here, not allowing any JSCell**, and to call out the deprecated interfaces explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341513</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-01-28 10:30:39 -0800</bug_when>
    <thetext>+    template &lt;&gt; class WriteBarrierBase&lt;Unknown&gt; {

What&apos;s the goal of this separate base class?

+    protected:
+        EncodedJSValue m_value;

Can we store a JSValue instead of an EncodedJSValue?


+++ b/Source/JavaScriptCore/runtime/JSValue.h
@@ -23,6 +23,8 @@
 #ifndef JSValue_h
 #define JSValue_h
 
+#include &quot;WriteBarrier.h&quot;

It&apos;s confusing that half the WriteBarrier and DeprecatedPtr class is in WriteBarrier.h, and half is in JSValue.h. Can we put them in the same file, and have WriterBarrier.h #include JSValue.h? JSValue declares two constructor declarations that depend on a template declaration, but I think you can just add that those declarations stand-alone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341586</commentid>
    <comment_count>12</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-28 11:49:29 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; +    template &lt;&gt; class WriteBarrierBase&lt;Unknown&gt; {
&gt; 
&gt; What&apos;s the goal of this separate base class?
&gt; 
&gt; +    protected:
&gt; +        EncodedJSValue m_value;
&gt; 
&gt; Can we store a JSValue instead of an EncodedJSValue?
Nope.

&gt; 
&gt; 
&gt; +++ b/Source/JavaScriptCore/runtime/JSValue.h
&gt; @@ -23,6 +23,8 @@
&gt;  #ifndef JSValue_h
&gt;  #define JSValue_h
&gt; 
&gt; +#include &quot;WriteBarrier.h&quot;
&gt; 
&gt; It&apos;s confusing that half the WriteBarrier and DeprecatedPtr class is in WriteBarrier.h, and half is in JSValue.h. Can we put them in the same file, and have WriterBarrier.h #include JSValue.h? JSValue declares two constructor declarations that depend on a template declaration, but I think you can just add that those declarations stand-alone.

I will give that a shot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341589</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-01-28 11:54:38 -0800</bug_when>
    <thetext>&gt; &gt; Can we store a JSValue instead of an EncodedJSValue?
&gt; Nope.

Can you explain why we need to store an EncodedJSValue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341601</commentid>
    <comment_count>14</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-28 12:00:34 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; &gt; Can we store a JSValue instead of an EncodedJSValue?
&gt; &gt; Nope.
&gt; 
&gt; Can you explain why we need to store an EncodedJSValue?

Because using a JSValue creates an implicit constructor in WriteBarrierBase.

We need WriteBarrierBase to have no constructor so that we can put it in the JSObject data union.  That&apos;s also why there&apos;s the WriteBarrierBase and WriteBarrier distinction - WriteBarrier is the easier one to write, and has helpful constructors, but we need a common base class so that JSObject is sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341652</commentid>
    <comment_count>15</comment_count>
      <attachid>80482</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-28 12:40:07 -0800</bug_when>
    <thetext>Created attachment 80482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341655</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-28 12:42:21 -0800</bug_when>
    <thetext>Attachment 80482 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSArray.h:30:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 121 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>341705</commentid>
    <comment_count>17</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-28 13:46:26 -0800</bug_when>
    <thetext>Attachment 80482 did not build on qt:
Build output: http://queues.webkit.org/results/7552349</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341768</commentid>
    <comment_count>18</comment_count>
      <attachid>80503</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-28 15:08:47 -0800</bug_when>
    <thetext>Created attachment 80503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341771</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-28 15:12:00 -0800</bug_when>
    <thetext>Attachment 80503 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSArray.h:30:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 124 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>341794</commentid>
    <comment_count>20</comment_count>
      <attachid>80503</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-01-28 15:26:15 -0800</bug_when>
    <thetext>Comment on attachment 80503
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341807</commentid>
    <comment_count>21</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-28 15:40:46 -0800</bug_when>
    <thetext>Committed r77006: &lt;http://trac.webkit.org/changeset/77006&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341971</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-28 20:08:40 -0800</bug_when>
    <thetext>This patch broke hundreds of layout tests on Windows 7:
http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r77004%20(8776)/results.html
http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r77006%20(8777)/results.html

I&apos;m sorry but I had to roll it out in http://trac.webkit.org/changeset/77044.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342405</commentid>
    <comment_count>23</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-30 17:14:24 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; This patch broke hundreds of layout tests on Windows 7:
&gt; http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r77004%20(8776)/results.html
&gt; http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r77006%20(8777)/results.html
&gt; 
&gt; I&apos;m sorry but I had to roll it out in http://trac.webkit.org/changeset/77044.

Rolled back in with 32bit fix in r77098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342476</commentid>
    <comment_count>24</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-01-30 23:03:32 -0800</bug_when>
    <thetext>Reopen, because it was rolled out by http://trac.webkit.org/changeset/77113

Qt build was broken for ~6 hours and 7 patches are stucked in Qt EWS because of this build break.

Qt EWS and Qt folks always willingly help you to fix the Qt 
build, but breaking the build for hours isn&apos;t a fairplay game ...

Please respect and don&apos;t ignore &quot;Keeping the tree green&quot; policy:
http://webkit.org/coding/contributing.html
&quot;Your change must at least compile on all platforms.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342477</commentid>
    <comment_count>25</comment_count>
      <attachid>80503</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-01-30 23:03:54 -0800</bug_when>
    <thetext>Comment on attachment 80503
Patch

remove r+ from landed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342587</commentid>
    <comment_count>26</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-31 08:31:08 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Reopen, because it was rolled out by http://trac.webkit.org/changeset/77113
&gt; 
&gt; Qt build was broken for ~6 hours and 7 patches are stucked in Qt EWS because of this build break.
&gt; 
&gt; Qt EWS and Qt folks always willingly help you to fix the Qt 
&gt; build, but breaking the build for hours isn&apos;t a fairplay game ...
&gt; 
&gt; Please respect and don&apos;t ignore &quot;Keeping the tree green&quot; policy:
&gt; http://webkit.org/coding/contributing.html
&gt; &quot;Your change must at least compile on all platforms.&quot;


I emailed simon for assistance, there is no clear goto person for qt js bindings.

The build failures should have been trivial for someone to fix if they had a qt build.

Also afaict the build bot output was giving invalid line numbers.

There&apos;s bindings code for qt that is not using normal webcore hashmaps so my ability to actually fix code that&apos;s using them is severely limited.

I will land this again with my approach to &quot;working build&quot; be compiling.  Even if the code is obviously incorrect.

Personally I would have tried being more polite to someone who actually put effort into fixing things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342591</commentid>
    <comment_count>27</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-31 08:34:13 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Reopen, because it was rolled out by http://trac.webkit.org/changeset/77113
&gt; 
&gt; Qt build was broken for ~6 hours and 7 patches are stucked in Qt EWS because of this build break.
&gt; 
&gt; Qt EWS and Qt folks always willingly help you to fix the Qt 
&gt; build, but breaking the build for hours isn&apos;t a fairplay game ...
&gt; 
&gt; Please respect and don&apos;t ignore &quot;Keeping the tree green&quot; policy:
&gt; http://webkit.org/coding/contributing.html
&gt; &quot;Your change must at least compile on all platforms.&quot;

Sorry i forgot: I also told those qt people that appeared to be on irc when i logged off about what they needed to do to fix the build.  

Clearly I&apos;m a bastard.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80382</attachid>
            <date>2011-01-27 17:11:53 -0800</date>
            <delta_ts>2011-01-27 18:04:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53219-20110127171152.patch</filename>
            <type>text/plain</type>
            <size>256086</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggODM0
NDJiMmUwMjI2YTg2NjExYTVkNmE4ZDA0OWVhYmFmMDAyZDg5OS4uNzBhZWRiZmE0YjRmNjJkNGRj
ZTUxNzZhMTE5MzVjYzA2NDU3NGExMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKQEAgLTU0LDExICs1NCwxMSBAQCBzdHJ1Y3QgSlNDYWxsYmFja09i
amVjdERhdGEgewogICAgICAgICByZXR1cm4gbV9wcml2YXRlUHJvcGVydGllcy0+Z2V0UHJpdmF0
ZVByb3BlcnR5KHByb3BlcnR5TmFtZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0UHJpdmF0
ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkK
KyAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Q2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVydGllcykKICAgICAgICAgICAg
IG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBhZG9wdFB0cihuZXcgSlNQcml2YXRlUHJvcGVydHlNYXAp
OwotICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5zZXRQcml2YXRlUHJvcGVydHkocHJvcGVy
dHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPnNldFByaXZhdGVQ
cm9wZXJ0eShnbG9iYWxEYXRhLCBvd25lciwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKQEAgLTgzLDEyICs4MywxMyBAQCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERh
dGEgewogICAgICAgICAgICAgUHJpdmF0ZVByb3BlcnR5TWFwOjpjb25zdF9pdGVyYXRvciBsb2Nh
dGlvbiA9IG1fcHJvcGVydHlNYXAuZmluZChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAg
ICAgIGlmIChsb2NhdGlvbiA9PSBtX3Byb3BlcnR5TWFwLmVuZCgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb24tPnNlY29uZDsK
KyAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbi0+c2Vjb25kLmdldCgpOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCisgICAgICAgIHZvaWQgc2V0UHJpdmF0ZVBy
b3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBtX3Byb3BlcnR5TWFwLnNldChwcm9wZXJ0eU5hbWUuaW1wbCgpLCB2YWx1ZSk7CisgICAg
ICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7CisgICAgICAgICAgICBtX3Byb3Bl
cnR5TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuZmlyc3QtPnNlY29uZC5zZXQo
Z2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
dm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQpAQCAtMTAwLDEyICsxMDEsMTIgQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIHsKICAg
ICAgICAgewogICAgICAgICAgICAgZm9yIChQcml2YXRlUHJvcGVydHlNYXA6Oml0ZXJhdG9yIHB0
ciA9IG1fcHJvcGVydHlNYXAuYmVnaW4oKTsgcHRyICE9IG1fcHJvcGVydHlNYXAuZW5kKCk7ICsr
cHRyKSB7CiAgICAgICAgICAgICAgICAgaWYgKHB0ci0+c2Vjb25kKQotICAgICAgICAgICAgICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKHB0ci0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICAgICAg
bWFya1N0YWNrLmFwcGVuZChwdHItPnNlY29uZC5zbG90KCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0
cmluZ0ltcGw+LCBKU1ZhbHVlLCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZVByb3BlcnR5TWFw
OworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlUHJvcGVydHlNYXA7CiAgICAg
ICAgIFByaXZhdGVQcm9wZXJ0eU1hcCBtX3Byb3BlcnR5TWFwOwogICAgIH07CiAgICAgT3duUHRy
PEpTUHJpdmF0ZVByb3BlcnR5TWFwPiBtX3ByaXZhdGVQcm9wZXJ0aWVzOwpAQCAtMTM3LDkgKzEz
OCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3REYXRhLT5nZXRQ
cml2YXRlUHJvcGVydHkocHJvcGVydHlOYW1lKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRQ
cml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlKQorICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsK
LSAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPnNldFByaXZhdGVQcm9wZXJ0eShwcm9wZXJ0
eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPnNldFByaXZhdGVQ
cm9wZXJ0eShnbG9iYWxEYXRhLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCBkZTVkODQyMTY0NDNhNDRhZDQwZjk1MWZmMDVmNDg1
MDVmYjE3MjVhLi5mMDM0NDNmNGViM2Y4YWRmOTRkNGY1ODRjYjA1YTViMGFhNWFlZmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6
cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lCiAgICAg
ICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMt
PmdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+
YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojpw
dXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0
eQorICAgICAgICAgICAgICAgIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJpZGUg
cHJvcGVydHkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTU2NSw3ICs1NjUsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnN0
YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbAogICAgICAgICAg
ICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24g
PSBlbnRyeS0+Y2FsbEFzRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIEpTT2JqZWN0KiBvID0gbmV3IChleGVjKSBKU0NhbGxiYWNrRnVuY3Rpb24o
ZXhlYywgYXNHbG9iYWxPYmplY3QodGhpc09iai0+Z2V0QW5vbnltb3VzVmFsdWUoMCkpLCBjYWxs
QXNGdW5jdGlvbiwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+
cHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgbywgZW50cnktPmF0dHJpYnV0ZXMpOworICAgICAgICAg
ICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG87CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBkNmRlNDI2ODJmNDQ0NzBhNmExNWU5ODQ5MzM3
NGQ0ZTJiMmVjODc2Li5kM2MxOTkzMTg4MmU1ZWY1MDYwNTc0OGQ4ZWVlYzI1YTQ1MDJkN2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMTA4LDcgKzEw
OCw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBj
dHgsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNPYmplCiAgICAgICAgIGpzUHJvdG90eXBlID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKTsKIAogICAgIEpTQ2Fs
bGJhY2tDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEpTQ2FsbGJhY2tDb25z
dHJ1Y3RvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSgpLCBqc0NsYXNzLCBjYWxsQXND
b25zdHJ1Y3Rvcik7Ci0gICAgY29uc3RydWN0b3ItPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCBqc1Byb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpOworICAgIGNvbnN0cnVjdG9yLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBqc1Byb3RvdHlwZSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHJldHVybiB0b1JlZihjb25zdHJ1Y3Rvcik7CiB9
CiAKQEAgLTM4NSwxMSArMzg1LDExIEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHko
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlCiAgICAgSlNW
YWx1ZSBqc1ZhbHVlID0gdmFsdWUgPyB0b0pTKGV4ZWMsIHZhbHVlKSA6IEpTVmFsdWUoKTsKICAg
ICBJZGVudGlmaWVyIG5hbWUocHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9iYWxE
YXRhKCkpKTsKICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpT
R2xvYmFsT2JqZWN0Pjo6aW5mbykpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09i
amVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShuYW1l
LCBqc1ZhbHVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2Jh
bE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9iYWxEYXRh
KCksIG5hbWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYg
KGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxP
YmplY3Q+OjppbmZvKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShu
YW1lLCBqc1ZhbHVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU09i
amVjdFdpdGhHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVydHkoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaAppbmRleCA2NGUxZjRkNTNiN2U4YjE4
Mzk1MjQ2ZWU4MmJiODQwOWJjMDcyMDBlLi5mN2I5MWRhNTFkMzI2ZGIyYTQ1ZjY3N2ViZmVmNmY3
ZjBlYzViNzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09i
amVjdE1hcFJlZkludGVybmFsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEpTT2JqZWN0
OwogCiB0eXBlZGVmIHZvaWQgKCpKU1dlYWtNYXBEZXN0cm95ZWRDYWxsYmFjaykoc3RydWN0IE9w
YXF1ZUpTV2Vha09iamVjdE1hcCosIHZvaWQqKTsKIAotdHlwZWRlZiBKU0M6OldlYWtHQ01hcDx2
b2lkKiwgSlNDOjpKU09iamVjdCo+IFdlYWtNYXBUeXBlOwordHlwZWRlZiBKU0M6OldlYWtHQ01h
cDx2b2lkKiwgSlNDOjpKU09iamVjdD4gV2Vha01hcFR5cGU7CiAKIHN0cnVjdCBPcGFxdWVKU1dl
YWtPYmplY3RNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGFxdWVKU1dlYWtPYmplY3RNYXA+IHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRjNzMxNDMwMDdjNzkzOWZhZmUx
ZjI2NjFhODExMjIzNmU4OTE4NGIuLjk1MmJmMDkyMWFiOTY2NWQ0NmE5Njc1NDNhZGQ5MDNiNTZh
ZTBkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxNCBAQAorMjAxMS0w
MS0yNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgbWFya3N0YWNrIHRvIGEgc2xv
dCB2aXNpdG9yIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTMyMTkKKworICAgICAgICBNb3ZlIHRoZSBNYXJrU3RhY2sgb3ZlciB0byBhIHNsb3Qg
YmFzZWQgbWFya2luZyBBUEkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWRpbmcgYWxpYXNp
bmcgY29uY2VybnMgdGhlcmUgYXJlIHR3byBuZXcgdHlwZXMKKyAgICAgICAgdGhhdCBuZWVkIHRv
IGJlIHVzZWQgd2hlbiBob2xkaW5nIG9uIHRvIEpTVmFsdWVzIGFuZCBKU0NlbGwgdGhhdAorICAg
ICAgICBuZWVkIHRvIGJlIG1hcmtlZDogV3JpdGVCYXJyaWVyIGFuZCBEZXByZWNhdGVkUHRyLiAg
V3JpdGVCYXJyaWVyCisgICAgICAgIGlzIGV4cGVjdGVkIHRvIGJlIHVzZWQgZm9yIGFueSBKU1Zh
bHVlIG9yIENlbGwgdGhhdCdzIGxpZmV0aW1lIGFuZAorICAgICAgICBtYXJraW5nIGlzIGNvbnRy
b2xsZWQgYnkgYW5vdGhlciBHQyBvYmplY3QuICBEZXByZWNhdGVkUHRyIGlzIHVzZWQKKyAgICAg
ICAgZm9yIGFueSB2YWx1ZSB0aGF0IHdlIG5lZWQgdG8gcmV3b3JrIG93bmVyc2hpcCBmb3IuCisK
KyAgICAgICAgVGhlIGNoYW5nZSBvdmVyIHRvIHRoaXMgbW9kZWwgaGFzIHByb2R1Y2VkIGEgbGFy
Z2UgYW1vdW50IG9mCisgICAgICAgIGNvZGUgY2hhbmdlcywgYnV0IHRoZXkgYXJlIG1vc3RseSBt
ZWNoYW5pY2FsIChmb3J3YXJkaW5nIEpTR2xvYmFsRGF0YSwKKyAgICAgICAgZXRjKS4KKworICAg
ICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tP
YmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNr
T2JqZWN0RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OmdldFByaXZhdGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6
c2V0UHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6
OkpTUHJpdmF0ZVByb3BlcnR5TWFwOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0Nh
bGxiYWNrT2JqZWN0OjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6Ojo6cHV0KToKKyAgICAgICAgKEpT
Qzo6OjpzdGF0aWNGdW5jdGlvbkdldHRlcik6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNw
cDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTT2JqZWN0
U2V0UHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKiBBUEkvSlNXZWFrT2JqZWN0TWFwUmVmSW50
ZXJuYWwuaDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0Fn
Z3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJ
Zk5vdEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SnVtcElmTm90RnVuY3Rpb25BcHBseSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpmaW5kU2NvcGVkUHJvcGVydHkpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZh
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6RGVidWdnZXJBY3Rp
dmF0aW9uKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjptYXJrQ2hpbGRyZW4p
OgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJl
c29sdmUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZVNraXApOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbER5bmFtaWMpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6cmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VU
b0Vycm9yKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVy
L1JlZ2lzdGVyLmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpqc1ZhbHVlU2xvdCk6CisgICAg
ICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNo
ZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KToKKyAgICAg
ICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6bWFy
a0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgIChKU0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50
cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnNldEFjdGl2YXRpb24pOgorICAgICAgICAo
SlNDOjpBcmd1bWVudHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayk6CisgICAg
ICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmFycmF5UHJv
dG9GdW5jU3BsaWNlKToKKyAgICAgICAgKiBydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1p
emVyLmg6CisgICAgICAgIChKU0M6OkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOjpCYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplcik6CisgICAgICAgIChKU0M6OkJhdGNoZWRUcmFuc2l0aW9uT3B0
aW1pemVyOjp+QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
Qm9vbGVhbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbkNvbnN0cnVjdG9y
OjpCb29sZWFuQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RCb29sZWFuKToK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKToKKyAg
ICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpCb29s
ZWFuUHJvdG90eXBlOjpCb29sZWFuUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbnNl
cnZhdGl2ZVNldC5oOgorICAgICAgICAoSlNDOjpDb25zZXJ2YXRpdmVTZXQ6Om1hcmspOgorICAg
ICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUNv
bnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3Rh
bmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UpOgorICAg
ICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNTZXRUaW1lKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MpOgor
ICAgICAgICAoSlNDOjpzZXROZXdWYWx1ZUZyb21EYXRlQXJncyk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNTZXRZZWFyKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJv
ckluc3RhbmNlOjpFcnJvckluc3RhbmNlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKToK
KyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90
b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRl
ci5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6bWFya0NoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6
OkdldHRlclNldHRlcik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6Z2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpzZXRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpHZXR0
ZXJTZXR0ZXI6OnNldHRlcik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6c2V0U2V0dGVy
KToKKyAgICAgICAgKiBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChK
U0M6Okdsb2JhbEV2YWxGdW5jdGlvbjo6R2xvYmFsRXZhbEZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6R2xvYmFsRXZhbEZ1bmN0aW9uOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
R2xvYmFsRXZhbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6Okdsb2JhbEV2YWxGdW5jdGlvbjo6
Y2FjaGVkR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjptYXJrUHJvdGVjdGVkT2JqZWN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6
Om1hcmtUZW1wU29ydFZlY3RvcnMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6Oklu
dGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
UElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OnZhbHVl
KToKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OkpTQVBJVmFsdWVXcmFwcGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0
aXZhdGlvbjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAo
SlNDOjpKU0FycmF5OjpKU0FycmF5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJh
eTo6cHV0U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpkZWxldGVQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnVu
c2hpZnRDb3VudCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnQpOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb1Jl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0SW5k
ZXgpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpzZXRJbmRleCk6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnVuY2hlY2tlZFNldEluZGV4KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6bWFya0No
aWxkcmVuRGlyZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6Ok1hcmtTdGFjazo6YXBwZW5kKToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpNYXJrU3RhY2s6OmFwcGVuZENlbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXJrSWZOZWVk
ZWQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdERhdGE6OkpT
R2xvYmFsT2JqZWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjplcnJvckNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmV2YWxFcnJvckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJhbmdlRXJyb3JDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnN5bnRheEVycm9yQ29uc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dHlwZUVycm9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6VVJJRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpldmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6b2JqZWN0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmFycmF5UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmJvb2xlYW5Q
cm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RyaW5nUHJvdG90eXBl
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51bWJlclByb3RvdHlwZSk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpkYXRlUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0OjptZXRob2RDYWxsRHVtbXkpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheSk6
CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5n
aWZpZXI6OkhvbGRlcjo6b2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRl
cjo6b2JqZWN0U2xvdCk6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjptYXJrQWdncmVnYXRl
KToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OnN0cmluZ2lmeSk6CisgICAgICAgIChKU0M6
OlN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OldhbGtlcjo6Y2FsbFJldml2ZXIpOgorICAgICAgICAoSlNDOjpXYWxrZXI6OndhbGspOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVm
aW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZVNldHRlcik6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpyZW1vdmVEaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0RGlyZWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OnB1dERlc2NyaXB0b3Ip
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9m
ZnNldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNl
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmbGF0dGVuRGljdGlvbmFyeU9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dERpcmVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZUlubGluZSk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTdGF0aWNTY29wZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3RhdGljU2NvcGVPYmpl
Y3Q6Om1hcmtDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAg
ICAgIChKU0M6OlN0cmluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFs
dWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTV3JhcHBlck9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
V3JhcHBlck9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OmludGVybmFs
VmFsdWUpOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OnNldEludGVybmFsVmFsdWUp
OgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6Okxp
dGVyYWxQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAg
ICAgIChKU0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xv
b2t1cC5oOgorICAgICAgICAoSlNDOjpsb29rdXBQdXQpOgorICAgICAgICAqIHJ1bnRpbWUvTWFy
a1N0YWNrLmg6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWF0aE9iamVjdDo6TWF0aE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVF
cnJvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6Ok51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdFdpdGhOdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICog
cnVudGltZS9OdW1iZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3ROdW1iZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
TnVtYmVyUHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6T2Jq
ZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKToKKyAgICAgICAgKEpTQzo6cmVzb2x2
ZUJhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpQcm90b3R5cGVGdW5jdGlvbjo6UHJvdG90eXBlRnVuY3Rpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xv
dDo6c2V0RXhpc3RpbmdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6
c2V0TmV3UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OmJhc2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpS
ZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUv
U2NvcGVDaGFpbi5jcHA6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpwcmludCk6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5O
b2RlOjp+U2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluSXRlcmF0b3I6
Om9wZXJhdG9yKik6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5JdGVyYXRvcjo6b3BlcmF0b3It
Pik6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW46OnRvcCk6CisgICAgICAgICogcnVudGltZS9T
Y29wZUNoYWluTWFyay5oOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluOjptYXJrQWdncmVnYXRl
KToKKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5jcHA6CisgICAgICAgIChKU0M6Omlz
TWFya2VkKToKKyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjptYXJrQ2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5n
czo6ZW1wdHlTdHJpbmcpOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnNpbmdsZUNoYXJh
Y3RlclN0cmluZyk6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6c2luZ2xlQ2hhcmFjdGVy
U3RyaW5ncyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6
OlN0cmluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1By
b3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5j
cHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6c3RvcmVkUHJvdG90eXBlU2xvdCk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoK
KyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjp1bmNoZWNrZWRHZXQpOgorICAgICAgICAoSlNDOjpX
ZWFrR0NNYXA6OnVuY2hlY2tlZEdldFNsb3QpOgorICAgICAgICAoSlNDOjo6OmdldCk6CisgICAg
ICAgIChKU0M6Ojo6dGFrZSk6CisgICAgICAgIChKU0M6Ojo6c2V0KToKKyAgICAgICAgKEpTQzo6
Ojp1bmNoZWNrZWRSZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpEZXByZWNhdGVkUHRyOjpEZXByZWNhdGVkUHRyKToKKyAgICAg
ICAgKEpTQzo6RGVwcmVjYXRlZFB0cjo6Z2V0KToKKyAgICAgICAgKEpTQzo6RGVwcmVjYXRlZFB0
cjo6b3BlcmF0b3IqKToKKyAgICAgICAgKEpTQzo6RGVwcmVjYXRlZFB0cjo6b3BlcmF0b3ItPik6
CisgICAgICAgIChKU0M6OkRlcHJlY2F0ZWRQdHI6OnNsb3QpOgorICAgICAgICAoSlNDOjpEZXBy
ZWNhdGVkUHRyOjpvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKik6CisgICAgICAgIChKU0M6
OkRlcHJlY2F0ZWRQdHI6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OldyaXRlQmFycmllckJh
c2U6OnNldCk6CisgICAgICAgIChKU0M6OldyaXRlQmFycmllckJhc2U6OmdldCk6CisgICAgICAg
IChKU0M6OldyaXRlQmFycmllckJhc2U6Om9wZXJhdG9yKik6CisgICAgICAgIChKU0M6OldyaXRl
QmFycmllckJhc2U6Om9wZXJhdG9yLT4pOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNl
OjpzbG90KToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6b3BlcmF0b3IgVW5zcGVj
aWZpZWRCb29sVHlwZSopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRv
ciEpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXI6OldyaXRlQmFycmllcik6CisgICAgICAg
IChKU0M6Om9wZXJhdG9yPT0pOgorCiAyMDExLTAxLTI2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBh
cm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCAxOTljMzdmMGMyYjY0
MmJmMWM2OTk0NDM5ZDM5OWFhOWNmNGI1ZDQ0Li45ODJhZTE5ZWM4NzM3MjBkMzk1YmNlNmQ3NWRj
ZTJkNjM1OTFkYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAK
QEAgLTE4Myw3ICsxODMsNyBAQCBfX1pOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3IyMXNldER1bXBz
R2VuZXJhdGVkQ29kZUViCiBfX1pOM0pTQzE3UHJvcGVydHlOYW1lQXJyYXkzYWRkRVBOM1dURjEw
U3RyaW5nSW1wbEUKIF9fWk4zSlNDMTdjb25zdHJ1Y3RGdW5jdGlvbkVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzdBcmdMaXN0RVJLTlNfMTBJZGVudGlmaWVyRVJLTlNfN1VTdHJpbmdFaQogX19aTjNKU0Mx
N2NyZWF0ZVN5bnRheEVycm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCi1fX1pOM0pT
QzE4RGVidWdnZXJBY3RpdmF0aW9uQzFFUE5TXzhKU09iamVjdEUKK19fWk4zSlNDMThEZWJ1Z2dl
ckFjdGl2YXRpb25DMUVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzhKU09iamVjdEUKIF9fWk4zSlND
MThQcm9wZXJ0eURlc2NyaXB0b3IxMXNldFdyaXRhYmxlRWIKIF9fWk4zSlNDMThQcm9wZXJ0eURl
c2NyaXB0b3IxMnNldFVuZGVmaW5lZEV2CiBfX1pOM0pTQzE4UHJvcGVydHlEZXNjcmlwdG9yMTNz
ZXREZXNjcmlwdG9yRU5TXzdKU1ZhbHVlRWoKQEAgLTI1MSw3ICsyNTEsNyBAQCBfX1pOM0pTQzdK
U0FycmF5MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5
U2xvdEUKIF9fWk4zSlNDN0pTQXJyYXk0aW5mb0UKIF9fWk4zSlNDN0pTQXJyYXk5c2V0TGVuZ3Ro
RWoKIF9fWk4zSlNDN0pTQXJyYXlDMUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVj
dHVyZUVFRQotX19aTjNKU0M3SlNBcnJheUMxRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185
U3RydWN0dXJlRUVFUktOU183QXJnTGlzdEUKK19fWk4zSlNDN0pTQXJyYXlDMUVSTlNfMTJKU0ds
b2JhbERhdGFFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVSS05TXzdB
cmdMaXN0RQogX19aTjNKU0M3SlNBcnJheUMyRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185
U3RydWN0dXJlRUVFCiBfX1pOM0pTQzdKU0FycmF5RDJFdgogX19aTjNKU0M3SlNWYWx1ZTEzaXNW
YWxpZENhbGxlZUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZGVmCmluZGV4IDAxMzczNmFmZWZmOTc5OTJjNWQ2N2NhMWIwNDAzZWJlZjMzMDI0
MDEuLjYxNDcyZTc2YzdiYjZlMTJjY2Y0MDlkNDhjNGZjZTFmOWEzZGZjNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0xMCw3
ICsxMCw3IEBAIEVYUE9SVFMKICAgICA/PzBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGVASlNDQEBR
QUVAUEFWRXhlY1N0YXRlQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBAWgogICAgID8/MEludGVybmFs
RnVuY3Rpb25ASlNDQEBJQUVAUEFWSlNHbG9iYWxEYXRhQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBW
PyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQUJWSWRlbnRpZmllckAx
QEBaCiAgICAgPz8wSlNBcnJheUBKU0NAQFFBRUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0
dXJlQEpTQ0BAQFdURkBAQFoKLSAgICA/PzBKU0FycmF5QEpTQ0BAUUFFQFY/JE5vbk51bGxQYXNz
UmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQlZBcmdMaXN0QDFAQFoKKyAgICA/PzBKU0Fy
cmF5QEpTQ0BAUUFFQEFBVkpTR2xvYmFsRGF0YUAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1
Y3R1cmVASlNDQEBAV1RGQEBBQlZBcmdMaXN0QDFAQFogIAogICAgID8/MEpTQnl0ZUFycmF5QEpT
Q0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlND
QEBAV1RGQEBQQVZCeXRlQXJyYXlANEBQQlVDbGFzc0luZm9AMUBAWgogICAgID8/MEpTRnVuY3Rp
b25ASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBWPyROb25OdWxs
UGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBASEFCVklkZW50aWZpZXJAMUBQNklfSjBA
WkBaCiAgICAgPz8wSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QEpTQ0BASUFFQFBBVkpTR2xvYmFs
T2JqZWN0QDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQEBaCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFlMzVmNmVhOTcyZWQ3MTA1NDBlZmRhMDRl
YTg2YjU0M2QzNmI4YmIuLjA5ODVlMWU5ODk1NTViNWU1ZTcwZmY4YzJlZDZkMzZhMTRiZTgzMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzIsNiArMzcyLDcgQEAKIAkJQTdD
MUU4RTQxMTJFNzJFRjAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDMUU4QzgxMTJFNzAx
QzAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwICovOyB9OwogCQlBN0M1MzBF
NDEwMkEzODEzMDA1QkM3NDEgLyogTWFya1N0YWNrUG9zaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDNTMwRTMxMDJBMzgxMzAwNUJDNzQxIC8q
IE1hcmtTdGFja1Bvc2l4LmNwcCAqLzsgfTsKIAkJQTdENjQ5QUExMDE1MjI0RTAwOUIyRTFCIC8q
IFBvc3NpYmx5TnVsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdENjQ5QTkxMDE1MjI0RTAwOUIyRTFCIC8qIFBvc3NpYmx5TnVsbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RENCOTczMTJFNTE5
M0YwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
N0UyRUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdFMkVBNjkwRkI0NjBDRjAwNjAxRjA2
IC8qIExpdGVyYWxQYXJzZXIuaCAqLzsgfTsKIAkJQTdFMkVBNkMwRkI0NjBDRjAwNjAxRjA2IC8q
IExpdGVyYWxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdFMkVBNkEwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuY3BwICov
OyB9OwogCQlBN0YxOUVDRTExREQ0OTA5MDA5MzFFNzAgLyogRml4ZWRBcnJheS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGMTlFQ0QxMURENDkwOTAw
OTMxRTcwIC8qIEZpeGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTA0Miw2ICsxMDQzLDcgQEAKIAkJQTdDMUU4QzgxMTJFNzAxQzAw
QTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3QzUzMEUzMTAyQTM4MTMwMDVCQzc0MSAvKiBNYXJrU3RhY2tQ
b3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrU3RhY2tQ
b3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDY0OUE5MTAxNTIyNEUw
MDlCMkUxQiAvKiBQb3NzaWJseU51bGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUG9zc2libHlOdWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RENCNzc5
MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpdGVyYWxQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTdFMkVBNkEwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGl0ZXJhbFBhcnNlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RTQyQzE4MEUzOTM4ODMwMDY1QTU0NCAv
KiBKU1N0YXRpY1Njb3BlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU3RhdGljU2NvcGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5
MDQsNiArMTkwNiw3IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01h
cC5oICovLAogCQkJCTE0MDM1REIwMTBEQkZCMkEwMEZGRkZFNyAvKiBXZWFrR0NQdHIuaCAqLywK
IAkJCQkxNDIwQkU3QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oICovLAorCQkJCUE3
RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDI3LDYgKzI0
MzAsNyBAQAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURFNkU1QjMwRTE3MjhFQzAwMTgwNDA3IC8qIGNyZWF0
ZV9oYXNoX3RhYmxlIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0
IC8qIFlhcnIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RENCOTczMTJFNTE5M0YwMDkxMTk0MCAv
KiBXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OURDMTZDMTJFRjI5NEUwMDE4
NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDlEQzE2
RDEyRUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggZjNmNWYyNzFhZTIzZmViZTAyOGRhMzc3YjY4ZWM2NjkyMmQyM2FlYy4uYWFmOTBj
Njc3NjQxMjg3ZTkwMjhmZWY3NjE2YWNhNWYxNmFmNWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1MjksMTIgKzE1MjksMTIgQEAgdm9p
ZCBDb2RlQmxvY2s6OnJlZlN0cnVjdHVyZXMoSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QKIHZvaWQg
Q29kZUJsb2NrOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCk7ICsraSkKLSAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZChtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLmpzVmFsdWUoKSk7
CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9jb25zdGFudFJlZ2lzdGVyc1tpXS5qc1ZhbHVl
U2xvdCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25FeHBycy5zaXpl
KCk7ICsraSkKICAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLT5tYXJrQWdncmVnYXRlKG1hcmtT
dGFjayk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgp
OyArK2kpCiAgICAgICAgIG1fZnVuY3Rpb25EZWNsc1tpXS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3Rh
Y2spOwotICAgIG1hcmtTdGFjay5hcHBlbmQobV9nbG9iYWxPYmplY3QpOworICAgIG1hcmtTdGFj
ay5hcHBlbmQobV9nbG9iYWxPYmplY3Quc2xvdCgpKTsKIH0KIAogSGFuZGxlckluZm8qIENvZGVC
bG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDFjZDA4NjM2
MDhlNGVmMDI0NjY5YThmYzZiNjAxNzAyZGY4ZjQxMDAuLmFkMmVmYTY2OGQwMDM2YmJmZmQ3ZTU1
MzdlMDRiMDdkY2U1MmQxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIENvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IENvZGVUeXBlLCBKU0dsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+LCB1
bnNpZ25lZCBzb3VyY2VPZmZzZXQsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgYm9vbCBpc0Nv
bnN0cnVjdG9yKTsKIAotICAgICAgICBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7Cisg
ICAgICAgIERlcHJlY2F0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogCiAg
ICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Db2RlQmxvY2soKTsKQEAgLTQ4NSw3ICs0ODUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgYWRkUmVnRXhwKFJlZ0V4cCog
cikgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHVuc2lnbmVkIHNpemUgPSBtX3JhcmVE
YXRhLT5tX3JlZ2V4cHMuc2l6ZSgpOyBtX3JhcmVEYXRhLT5tX3JlZ2V4cHMuYXBwZW5kKHIpOyBy
ZXR1cm4gc2l6ZTsgfQogICAgICAgICBSZWdFeHAqIHJlZ2V4cChpbnQgaW5kZXgpIGNvbnN0IHsg
QVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9yZWdleHBzW2luZGV4XS5n
ZXQoKTsgfQogCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVy
biBtX2dsb2JhbE9iamVjdDsgfQorICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KIAogICAgICAgICAvLyBKdW1wIFRh
YmxlcwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDc4YzM3M2E2YWU1NWE2ZDQ4ZjIyNTBhNDY4ZDBl
MDY2ODMwMzE2MGQuLjA5NjQzNDQ4MDNhMTBkZGQyMWYyMmQ2MTVlYzRkZGRiYjhiODE0MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgY29uc3QgU2NvcGVDaGFp
biYKICAgICBmb3IgKFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdCA9IHN5bWJvbFRhYmxlLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHJlZ2lzdGVyRm9yKGl0LT5zZWNvbmQuZ2V0
SW5kZXgoKSkuc2V0SW5kZXgoaXQtPnNlY29uZC5nZXRJbmRleCgpICsgbV9nbG9iYWxWYXJTdG9y
YWdlT2Zmc2V0KTsKICAgICAgICAgCi0gICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIgb3B0
aW1pemVyKGdsb2JhbE9iamVjdCk7CisgICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIgb3B0
aW1pemVyKCptX2dsb2JhbERhdGEsIGdsb2JhbE9iamVjdCk7CiAKICAgICBjb25zdCBWYXJTdGFj
ayYgdmFyU3RhY2sgPSBwcm9ncmFtTm9kZS0+dmFyU3RhY2soKTsKICAgICBjb25zdCBGdW5jdGlv
blN0YWNrJiBmdW5jdGlvblN0YWNrID0gcHJvZ3JhbU5vZGUtPmZ1bmN0aW9uU3RhY2soKTsKQEAg
LTkwMyw3ICs5MDMsNyBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLAogCiAgICAgZW1pdE9wY29k
ZShvcF9qbmVxX3B0cik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbmQtPmluZGV4KCkp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdCgp
LT5kKCktPmNhbGxGdW5jdGlvbik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fc2NvcGVD
aGFpbi0+Z2xvYmFsT2JqZWN0KCktPmQoKS0+Y2FsbEZ1bmN0aW9uLmdldCgpKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpKTsKICAgICByZXR1cm4gdGFyZ2V0OwogfQpAQCAtOTE0LDcgKzkxNCw3IEBAIFBhc3NSZWZQ
dHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShS
ZWdpc3RlcklEKiBjb25kCiAKICAgICBlbWl0T3Bjb2RlKG9wX2puZXFfcHRyKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoY29uZC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KCktPmQoKS0+YXBwbHlGdW5jdGlvbik7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KCktPmQo
KS0+YXBwbHlGdW5jdGlvbi5nZXQoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdl
dC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgcmV0dXJuIHRhcmdl
dDsKIH0KQEAgLTExMTcsNyArMTExNyw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmZpbmRT
Y29wZWRQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgaW50JiBpbmRlCiAKICAg
ICAgICAgaWYgKHNob3VsZE9wdGltaXplTG9jYWxzKCkgJiYgbV9jb2RlVHlwZSA9PSBHbG9iYWxD
b2RlKSB7CiAgICAgICAgICAgICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IG1fc2NvcGVDaGFp
bi0+YmVnaW4oKTsKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9ICppdGVyOworICAgICAgICAg
ICAgZ2xvYmFsT2JqZWN0ID0gaXRlci0+Z2V0KCk7CiAgICAgICAgICAgICBBU1NFUlQoKCsraXRl
cikgPT0gbV9zY29wZUNoYWluLT5lbmQoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZmluZFNj
b3BlZFByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBpbnQmIGluZGUKICAgICBT
Y29wZUNoYWluSXRlcmF0b3IgaXRlciA9IG1fc2NvcGVDaGFpbi0+YmVnaW4oKTsKICAgICBTY29w
ZUNoYWluSXRlcmF0b3IgZW5kID0gbV9zY29wZUNoYWluLT5lbmQoKTsKICAgICBmb3IgKDsgaXRl
ciAhPSBlbmQ7ICsraXRlciwgKytkZXB0aCkgewotICAgICAgICBKU09iamVjdCogY3VycmVudFNj
b3BlID0gKml0ZXI7CisgICAgICAgIEpTT2JqZWN0KiBjdXJyZW50U2NvcGUgPSBpdGVyLT5nZXQo
KTsKICAgICAgICAgaWYgKCFjdXJyZW50U2NvcGUtPmlzVmFyaWFibGVPYmplY3QoKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0KiBjdXJyZW50VmFyaWFibGVP
YmplY3QgPSBzdGF0aWNfY2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oY3VycmVudFNjb3BlKTsKQEAg
LTExNTcsNyArMTE1Nyw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmZpbmRTY29wZWRQcm9w
ZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgaW50JiBpbmRlCiAgICAgLy8gQ2FuJ3Qg
bG9jYXRlIHRoZSBwcm9wZXJ0eSBidXQgd2UncmUgYWJsZSB0byBhdm9pZCBhIGZldyBsb29rdXBz
LgogICAgIHN0YWNrRGVwdGggPSBkZXB0aCArIG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCk7CiAgICAgaW5kZXggPSBtaXNzaW5nU3ltYm9sTWFya2VyKCk7Ci0gICAgSlNPYmplY3Qq
IHNjb3BlID0gKml0ZXI7CisgICAgSlNPYmplY3QqIHNjb3BlID0gaXRlci0+Z2V0KCk7CiAgICAg
aWYgKCsraXRlciA9PSBlbmQpCiAgICAgICAgIGdsb2JhbE9iamVjdCA9IHNjb3BlOwogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCAwNDQ0ZDIzZDIwNGY4MzE4YTM5MjU1NWM1YzU3YzU2
OTA2YTNiOTE0Li40NDNiODFiYzkzNzhmYzFjODExODFhMmVhZGYwNmZhOWQ1MzFhZDlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0
aW9uLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EZWJ1Z2dl
ckFjdGl2YXRpb246OkRlYnVnZ2VyQWN0aXZhdGlvbihKU09iamVjdCogYWN0aXZhdGlvbikKK0Rl
YnVnZ2VyQWN0aXZhdGlvbjo6RGVidWdnZXJBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNPYmplY3QqIGFjdGl2YXRpb24pCiAgICAgOiBKU09iamVjdChEZWJ1Z2dlckFjdGl2
YXRpb246OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiB7CiAgICAgQVNTRVJUKGFjdGl2YXRp
b24pOwogICAgIEFTU0VSVChhY3RpdmF0aW9uLT5pc0FjdGl2YXRpb25PYmplY3QoKSk7Ci0gICAg
bV9hY3RpdmF0aW9uID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbik7Cisg
ICAgbV9hY3RpdmF0aW9uLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdGF0aWNfY2FzdDxKU0FjdGl2
YXRpb24qPihhY3RpdmF0aW9uKSk7CiB9CiAKIHZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjptYXJr
Q2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgRGVi
dWdnZXJBY3RpdmF0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAg
SlNPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogCiAgICAgaWYgKG1fYWN0aXZhdGlv
bikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX2FjdGl2YXRpb24pOworICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKG1fYWN0aXZhdGlvbi5zbG90KCkpOwogfQogCiBVU3RyaW5nIERlYnVnZ2Vy
QWN0aXZhdGlvbjo6Y2xhc3NOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAppbmRleCAzOTI3MDE3NDFiYTc2NGIz
ZjQ0MzkyZGE5OWM3MDA2ZGNjNWM0YzVkLi5iNjQwNjBkY2Y4NDdjOWE3N2U5OWMzMWY0MTMyZmU2
OTg2ZjU4MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRGVidWdnZXJBY3RpdmF0aW9uIDogcHVibGljIEpTT2JqZWN0IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIERlYnVnZ2VyQWN0aXZhdGlvbihKU09iamVjdCopOworICAgICAgICBEZWJ1
Z2dlckFjdGl2YXRpb24oSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogICAgICAgICB2aXJ0dWFsIFVTdHJp
bmcgY2xhc3NOYW1lKCkgY29uc3Q7CkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBKU09iamVjdDo6U3Ry
dWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU0FjdGl2YXRpb24qIG1fYWN0
aXZhdGlvbjsKKyAgICAgICAgV3JpdGVCYXJyaWVyPEpTQWN0aXZhdGlvbj4gbV9hY3RpdmF0aW9u
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMzkyZThiOGI1YjEzOTVkYzJi
ZTA1MjdiMjMwOTZlZGQ1Y2Q2MDhmOS4uZTVmYjM0OTg3ZDNiMzNjOWQ5MWMwZGUyZWMyYTAwZjg4
OWJkZmNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJw
cmV0ZXI6OnJlc29sdmUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydWN0aW9uKiB2UEMsIEoK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAg
SWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwogICAg
IGRvIHsKLSAgICAgICAgSlNPYmplY3QqIG8gPSAqaXRlcjsKKyAgICAgICAgSlNPYmplY3QqIG8g
PSBpdGVyLT5nZXQoKTsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qobyk7CiAgICAgICAgIGlm
IChvLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsKQEAg
LTE0Miw3ICsxNDIsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVzb2x2ZVNr
aXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydWN0aW9uKiB2UAogICAgIH0KICAgICBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CiAgICAgZG8g
ewotICAgICAgICBKU09iamVjdCogbyA9ICppdGVyOworICAgICAgICBKU09iamVjdCogbyA9IGl0
ZXItPmdldCgpOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvKTsKICAgICAgICAgaWYgKG8t
PmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAgICAgICAg
SlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwpAQCAtMjIw
LDcgKzIyMCw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFs
RHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgICAgICAgICArK2l0ZXI7
CiAgICAgfQogICAgIHdoaWxlIChza2lwLS0pIHsKLSAgICAgICAgSlNPYmplY3QqIG8gPSAqaXRl
cjsKKyAgICAgICAgSlNPYmplY3QqIG8gPSBpdGVyLT5nZXQoKTsKICAgICAgICAgaWYgKG8tPmhh
c0N1c3RvbVByb3BlcnRpZXMoKSkgewogICAgICAgICAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBj
b2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwogICAgICAgICAgICAgZG8gewpAQCAtMjM2
LDcgKzIzNiw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFs
RHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGlmIChpdGVyID09IGVuZCkKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgbyA9ICppdGVyOworICAgICAgICAgICAgICAgIG8gPSBpdGVy
LT5nZXQoKTsKICAgICAgICAgICAgICAgICArK2l0ZXI7CiAgICAgICAgICAgICB9IHdoaWxlICh0
cnVlKTsKICAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihjYWxsRnJhbWUsIGlkZW50KTsKQEAgLTMxMCw3ICszMTAsNyBAQCBORVZFUl9JTkxJ
TkUgYm9vbCBJbnRlcnByZXRlcjo6cmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eShDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSW5zdAogICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlm
aWVyKHByb3BlcnR5KTsKICAgICBKU09iamVjdCogYmFzZTsKICAgICBkbyB7Ci0gICAgICAgIGJh
c2UgPSAqaXRlcjsKKyAgICAgICAgYmFzZSA9IGl0ZXItPmdldCgpOwogICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlKTsKICAgICAgICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChjYWxs
RnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90
LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwpAQCAtNTY2LDExICs1NjYsMTEgQEAgTkVWRVJf
SU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZShDYWxsRnJhbWUqJiBjYWxs
RnJhbWUsIEpTVmFsdWUgZXgKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoIXNjb3BlQ2hhaW4t
Pm9iamVjdC0+aW5oZXJpdHMoJkpTQWN0aXZhdGlvbjo6aW5mbykpCiAgICAgICAgICAgICBzY29w
ZUNoYWluID0gc2NvcGVDaGFpbi0+cG9wKCk7Ci0gICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZh
dGlvbiA9IGFzQWN0aXZhdGlvbihzY29wZUNoYWluLT5vYmplY3QpOworICAgICAgICBKU0FjdGl2
YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oc2NvcGVDaGFpbi0+b2JqZWN0LmdldCgp
KTsKICAgICAgICAgYWN0aXZhdGlvbi0+Y29weVJlZ2lzdGVycygpOwogICAgICAgICBpZiAoSlNW
YWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKG9sZENvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFsdWUoKSkg
ewogICAgICAgICAgICAgaWYgKCFvbGRDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAgICAg
ICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPnNldEFjdGl2YXRpb24oYWN0aXZhdGlv
bik7CisgICAgICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJndW1lbnRzKS0+c2V0QWN0aXZhdGlv
bihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKG9sZENvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpICYmICFvbGRDb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlmIChKU1ZhbHVlIGFyZ3VtZW50cyA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIob2xkQ29kZUJsb2Nr
LT5hcmd1bWVudHNSZWdpc3RlcigpKSkuanNWYWx1ZSgpKQpAQCAtNjQ4LDcgKzY0OCw3IEBAIHN0
YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVycm9y
SW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICAgICAgbWVzc2FnZSA9IG1ha2VVU3RyaW5nKG1lc3Nh
Z2UsICIgKG5lYXIgJy4uLiIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKHN0YXJ0LCBz
dG9wKSwgIi4uLicpIik7CiAgICAgfQogCi0gICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoZ2xvYmFs
RGF0YS0+cHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbWVzc2Fn
ZSkpOworICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5w
cm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBtZXNzYWdlKSk7CiB9
CiAKIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9u
KENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
T2JqZWMKICAgICBmb3IgKFNjb3BlQ2hhaW5Ob2RlKiBub2RlID0gc2NvcGVDaGFpbjsgOyBub2Rl
ID0gbm9kZS0+bmV4dCkgewogICAgICAgICBBU1NFUlQobm9kZSk7CiAgICAgICAgIGlmIChub2Rl
LT5vYmplY3QtPmlzVmFyaWFibGVPYmplY3QoKSkgewotICAgICAgICAgICAgdmFyaWFibGVPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4obm9kZS0+b2JqZWN0KTsKKyAgICAg
ICAgICAgIHZhcmlhYmxlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KG5v
ZGUtPm9iamVjdC5nZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0K
QEAgLTExMDAsNyArMTEwMCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4
ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjCiAgICAgICAgICAg
ICBwdXNoZWRTY29wZSA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gU2NvcGUgZm9yIEJh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyCi0gICAgICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1p
emVyIG9wdGltaXplcih2YXJpYWJsZU9iamVjdCk7CisgICAgICAgIEJhdGNoZWRUcmFuc2l0aW9u
T3B0aW1pemVyIG9wdGltaXplcihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgdmFyaWFibGVPYmpl
Y3QpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsr
aSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPnZh
cmlhYmxlKGkpOwpAQCAtMTM3MSw3ICsxMzcxLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJw
cmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKgog
ICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBp
dCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQg
YXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBpZiAoYmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlz
RGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFy
eU9iamVjdCgpOworICAgICAgICAgICAgYmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmpl
Y3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgb2Zmc2V0ID0gYmFzZU9i
amVjdC0+c3RydWN0dXJlKCktPmdldChwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9CiAKQEAgLTI0
MDgsNyArMjQwOCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1
dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgICAgICBBU1NF
UlQoaXRlciAhPSBlbmQpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVCgoKml0ZXIpLT5pc1Zh
cmlhYmxlT2JqZWN0KCkpOwotICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0KiBzY29wZSA9IHN0YXRp
Y19jYXN0PEpTVmFyaWFibGVPYmplY3QqPigqaXRlcik7CisgICAgICAgIEpTVmFyaWFibGVPYmpl
Y3QqIHNjb3BlID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KGl0ZXItPmdldCgpKTsK
ICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBzY29wZS0+cmVnaXN0ZXJBdChp
bmRleCk7CiAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUtPnIoZHN0KS5qc1ZhbHVlKCkpOwogICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfc2NvcGVkX3Zhcik7CkBAIC0yNDM5LDcg
KzI0MzksNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25G
bGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICB9CiAKICAgICAgICAg
QVNTRVJUKCgqaXRlciktPmlzVmFyaWFibGVPYmplY3QoKSk7Ci0gICAgICAgIEpTVmFyaWFibGVP
YmplY3QqIHNjb3BlID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KCppdGVyKTsKKyAg
ICAgICAgSlNWYXJpYWJsZU9iamVjdCogc2NvcGUgPSBzdGF0aWNfY2FzdDxKU1ZhcmlhYmxlT2Jq
ZWN0Kj4oaXRlci0+Z2V0KCkpOwogICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5yKHZhbHVlKS5q
c1ZhbHVlKCkpOwogICAgICAgICBzY29wZS0+cmVnaXN0ZXJBdChpbmRleCkgPSBKU1ZhbHVlKGNh
bGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5H
VEgob3BfcHV0X3Njb3BlZF92YXIpOwpAQCAtMzA4MCw3ICszMDgwLDcgQEAgc2tpcF9pZF9jdXN0
b21fc2VsZjoKICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSB2UENbM10udS5vcGVyYW5kOwog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHZQQ1s3XS51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJhc2VPYmpl
Y3QtPmdldERpcmVjdExvY2F0aW9uKGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVy
YW5kKSkpID09IG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0
T2Zmc2V0KG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOworICAgICAgICAg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KSwgb2Zmc2V0LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAKICAgICAgICAgICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbik7CiAgICAg
ICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMzExNSw3ICszMTE1LDcgQEAgc2tp
cF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENb
NV0udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFTU0VSVChi
YXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlv
bihjb2RlQmxvY2stPmlkZW50aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOwot
ICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChvZmZzZXQsIGNhbGxG
cmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1l
LT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogCiAgICAgICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9M
RU5HVEgob3BfcHV0X2J5X2lkX3JlcGxhY2UpOwogICAgICAgICAgICAgICAgIE5FWFRfSU5TVFJV
Q1RJT04oKTsKQEAgLTMzMDksNyArMzMwOSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAg
ICAgICAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsKICAgICAgICAg
ICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAg
ICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKLSAgICAgICAgICAgICAgICAgICAg
anNBcnJheS0+c2V0SW5kZXgoaSwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOworICAg
ICAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleCgqZ2xvYmFsRGF0YSwgaSwgY2FsbEZy
YW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAganNBcnJheS0+SlNBcnJheTo6cHV0KGNhbGxGcmFtZSwgaSwgY2FsbEZyYW1l
LT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0ZUFy
cmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2Fu
QWNjZXNzSW5kZXgoaSkpIHsKQEAgLTQxMDMsNyArNDEwMyw3IEBAIHNraXBfaWRfY3VzdG9tX3Nl
bGY6CiAKICAgICAgICAgICAgIGlmIChKU1ZhbHVlIGFyZ3VtZW50c1ZhbHVlID0gY2FsbEZyYW1l
LT5yKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHMpKS5qc1ZhbHVlKCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlKS0+c2V0QWN0aXZhdGlvbihh
c0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGFzQXJn
dW1lbnRzKGFyZ3VtZW50c1ZhbHVlKS0+c2V0QWN0aXZhdGlvbigqZ2xvYmFsRGF0YSwgYXNBY3Rp
dmF0aW9uKGFjdGl2YXRpb25WYWx1ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
aWYgKEpTVmFsdWUgYXJndW1lbnRzVmFsdWUgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKGFyZ3VtZW50cykpLmpzVmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKCFj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUmVnaXN0ZXIuaAppbmRleCAzOTQ0NjQyNjgwNjM2OTQ1ODQ5MTBhZTI3Y2I2NmNiMDgx
ZDRkYWZjLi44NTk3ZWZiNTYwYzgxNmU0NjU2NGMyOTk0NDc0Yjg5MzdhNzA3NDM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaApAQCAtNTQsNiArNTQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXIoY29uc3QgSlNWYWx1ZSYpOwog
ICAgICAgICBSZWdpc3RlciYgb3BlcmF0b3I9KGNvbnN0IEpTVmFsdWUmKTsKICAgICAgICAgSlNW
YWx1ZSBqc1ZhbHVlKCkgY29uc3Q7CisgICAgICAgIEpTVmFsdWUqIGpzVmFsdWVTbG90KCk7CiAg
ICAgICAgIAogICAgICAgICBSZWdpc3RlciYgb3BlcmF0b3I9KEpTQWN0aXZhdGlvbiopOwogICAg
ICAgICBSZWdpc3RlciYgb3BlcmF0b3I9KENhbGxGcmFtZSopOwpAQCAtMTI4LDYgKzEyOSwxNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUo
dS52YWx1ZSk7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogUmVnaXN0
ZXI6OmpzVmFsdWVTbG90KCkKKyAgICB7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIEpT
VmFsdWUqIGpzVmFsdWVTbG90OworICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUqIGVuY29kZWRW
YWx1ZVNsb3Q7CisgICAgICAgIH0gY2FzdGVyOworICAgICAgICBjYXN0ZXIuZW5jb2RlZFZhbHVl
U2xvdCA9ICZ1LnZhbHVlOworICAgICAgICByZXR1cm4gY2FzdGVyLmpzVmFsdWVTbG90OworICAg
IH0KIAogICAgIC8vIEludGVycHJldGVyIGZ1bmN0aW9ucwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCmluZGV4IGY1MjFhYTUzNDdlZjRiNDFkNjMyYjk4ZDk0YjBhMDI5OTk3
OTdhMDguLmQ1M2Y0MWI0YTk0ZTQ0MmQ0Y2Q0MjlmY2VhMzYyMTIxZDRmYWNhNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC04NDUsNyArODQ1LDcgQEAgTkVWRVJf
SU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENvZGVCbG9jayogY28KICAgICAgICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJv
dG90eXBlIGluIGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQKICAgICAgICAgLy8gc2hv
dWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KICAgICAgICAgaWYgKHNsb3RCYXNl
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAgIHNsb3RC
YXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCgpOworICAgICAgICAgICAgc2xvdEJh
c2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
KTsKICAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0
KHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xNDY2LDcgKzE0NjYsNyBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX21ldGhv
ZF9jaGVjaykKICAgICAgICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGlu
IGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQKICAgICAgICAgLy8gc2hvdWxkIG5vdCBi
ZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KICAgICAgICAgaWYgKHNsb3RCYXNlT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgICAgICBzbG90QmFzZU9iamVjdC0+
ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoKTsKKyAgICAgICAgICAgIHNsb3RCYXNlT2JqZWN0LT5m
bGF0dGVuRGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSk7CiAKICAgICAg
ICAgLy8gVGhlIHJlc3VsdCBmZXRjaGVkIHNob3VsZCBhbHdheXMgYmUgdGhlIGNhbGxlZSEKICAg
ICAgICAgQVNTRVJUKHJlc3VsdCA9PSBKU1ZhbHVlKGNhbGxlZSkpOwpAQCAtMTY1Niw3ICsxNjU2
LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9w
cm90b19saXN0KQogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUg
aW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAvLyBzaG91bGQgbm90
IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBpZiAoc2xvdEJhc2VPYmplY3Qt
PnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgc2xvdEJhc2VPYmpl
Y3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KCk7CisgICAgICAgICAgICBzbG90QmFzZU9iamVj
dC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwogICAg
ICAgICAgICAgb2Zmc2V0ID0gc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQocHJvcGVy
dHlOYW1lKTsKICAgICAgICAgfQogCkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTih2b2lkLCBvcF90ZWFyX29mZl9hY3RpdmF0aW9uKQogICAgIGFjdGl2YXRpb24tPmNv
cHlSZWdpc3RlcnMoKTsKICAgICBpZiAoSlNWYWx1ZSB2ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpz
VmFsdWUoKSkgewogICAgICAgICBpZiAoIXN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+c2V0QWN0aXZh
dGlvbihhY3RpdmF0aW9uKTsKKyAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT5zZXRBY3RpdmF0
aW9uKCpzdGFja0ZyYW1lLmdsb2JhbERhdGEsIGFjdGl2YXRpb24pOwogICAgIH0KIH0KIApAQCAt
MjIwNCw3ICsyMjA0LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9w
X3Jlc29sdmUpCiAKICAgICBJZGVudGlmaWVyJiBpZGVudCA9IHN0YWNrRnJhbWUuYXJnc1swXS5p
ZGVudGlmaWVyKCk7CiAgICAgZG8gewotICAgICAgICBKU09iamVjdCogbyA9ICppdGVyOworICAg
ICAgICBKU09iamVjdCogbyA9IGl0ZXItPmdldCgpOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChvKTsKICAgICAgICAgaWYgKG8tPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlkZW50LCBz
bG90KSkgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxG
cmFtZSwgaWRlbnQpOwpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCwgb3BfcHV0X2J5X3ZhbCkKICAgICAgICAgaWYgKGlzSlNBcnJheShnbG9iYWxEYXRhLCBi
YXNlVmFsdWUpKSB7CiAgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNl
VmFsdWUpOwogICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQotICAgICAg
ICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBq
c0FycmF5LT5zZXRJbmRleCgqZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGpzQXJyYXktPkpTQXJyYXk6OnB1dChjYWxsRnJhbWUsIGksIHZh
bHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VW
YWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKQEAg
LTI2NDUsNyArMjY0NSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBv
cF9yZXNvbHZlX3NraXApCiAgICAgfQogICAgIElkZW50aWZpZXImIGlkZW50ID0gc3RhY2tGcmFt
ZS5hcmdzWzBdLmlkZW50aWZpZXIoKTsKICAgICBkbyB7Ci0gICAgICAgIEpTT2JqZWN0KiBvID0g
Kml0ZXI7CisgICAgICAgIEpTT2JqZWN0KiBvID0gaXRlci0+Z2V0KCk7CiAgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KG8pOwogICAgICAgICBpZiAoby0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFt
ZSwgaWRlbnQsIHNsb3QpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0
VmFsdWUoY2FsbEZyYW1lLCBpZGVudCk7CkBAIC0yOTc0LDcgKzI5NzQsNyBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZV93aXRoX2Jhc2UpCiAgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaWRlbnRpZmllcigpOwogICAgIEpT
T2JqZWN0KiBiYXNlOwogICAgIGRvIHsKLSAgICAgICAgYmFzZSA9ICppdGVyOworICAgICAgICBi
YXNlID0gaXRlci0+Z2V0KCk7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UpOwogICAg
ICAgICBpZiAoYmFzZS0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7
CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBp
ZGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGRkNGI2NzdhNDEzZTY5Y2QxZjM2NDI1Zjdh
ZDljZTA4YmJlMmU0NDMuLjkxMmI1MWE4MDgzZTZjMjZjNzlhN2YzMWFjMGM2YWI0NjYxMzViOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgR2xvYmFsT2JqZWN0OjpH
bG9iYWxPYmplY3QoY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpCiAgICAgSlNPYmpl
Y3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICBhcnJheS0+
cHV0KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0p
KTsKLSAgICBwdXREaXJlY3QoSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwg
YXJyYXkpOworICAgIHB1dERpcmVjdChnbG9iYWxFeGVjKCktPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggMzk4ODZhODY5NTgw
ZWQyN2E3ZDM2NGE4MWQ1ZTMzN2UwNDE0OTBkZi4uMjJiNTZmZTdmZGI2NGY3MGE1M2MzZTUzMzE2
NjRkYmU0NTU1MjE0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuY3BwCkBAIC01NSwxMCArNTUsMTAgQEAgdm9pZCBBcmd1bWVudHM6Om1hcmtDaGlsZHJlbihN
YXJrU3RhY2smIG1hcmtTdGFjaykKICAgICAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhyZWlu
dGVycHJldF9jYXN0PEpTVmFsdWUqPihkLT5leHRyYUFyZ3VtZW50cyksIG51bUV4dHJhQXJndW1l
bnRzKTsKICAgICB9CiAKLSAgICBtYXJrU3RhY2suYXBwZW5kKGQtPmNhbGxlZSk7CisgICAgbWFy
a1N0YWNrLmFwcGVuZChkLT5jYWxsZWUuc2xvdCgpKTsKIAogICAgIGlmIChkLT5hY3RpdmF0aW9u
KQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKGQtPmFjdGl2YXRpb24pOworICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKGQtPmFjdGl2YXRpb24uc2xvdCgpKTsKIH0KIAogdm9pZCBBcmd1bWVudHM6
OmNvcHlUb1JlZ2lzdGVycyhFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyKiBidWZmZXIsIHVpbnQz
Ml90IG1heFNpemUpCkBAIC0xOTcsNyArMTk3LDcgQEAgYm9vbCBBcmd1bWVudHM6OmdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmEK
IAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSAm
JiBMSUtFTFkoIWQtPm92ZXJyb2RlQ2FsbGVlKSkgewogICAgICAgICBpZiAoIWQtPmlzU3RyaWN0
TW9kZSkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShkLT5jYWxsZWUpOworICAgICAgICAg
ICAgc2xvdC5zZXRWYWx1ZShkLT5jYWxsZWUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICAgICAgY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5
KGV4ZWMpOwpAQCAtMjI4LDcgKzIyOCw3IEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wCiAgICAg
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlICYm
IExJS0VMWSghZC0+b3ZlcnJvZGVDYWxsZWUpKSB7CiAgICAgICAgIGlmICghZC0+aXNTdHJpY3RN
b2RlKSB7Ci0gICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoZC0+Y2FsbGVlLCBE
b250RW51bSk7CisgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoZC0+Y2FsbGVl
LmdldCgpLCBEb250RW51bSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgICAgICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoZXhlYyk7CkBAIC0yODAs
MTQgKzI4MCwxNCBAQCB2b2lkIEFyZ3VtZW50czo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbAogCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoICYmICFkLT5vdmVycm9kZUxlbmd0
aCkgewogICAgICAgICBkLT5vdmVycm9kZUxlbmd0aCA9IHRydWU7Ci0gICAgICAgIHB1dERpcmVj
dChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBEb250RW51bSk7CisgICAgICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIERvbnRFbnVtKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNhbGxlZSAmJiAhZC0+b3ZlcnJvZGVDYWxsZWUpIHsKICAgICAgICAgaWYgKCFkLT5p
c1N0cmljdE1vZGUpIHsKICAgICAgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHB1dERpcmVjdChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBEb250RW51bSk7CisgICAg
ICAgICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBEb250RW51bSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgY3Jl
YXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAppbmRleCBmZTkwMGEyNzg5YTY5NTdiZmEzZmUzZGVkMGZm
OGNmZDRmNjA1YTkzLi5hM2Q3ZmU0NTc5NGMzMmM5MmIxNzg0ZDExOThhMTA0M2Q4M2ZmOThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJndW1l
bnRzRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAg
QXJndW1lbnRzRGF0YSgpIHsgfQotICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb247Cisg
ICAgICAgIFdyaXRlQmFycmllcjxKU0FjdGl2YXRpb24+IGFjdGl2YXRpb247CiAKICAgICAgICAg
dW5zaWduZWQgbnVtUGFyYW1ldGVyczsKICAgICAgICAgcHRyZGlmZl90IGZpcnN0UGFyYW1ldGVy
SW5kZXg7CkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25BcnJh
eVB0cjxib29sPiBkZWxldGVkQXJndW1lbnRzOwogICAgICAgICBSZWdpc3RlciBleHRyYUFyZ3Vt
ZW50c0ZpeGVkQnVmZmVyWzRdOwogCi0gICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZTsKKyAgICAg
ICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKICAgICAgICAgYm9vbCBvdmVycm9k
ZUxlbmd0aCA6IDE7CiAgICAgICAgIGJvb2wgb3ZlcnJvZGVDYWxsZWUgOiAxOwogICAgICAgICBi
b29sIG92ZXJyb2RlQ2FsbGVyIDogMTsKQEAgLTg2LDkgKzg2LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgY29weVRvUmVnaXN0ZXJzKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIq
IGJ1ZmZlciwgdWludDMyX3QgbWF4U2l6ZSk7CiAgICAgICAgIHZvaWQgY29weVJlZ2lzdGVycygp
OwogICAgICAgICBib29sIGlzVG9ybk9mZigpIGNvbnN0IHsgcmV0dXJuIGQtPnJlZ2lzdGVyQXJy
YXk7IH0KLSAgICAgICAgdm9pZCBzZXRBY3RpdmF0aW9uKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlv
bikKKyAgICAgICAgdm9pZCBzZXRBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBkLT5hY3Rp
dmF0aW9uID0gYWN0aXZhdGlvbjsKKyAgICAgICAgICAgIGQtPmFjdGl2YXRpb24uc2V0KGdsb2Jh
bERhdGEsIHRoaXMsIGFjdGl2YXRpb24pOwogICAgICAgICAgICAgZC0+cmVnaXN0ZXJzID0gJmFj
dGl2YXRpb24tPnJlZ2lzdGVyQXQoMCk7CiAgICAgICAgIH0KIApAQCAtMTU4LDcgKzE1OCw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBkLT5maXJzdFBhcmFtZXRlckluZGV4ID0gZmlyc3RQ
YXJhbWV0ZXJJbmRleDsKICAgICAgICAgZC0+bnVtQXJndW1lbnRzID0gbnVtQXJndW1lbnRzOwog
Ci0gICAgICAgIGQtPmFjdGl2YXRpb24gPSAwOwogICAgICAgICBkLT5yZWdpc3RlcnMgPSBjYWxs
RnJhbWUtPnJlZ2lzdGVycygpOwogCiAgICAgICAgIFJlZ2lzdGVyKiBleHRyYUFyZ3VtZW50czsK
QEAgLTE3Niw3ICsxNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBkLT5leHRyYUFy
Z3VtZW50cyA9IGV4dHJhQXJndW1lbnRzOwogCi0gICAgICAgIGQtPmNhbGxlZSA9IGNhbGxlZTsK
KyAgICAgICAgZC0+Y2FsbGVlLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgdGhpcywgY2Fs
bGVlKTsKICAgICAgICAgZC0+b3ZlcnJvZGVMZW5ndGggPSBmYWxzZTsKICAgICAgICAgZC0+b3Zl
cnJvZGVDYWxsZWUgPSBmYWxzZTsKICAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZXIgPSBmYWxzZTsK
QEAgLTE5NSw3ICsxOTQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBkLT5udW1QYXJh
bWV0ZXJzID0gMDsKICAgICAgICAgZC0+bnVtQXJndW1lbnRzID0gbnVtQXJndW1lbnRzOwotICAg
ICAgICBkLT5hY3RpdmF0aW9uID0gMDsKIAogICAgICAgICBSZWdpc3RlciogZXh0cmFBcmd1bWVu
dHM7CiAgICAgICAgIGlmIChudW1Bcmd1bWVudHMgPiBzaXplb2YoZC0+ZXh0cmFBcmd1bWVudHNG
aXhlZEJ1ZmZlcikgLyBzaXplb2YoUmVnaXN0ZXIpKQpAQCAtMjA5LDcgKzIwNyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIGQtPmV4dHJhQXJndW1lbnRzID0gZXh0cmFBcmd1bWVudHM7
CiAKLSAgICAgICAgZC0+Y2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsK
KyAgICAgICAgZC0+Y2FsbGVlLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgdGhpcywgYXNG
dW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKSk7CiAgICAgICAgIGQtPm92ZXJyb2RlTGVuZ3Ro
ID0gZmFsc2U7CiAgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gZmFsc2U7CiAgICAgICAgIGQt
Pm92ZXJyb2RlQ2FsbGVyID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmluZGV4IDYzMmQ0NjZlMjI5ZjQyYmQxYjM5YjJm
YjA5NmQ0ZDc1MWNjYzFkOGYuLjVkMGFkYmRhNjBhY2Q3ODYyMDVkYjY5ZmNhNWU2YWE4YmMxZTA2
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCkBAIC00MiwxMCArNDIsMTAgQEAgQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAg
ICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgYXJyYXlQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5j
bGFzc05hbWUpKQogewogICAgIC8vIEVDTUEgMTUuNC4zLjEgQXJyYXkucHJvdG90eXBlCi0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgYXJyYXlQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGFycmF5UHJvdG90eXBlLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSk7CiAKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1
Y3RvcgotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51
bSB8IERvbnREZWxldGUpOwogCiAgICAgLy8gRVM1CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVj
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuaXNBcnJheSwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXkpLCBEb250RW51bSk7
CkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEFycmF5
V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpCiAgICAgfQogCiAgICAg
Ly8gb3RoZXJ3aXNlIHRoZSBhcnJheSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBhcmd1bWVudHMg
aW4gaXQKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwgYXJncyk7CisgICAgcmV0dXJuIG5ldyAoZXhlYykg
SlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
YXJyYXlTdHJ1Y3R1cmUoKSwgYXJncyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApp
bmRleCA3NjE1ZmZjYTQ1ZTZmOWRmYjJhNzExOGFiMzgwYWQ2ODhmYWIyMDg5Li4yNzNkNDUwN2Ni
ZmY2MDEyMDdiNDdlYzExNWJkMTIyNzkzNGI5YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC01NDUsOSArNTQ1LDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICBKU0FycmF5KiByZXNPYmogPSBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpLCBkZWxldGVDb3VudCwgQ3Jl
YXRlQ29tcGFjdCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSByZXNPYmo7Ci0KKyAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBrID0gMDsgayA8IGRlbGV0ZUNvdW50OyBrKyspCi0gICAgICAgIHJlc09iai0+dW5jaGVja2Vk
U2V0SW5kZXgoaywgZ2V0UHJvcGVydHkoZXhlYywgdGhpc09iaiwgayArIGJlZ2luKSk7CisgICAg
ICAgIHJlc09iai0+dW5jaGVja2VkU2V0SW5kZXgoZ2xvYmFsRGF0YSwgaywgZ2V0UHJvcGVydHko
ZXhlYywgdGhpc09iaiwgayArIGJlZ2luKSk7CiAKICAgICByZXNPYmotPnNldExlbmd0aChkZWxl
dGVDb3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oCmluZGV4IGRiMmQxZDdjYzFiZGY3YmU2MzVk
MTk2MDEzM2MwOTM0M2U3MzMwYjkuLjBmNmE2NDY1NGQ4ZDNiMmMwZTMxYWQyMWFkYTdmMjgyNDM4
MGYzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaApAQCAtMzQsOCArMzQsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyKTsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyKEpTT2JqZWN0KiBvYmplY3Qp
Ci0gICAgICAgICAgICA6IG1fb2JqZWN0KG9iamVjdCkKKyAgICAgICAgQmF0Y2hlZFRyYW5zaXRp
b25PcHRpbWl6ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogb2JqZWN0KQor
ICAgICAgICAgICAgOiBtX2dsb2JhbERhdGEoJmdsb2JhbERhdGEpCisgICAgICAgICAgICAsIG1f
b2JqZWN0KG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX29iamVjdC0+c3Ry
dWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5zZXRT
dHJ1Y3R1cmUoU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKG1fb2Jq
ZWN0LT5zdHJ1Y3R1cmUoKSkpOwpAQCAtNDMsMTAgKzQ0LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIH5CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcigpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG1fb2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCgpOworICAgICAgICAgICAg
bV9vYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KCptX2dsb2JhbERhdGEpOwogICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsK
ICAgICAgICAgSlNPYmplY3QqIG1fb2JqZWN0OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCmluZGV4IDAxNjdl
MDM3ZTczOTE5NTZlYWIyNzhhMzcxZTNjYWI2YzJlNTBhMDAuLmMzNmJlODJiMmE4OGI4NTJiZDYz
OTI2YTljNjU2NTEyYTdjM2ZiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcApAQCAtMzEsMTcgKzMxLDE3IEBAIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoQm9vbGVhbkNvbnN0cnVjdG9yKTsKIEJvb2xlYW5Db25zdHJ1
Y3Rvcjo6Qm9vbGVhbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEJv
b2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
KCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVy
KGV4ZWMsIGJvb2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewotICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUsIGJvb2xlYW5Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGJvb2xlYW5Qcm90b3R5cGUsIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNv
bnN0cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSk7CiB9CiAKIC8vIEVDTUEgMTUuNi4yCiBKU09iamVjdCogY29u
c3RydWN0Qm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAg
ICAgQm9vbGVhbk9iamVjdCogb2JqID0gbmV3IChleGVjKSBCb29sZWFuT2JqZWN0KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSgpKTsKLSAgICBvYmot
PnNldEludGVybmFsVmFsdWUoanNCb29sZWFuKGFyZ3MuYXQoMCkudG9Cb29sZWFuKGV4ZWMpKSk7
CisgICAgb2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNCb29sZWFu
KGFyZ3MuYXQoMCkudG9Cb29sZWFuKGV4ZWMpKSk7CiAgICAgcmV0dXJuIG9iajsKIH0KIApAQCAt
NzIsNyArNzIsNyBAQCBDYWxsVHlwZSBCb29sZWFuQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKENh
bGxEYXRhJiBjYWxsRGF0YSkKIEpTT2JqZWN0KiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0
ZUJvb2xlYW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGltbWVkaWF0ZUJvb2xlYW5WYWx1ZSkK
IHsKICAgICBCb29sZWFuT2JqZWN0KiBvYmogPSBuZXcgKGV4ZWMpIEJvb2xlYW5PYmplY3QoZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5ib29sZWFuT2JqZWN0U3RydWN0dXJlKCkpOwotICAg
IG9iai0+c2V0SW50ZXJuYWxWYWx1ZShpbW1lZGlhdGVCb29sZWFuVmFsdWUpOworICAgIG9iai0+
c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGltbWVkaWF0ZUJvb2xlYW5WYWx1
ZSk7CiAgICAgcmV0dXJuIG9iajsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRleCA3ZmZkMDk1ODhhMzMxOTQ2Nzk5MzQ2
NWE3ZDY4ZDBhNjRiZmQ1NzgyLi43MzE0NTZlZTFiODI0MDU2ZWVjODM4ZWJiNmY1ZGQxNDFkZDQ2
YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKIEJvb2xlYW5Qcm90
b3R5cGU6OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSkKICAgICA6IEJvb2xlYW5PYmplY3Qo
c3RydWN0dXJlKQogewotICAgIHNldEludGVybmFsVmFsdWUoanNCb29sZWFuKGZhbHNlKSk7Cisg
ICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzQm9vbGVhbihmYWxzZSkp
OwogCiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGJvb2xl
YW5Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4
ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZiksIERvbnRFbnVt
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNlcnZhdGl2
ZVNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmgK
aW5kZXggMjc2YmU4OWEyNWM0ZmFkODdlMzFhYzFiYzBmNTYwNzIxYzY1YjljZi4uZmVhZTE2OGU2
OGI5YzhjOTU4ZjcyZGFjMzM0Y2I5NjEzZWM0Nzc3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmgKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5l
IENvbnNlcnZhdGl2ZVNldDo6fkNvbnNlcnZhdGl2ZVNldCgpCiBpbmxpbmUgdm9pZCBDb25zZXJ2
YXRpdmVTZXQ6Om1hcmsoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX3NldFtp
XSk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fc2V0W2ldKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcAppbmRleCBkY2JlMTJkYTIzNjE3Njc0YTc3MjhjMTc3OTI4M2FjYTc0M2RmYTY0
Li5mMWYzOTU2YTgzZDU2Y2EzZjlmMGVkZTM5MzMzMjU3ZjM4ZDcwZTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTYxLDEz
ICs2MSwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlVVRDKEV4
ZWNTdGF0ZSopOwogRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwg
RGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4
ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhl
YywgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7Ci0gICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBk
YXRlUHJvdG90eXBlLCBEb250RW51bXxEb250RGVsZXRlfFJlYWRPbmx5KTsKKyAgICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgZGF0ZVByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOwogCiAgICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wYXJz
ZSwgZGF0ZVBhcnNlKSwgRG9udEVudW0pOwogICAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCA3LCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuVVRDLCBkYXRlVVRDKSwgRG9udEVudW0pOwogICAgICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBl
cihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubm93LCBkYXRlTm93KSwgRG9udEVudW0pOwogCi0gICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoLCBqc051bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxl
dGUpOwogfQogCiAvLyBFQ01BIDE1LjkuMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVJbnN0YW5jZS5jcHAKaW5kZXggODU2MmUyZDQ2Mzc2NmI2OWVkNGRhODI2NDEwNjZm
NzJjNDk3YzcyNy4uODAzOGFmNTM4N2I5N2I5ZTgyODYxOTI1OWMyODg4NGVjZTA3ZGMzMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCkBAIC0z
NCwyMiArMzQsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBEYXRlSW5z
dGFuY2U6OmluZm8gPSB7IkRhdGUiLCAwLCAwLCAwfTsKIAotRGF0ZUluc3RhbmNlOjpEYXRlSW5z
dGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUp
CitEYXRlSW5zdGFuY2U6OkRhdGVJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVj
dHVyZSkKIHsKLSAgICBzZXRJbnRlcm5hbFZhbHVlKGpzTmFOKCkpOworICAgIHNldEludGVybmFs
VmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc05hTigpKTsKIH0KIAotRGF0ZUluc3RhbmNlOjpE
YXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIGRvdWJsZSB0aW1lKQorRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRl
KiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgZG91YmxlIHRp
bWUpCiAgICAgOiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAgIHNldEludGVybmFs
VmFsdWUoanNOdW1iZXIodGltZUNsaXAodGltZSkpKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVlKGV4
ZWMtPmdsb2JhbERhdGEoKSwganNOdW1iZXIodGltZUNsaXAodGltZSkpKTsKIH0KIAogRGF0ZUlu
c3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgdGltZSkKICAgICA6
IEpTV3JhcHBlck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmRhdGVTdHJ1Y3R1
cmUoKSkKIHsKLSAgICBzZXRJbnRlcm5hbFZhbHVlKGpzTnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7
CisgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVtYmVyKHRpbWVD
bGlwKHRpbWUpKSk7CiB9CiAKIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBEYXRlSW5zdGFuY2U6
OmNhbGN1bGF0ZUdyZWdvcmlhbkRhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggMDg1
Y2IzM2MxNTQ2ODVkNTFlZDI2NjM1N2JhY2UzMWFiNTJlMjViZi4uOTRiNjlhODVkNGIyY2UyNGI5
YmE5ZjgxNzEzMzNlZTk1OGExOGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTg0NSw3ICs4NDUsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgIGRvdWJsZSBtaWxsaSA9IHRpbWVDbGlwKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4
ZWMpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKG1pbGxpKTsKLSAgICB0aGlzRGF0
ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQpOworICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRl
cm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAgLTg2MCw3ICs4NjAsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVt
QXJnc1RvVXNlLAogICAgIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpIHx8IGlzbmFu
KG1pbGxpKSkgewogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTmFOKCk7Ci0gICAgICAgIHRo
aXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7CisgICAgICAgIHRoaXNEYXRlT2Jq
LT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KICAgICAgCkBAIC04NzcsMTIg
Kzg3NywxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3Mo
RXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAgIGdyZWdvcmlhbkRhdGVUaW1l
LmNvcHlGcm9tKCpvdGhlcik7CiAgICAgaWYgKCFmaWxsU3RydWN0dXJlc1VzaW5nVGltZUFyZ3Mo
ZXhlYywgbnVtQXJnc1RvVXNlLCAmbXMsICZncmVnb3JpYW5EYXRlVGltZSkpIHsKICAgICAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc05hTigpOwotICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJu
YWxWYWx1ZShyZXN1bHQpOworICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShl
eGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKICAgICB9IAogICAgIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lLCBtcywgaW5wdXRJ
c1VUQykpOwotICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7CisgICAg
dGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtODk1LDcgKzg5
NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhFeGVj
U3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0
ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dENvdW50KCkpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc05hTigpOwotICAgICAgICB0
aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQpOworICAgICAgICB0aGlzRGF0ZU9i
ai0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9ICAgICAgCiAgICAgCkBAIC05
MTcsMTIgKzkxNywxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tRGF0
ZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAgIAogICAgIGlmICgh
ZmlsbFN0cnVjdHVyZXNVc2luZ0RhdGVBcmdzKGV4ZWMsIG51bUFyZ3NUb1VzZSwgJm1zLCAmZ3Jl
Z29yaWFuRGF0ZVRpbWUpKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOYU4oKTsKLSAg
ICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKKyAgICAgICAgdGhp
c0RhdGVPYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfSAKICAgICAgICAg
ICAgCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihncmVnb3JpYW5EYXRlVGltZVRvTVMo
ZXhlYywgZ3JlZ29yaWFuRGF0ZVRpbWUsIG1zLCBpbnB1dElzVVRDKSk7Ci0gICAgdGhpc0RhdGVP
YmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKKyAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJu
YWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQogCkBAIC0xMDE5LDcgKzEwMTksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsg
ICAgIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7IAogICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTmFOKCk7Ci0gICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVl
KHJlc3VsdCk7CisgICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmds
b2JhbERhdGEoKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogICAgIH0KICAgICAKQEAgLTEwNDEsMTMgKzEwNDEsMTMgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ZG91YmxlIHllYXIgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVj
KTsKICAgICBpZiAoIWlzZmluaXRlKHllYXIpKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOYU4oKTsKLSAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsK
KyAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCByZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAg
fQogICAgICAgICAgICAgCiAgICAgZ3JlZ29yaWFuRGF0ZVRpbWUueWVhciA9IHRvSW50MzIoKHll
YXIgPiA5OSB8fCB5ZWFyIDwgMCkgPyB5ZWFyIC0gMTkwMCA6IHllYXIpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRh
dGVUaW1lLCBtcywgZmFsc2UpKTsKLSAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShy
ZXN1bHQpOworICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggNDMyNmE0ZGYyMzM4YmNjZTk0YTA1MTZkNGI1NGM4M2YwZjEzNGJkMy4uMmU1M2I5
NTQwMGU3MmNhZWExMzgwZWNlODFiNWQ1NWZhZDgyOTVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTMzLDggKzMzLDgg
QEAgRXJyb3JDb25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywg
ZXJyb3JQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewogICAgIC8vIEVDTUEg
MTUuMTEuMy4xIEVycm9yLnByb3RvdHlwZQotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGVycm9yUHJvdG90eXBlLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGVycm9y
UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOwogfQogCiAvLyBFQ01BIDE1LjkuMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCAwZjMxNTNjNTA2ZDk4YTllMDhiMGJhMGFiZTM0
ZGIxNjk2OThhYjZkLi5hNjIwOGQ1MjY4OWEzZmU5NzYxMGEzY2JjZTc2ZjBhMDY1YzFlMGExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApA
QCAtMjksMTQgKzI5LDE0IEBAIEVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1CiAgICAgOiBKU09iamVj
dChzdHJ1Y3R1cmUpCiAgICAgLCBtX2FwcGVuZFNvdXJjZVRvTWVzc2FnZShmYWxzZSkKIHsKLSAg
ICBwdXREaXJlY3QoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmco
Z2xvYmFsRGF0YSwgIiIpKTsKKyAgICBwdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsICIiKSk7CiB9CiAK
IEVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVz
c2FnZSkKICAgICA6IEpTT2JqZWN0KHN0cnVjdHVyZSkKICAgICAsIG1fYXBwZW5kU291cmNlVG9N
ZXNzYWdlKGZhbHNlKQogewotICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT5tZXNzYWdlLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBtZXNzYWdlKSk7CisgICAgcHV0RGlyZWN0
KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmlu
ZyhnbG9iYWxEYXRhLCBtZXNzYWdlKSk7CiB9CiAKIEVycm9ySW5zdGFuY2UqIEVycm9ySW5zdGFu
Y2U6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IGQ4ZmM4Mjlk
Nzk4N2E3ZDgwYWIxN2YyOTk5NGZkM2I4MGRmNTBmYWEuLmI0ZTBhN2NlNmNkMDVlMzg5MDAwN2Q1
NjVmOGM5NGFkNWZkNDMzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvclByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgRXJyb3JQcm90b3R5cGU6OkVy
cm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm8KIHsKICAgICAvLyBUaGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciBpbiBF
cnJvckNvbnN0cnVjdG9yJ3MgY29uc3RydWN0b3IKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhl
YywgIkVycm9yIiksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgIkVycm9yIiksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyksIERvbnRF
bnVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCA0NWI0ODAyM2Y4MGViZDZkYTcyMTQ1MmQ4ODhhYjI2
N2RmN2Q0ZmM0Li45MzNiMTFmOTljNGI2YjNkNGVlZTQyODI5NWVjZjZmZTJmZmExNWNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRnVu
Y3Rpb25Db25zdHJ1Y3Rvcik7CiBGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5j
dGlvblByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEo
KSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZnVuY3Rpb25Qcm90
b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGZ1bmN0aW9uUHJvdG90
eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBmdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpOwogCiAgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKLSAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
LCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERv
bnRFbnVtKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0V2l0aEZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGNk
NzczOWQxOWNmN2I4ODc2ZmNlNzEyYzAxNjIwODdmMDlkYmY1M2MuLmU2NTE1MzgxMTEwMzE4ZDNh
ZDc4NjU5OWFkNTY5YTZjYWM0NGY0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKEV4ZWNT
dGF0ZSopOwogRnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVs
bElkZW50aWZpZXIpCiB7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6
OmFkZEZ1bmN0aW9uUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIE5hdGl2
ZUZ1bmN0aW9uV3JhcHBlcioqIGNhbGxGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKiog
YXBwbHlGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dldHRlclNldHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuY3BwCmluZGV4IDdlNTQwNTNmOTZjY2U3M2I1NTYwYTgyZTVlODEwZTFlNWQyODBmNmMu
LjVhZGQ3ZmQ4ZjM4Y2I2ODZiZDdiNzAwOWMzMmM1ZjcyYTYwOTAzMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtMzMsOSArMzMsOSBA
QCB2b2lkIEdldHRlclNldHRlcjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQog
ICAgIEpTQ2VsbDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAKICAgICBpZiAobV9nZXR0ZXIp
Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9nZXR0ZXIpOworICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKG1fZ2V0dGVyLnNsb3QoKSk7CiAgICAgaWYgKG1fc2V0dGVyKQotICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKG1fc2V0dGVyKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX3NldHRl
ci5zbG90KCkpOwogfQogCiBib29sIEdldHRlclNldHRlcjo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCBl
N2IxOTM4Y2U5NmJjMGI1MmYxNjRlOWQzYmEzNzI3NTlhODYzYWQ4Li5mZmFiOTRkZmIyNWZiZjg0
MDBhYjBlOWY4NmIxOGViZjI0M2Y4YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtMzgsMTcgKzM4LDE1IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHB1YmxpYzoKICAgICAgICAgR2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKS5nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUu
Z2V0KCkpCi0gICAgICAgICAgICAsIG1fZ2V0dGVyKDApCi0gICAgICAgICAgICAsIG1fc2V0dGVy
KDApCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hp
bGRyZW4oTWFya1N0YWNrJik7CiAKLSAgICAgICAgSlNPYmplY3QqIGdldHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZ2V0dGVyOyB9Ci0gICAgICAgIHZvaWQgc2V0R2V0dGVyKEpTT2JqZWN0KiBnZXR0
ZXIpIHsgbV9nZXR0ZXIgPSBnZXR0ZXI7IH0KLSAgICAgICAgSlNPYmplY3QqIHNldHRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fc2V0dGVyOyB9Ci0gICAgICAgIHZvaWQgc2V0U2V0dGVyKEpTT2JqZWN0
KiBzZXR0ZXIpIHsgbV9zZXR0ZXIgPSBzZXR0ZXI7IH0KKyAgICAgICAgSlNPYmplY3QqIGdldHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0R2V0
dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGdldHRlcikgeyBtX2dldHRl
ci5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2V0dGVyKTsgfQorICAgICAgICBKU09iamVjdCogc2V0
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0ZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRT
ZXR0ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogc2V0dGVyKSB7IG1fc2V0
dGVyLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzZXR0ZXIpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUocHJvdG90eXBlLCBU
eXBlSW5mbyhHZXR0ZXJTZXR0ZXJUeXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pLCBBbm9ueW1v
dXNTbG90Q291bnQpOwpAQCAtNTYsOCArNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKIAotICAg
ICAgICBKU09iamVjdCogbV9nZXR0ZXI7Ci0gICAgICAgIEpTT2JqZWN0KiBtX3NldHRlcjsgIAor
ICAgICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fZ2V0dGVyOworICAgICAgICBXcml0ZUJh
cnJpZXI8SlNPYmplY3Q+IG1fc2V0dGVyOyAgCiAgICAgfTsKIAogICAgIEdldHRlclNldHRlciog
YXNHZXR0ZXJTZXR0ZXIoSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcAppbmRleCAzYWQ0NjQ0NWQ1NzZlZTUzZjVj
NGIyNzhkNzdiOTJlY2NkZTdhZmE3Li45NTU5ZjVkMWZlNTc5Y2EyMzQzNzJiNmVhYTlhZTlmODJl
NjBkYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxF
dmFsRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2Jh
bEV2YWxGdW5jdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChHbG9iYWxFdmFsRnVuY3Rpb24pOwogCiBHbG9iYWxFdmFsRnVuY3Rpb246Okdsb2JhbEV2
YWxGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBpbnQgbGVuLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSlNHbG9iYWxPYmplY3Qq
IGNhY2hlZEdsb2JhbE9iamVjdCkKICAgICA6IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBsZW4sIG5hbWUsIGZ1bmN0aW9uKQotICAgICwgbV9jYWNoZWRH
bG9iYWxPYmplY3QoY2FjaGVkR2xvYmFsT2JqZWN0KQorICAgICwgbV9jYWNoZWRHbG9iYWxPYmpl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBjYWNoZWRHbG9iYWxPYmplY3QpCiB7CiAgICAg
QVNTRVJUX0FSRyhjYWNoZWRHbG9iYWxPYmplY3QsIGNhY2hlZEdsb2JhbE9iamVjdCk7CiB9CkBA
IC00Miw3ICs0Miw3IEBAIEdsb2JhbEV2YWxGdW5jdGlvbjo6R2xvYmFsRXZhbEZ1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB2b2lkIEdsb2JhbEV2YWxG
dW5jdGlvbjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIFByb3Rv
dHlwZUZ1bmN0aW9uOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYXBw
ZW5kKG1fY2FjaGVkR2xvYmFsT2JqZWN0KTsKKyAgICBtYXJrU3RhY2suYXBwZW5kKG1fY2FjaGVk
R2xvYmFsT2JqZWN0LnNsb3QoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaAppbmRleCBi
ODg5Y2E5OGE5YzU1OTFmNGM5OTBhMjllNDI5NjMwOTUyNjEzNWExLi4xM2YwOTQ2ZmEzMTBhNjM0
NjhiZTA4YTIyODBhNjMyNmZiYzZiMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBHbG9iYWxFdmFsRnVuY3Rpb24gOiBwdWJsaWMgUHJvdG90eXBl
RnVuY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgR2xvYmFsRXZhbEZ1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50
IGxlbiwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9uLCBKU0dsb2JhbE9iamVjdCog
ZXhwZWN0ZWRUaGlzT2JqZWN0KTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGNhY2hlZEdsb2Jh
bE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkR2xvYmFsT2JqZWN0OyB9CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBjYWNoZWRHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEdsb2JhbE9iamVjdC5nZXQoKTsgfQogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAK
QEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKIAotICAgICAgICBKU0dsb2Jh
bE9iamVjdCogbV9jYWNoZWRHbG9iYWxPYmplY3Q7CisgICAgICAgIFdyaXRlQmFycmllcjxKU0ds
b2JhbE9iamVjdD4gbV9jYWNoZWRHbG9iYWxPYmplY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCmluZGV4IDllYzM3OTli
MDRjYjBhNWRhYmM0ZjU5NGEwN2QzMDM4MTRmOWU5NTYuLjJmYWQxNWQyOTYzMGU2ZDgzYmE2MDhj
YWE0YWFlODc1M2JkYzRmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3Bw
CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBIZWFwOjptYXJrUHJvdGVjdGVkT2JqZWN0cyhNYXJr
U3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBQcm90ZWN0Q291bnRTZXQ6Oml0ZXJhdG9yIGVuZCA9
IG1fcHJvdGVjdGVkVmFsdWVzLmVuZCgpOwogICAgIGZvciAoUHJvdGVjdENvdW50U2V0OjppdGVy
YXRvciBpdCA9IG1fcHJvdGVjdGVkVmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZChpdC0+Zmlyc3QpOworICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKCZpdC0+Zmlyc3QpOwogfQogCiB2b2lkIEhlYXA6OnB1c2hUZW1wU29ydFZlY3RvcihWZWN0
b3I8VmFsdWVTdHJpbmdQYWlyPiogdGVtcFZlY3RvcikKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lk
IEhlYXA6Om1hcmtUZW1wU29ydFZlY3RvcnMoTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgICAg
IFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+OjppdGVyYXRvciB2ZWN0b3JFbmQgPSB0ZW1wU29ydGlu
Z1ZlY3Rvci0+ZW5kKCk7CiAgICAgICAgIGZvciAoVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj46Oml0
ZXJhdG9yIHZlY3Rvckl0ID0gdGVtcFNvcnRpbmdWZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9
IHZlY3RvckVuZDsgKyt2ZWN0b3JJdCkgewogICAgICAgICAgICAgaWYgKHZlY3Rvckl0LT5maXJz
dCkKLSAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHZlY3Rvckl0LT5maXJzdCk7Cisg
ICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdmVjdG9ySXQtPmZpcnN0KTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygp
CiAgICAgaWYgKG1fbWFya0xpc3RTZXQgJiYgbV9tYXJrTGlzdFNldC0+c2l6ZSgpKQogICAgICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6bWFya0xpc3RzKG1hcmtTdGFjaywgKm1fbWFya0xpc3RT
ZXQpOwogICAgIGlmIChtX2dsb2JhbERhdGEtPmV4Y2VwdGlvbikKLSAgICAgICAgbWFya1N0YWNr
LmFwcGVuZChtX2dsb2JhbERhdGEtPmV4Y2VwdGlvbik7CisgICAgICAgIG1hcmtTdGFjay5hcHBl
bmQoJm1fZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKTsKICAgICBpZiAobV9nbG9iYWxEYXRhLT5maXJz
dFN0cmluZ2lmaWVyVG9NYXJrKQogICAgICAgICBKU09OT2JqZWN0OjptYXJrU3RyaW5naWZpZXJz
KG1hcmtTdGFjaywgbV9nbG9iYWxEYXRhLT5maXJzdFN0cmluZ2lmaWVyVG9NYXJrKTsKICAgICBt
YXJrU3RhY2suZHJhaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMGE4ZDlkZWZjZDRjZmEzZTJhMWJmNTNmNDcxYTVj
OTgyYzlhMDZjNy4uZjE5YWUwZDhhYjBiOWEzNTM2YmYwYmVlOGM3MTk1Y2Q1YThhZTBiOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKIEludGVybmFsRnVuY3Rpb246
OkludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YS0+cHJv
cGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbmFtZS5pc051bGwoKSA/ICIi
IDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cisg
ICAgcHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc1N0cmluZyhnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmco
KSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAogY29uc3QgVVN0cmlu
ZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAppbmRleCAxMGRlZDRj
ZDQ0MThiZDliY2Q4ZjNjMTBjNTdkOWJhZTUwZjZmODFmLi5hMTEzZTkxOTg2NGQ1ODUyMTJlMzc1
MWVmODA4NThiNzYxOWUyOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgSlNBUElWYWx1ZVdyYXBwZXIgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAg
ZnJpZW5kIEpTVmFsdWUganNBUElWYWx1ZVdyYXBwZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAg
ICAgcHVibGljOgotICAgICAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQorICAgICAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQo
KTsgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHByaXZhdGU6CiAgICAgICAgIEpTQVBJVmFsdWVXcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKS5hcGlX
cmFwcGVyU3RydWN0dXJlLmdldCgpKQotICAgICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAg
ICAgICB7CisgICAgICAgICAgICBtX3ZhbHVlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IHZhbHVlKTsKICAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkpOwogICAgICAgICB9
CiAKLSAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93
bj4gbV92YWx1ZTsKICAgICB9OwogCiAgICAgaW5saW5lIEpTVmFsdWUganNBUElWYWx1ZVdyYXBw
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNDI4NDAzZDI1OGY1NWE5Zjg4NGM2
YzYyZWU3ODFmMjAxMTE5ZWRmOC4uY2EzZWZlOWRhMTYwOTg4MzY2ZTVjMTdjYjliMGU4ZGM5Yjhk
YmZkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
Y3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnQKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit2b2lkIEpTQWN0aXZhdGlvbjo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVl
KSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKIApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgSlNBY3Rp
dmF0aW9uOjpwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlCiAgICAgLy8gcHJvcGVydGllcyBhcmUgbm9uLXN0YW5kYXJkIGV4dGVuc2lv
bnMgdGhhdCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZG8gbm90CiAgICAgLy8gZXhwb3NlIGluIHRo
ZSBhY3RpdmF0aW9uIG9iamVjdC4KICAgICBBU1NFUlQoIWhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSk7Ci0gICAgcHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHRydWUsIHNsb3Qp
OworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUs
IDAsIHRydWUsIHNsb3QpOwogfQogCiAvLyBGSVhNRTogTWFrZSB0aGlzIGZ1bmN0aW9uIGhvbm9y
IFJlYWRPbmx5IChjb25zdCkgYW5kIERvbnRFbnVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCmluZGV4IDU1NjYwM2JkY2RjN2MxMDFkNjU3YTNjZDY5NjgxOWEwNWQx
ODY3MzMuLmNlMjVmN2IzZTMyZjI5YTNmZGY4ZWE2ZmFjMzRlZTViZDAzZWMzZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xODgsOSArMTg4LDkgQEAg
SlNBcnJheTo6SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
dW5zaWduZWQgaW5pdGlhbExlbmd0aCwKICNlbmRpZgogICAgICAgICBtX3N0b3JhZ2UtPm1fbGVu
Z3RoID0gaW5pdGlhbExlbmd0aDsKICAgICAgICAgbV9zdG9yYWdlLT5tX251bVZhbHVlc0luVmVj
dG9yID0gMDsKLSAgICAgICAgSlNWYWx1ZSogdmVjdG9yID0gbV9zdG9yYWdlLT5tX3ZlY3RvcjsK
KyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVj
dG9yOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluaXRpYWxDYXBhY2l0eTsgKytp
KQotICAgICAgICAgICAgdmVjdG9yW2ldID0gSlNWYWx1ZSgpOworICAgICAgICAgICAgdmVjdG9y
W2ldLmNsZWFyKCk7CiAgICAgfQogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtMTk4LDcg
KzE5OCw3IEBAIEpTQXJyYXk6OkpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgsCiAgICAgSGVhcDo6aGVhcCh0aGlzKS0+
cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHN0b3JhZ2VTaXplKGluaXRpYWxDYXBhY2l0eSkpOwogfQog
Ci1KU0FycmF5OjpKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBjb25zdCBBcmdMaXN0JiBsaXN0KQorSlNBcnJheTo6SlNBcnJheShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBB
cmdMaXN0JiBsaXN0KQogICAgIDogSlNPYmplY3Qoc3RydWN0dXJlKQogewogICAgIHVuc2lnbmVk
IGluaXRpYWxDYXBhY2l0eSA9IGxpc3Quc2l6ZSgpOwpAQCAtMjI1LDEyICsyMjUsMTIgQEAgSlNB
cnJheTo6SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29u
c3QgQXJnTGlzdCYgbGlzdCkKICNlbmRpZgogCiAgICAgc2l6ZV90IGkgPSAwOwotICAgIEpTVmFs
dWUqIHZlY3RvciA9IG1fc3RvcmFnZS0+bV92ZWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+KiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9yOwogICAgIEFyZ0xpc3Q6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGxpc3QuZW5kKCk7CiAgICAgZm9yIChBcmdMaXN0Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGxpc3QuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0LCArK2kpCi0gICAgICAgIHZlY3Rv
cltpXSA9ICppdDsKKyAgICAgICAgdmVjdG9yW2ldLnNldChnbG9iYWxEYXRhLCB0aGlzLCAqaXQp
OwogICAgIGZvciAoOyBpIDwgaW5pdGlhbFN0b3JhZ2U7IGkrKykKLSAgICAgICAgdmVjdG9yW2ld
ID0gSlNWYWx1ZSgpOworICAgICAgICB2ZWN0b3JbaV0uY2xlYXIoKTsKIAogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIApAQCAtMjU3LDE2ICsyNTcsMTYgQEAgYm9vbCBKU0FycmF5OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBQcm9wZXJ0eVNsb3QmIHNs
b3QKICAgICB9CiAKICAgICBpZiAoaSA8IG1fdmVjdG9yTGVuZ3RoKSB7Ci0gICAgICAgIEpTVmFs
dWUmIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4mIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOwogICAgICAgICBp
ZiAodmFsdWVTbG90KSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlU2xvdCgmdmFsdWVTbG90
KTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHZhbHVlU2xvdC5zbG90KCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKFNwYXJzZUFy
cmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXApIHsKICAgICAgICAg
aWYgKGkgPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkgewogICAgICAgICAgICAgU3BhcnNlQXJy
YXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmZpbmQoaSk7CiAgICAgICAgICAgICBpZiAo
aXQgIT0gbWFwLT5lbmQoKSkgewotICAgICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KCZp
dC0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICBzbG90LnNldFZhbHVlU2xvdChpdC0+c2Vjb25k
LnNsb3QoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTMwNSwxNiArMzA1LDE2IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVyCiAg
ICAgICAgIGlmIChpID49IHN0b3JhZ2UtPm1fbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBpZiAoaSA8IG1fdmVjdG9yTGVuZ3RoKSB7Ci0gICAgICAgICAgICBKU1Zh
bHVlJiB2YWx1ZSA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgICAgICAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+JiB2YWx1ZSA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOwogICAgICAgICAgICAg
aWYgKHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHZh
bHVlLCAwKTsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IodmFsdWUu
Z2V0KCksIDApOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1f
c3BhcnNlVmFsdWVNYXApIHsKICAgICAgICAgICAgIGlmIChpID49IE1JTl9TUEFSU0VfQVJSQVlf
SU5ERVgpIHsKICAgICAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciBp
dCA9IG1hcC0+ZmluZChpKTsKICAgICAgICAgICAgICAgICBpZiAoaXQgIT0gbWFwLT5lbmQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoaXQtPnNlY29u
ZCwgMCk7CisgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihpdC0+
c2Vjb25kLmdldCgpLCAwKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzU5LDEzICszNTksMTMgQEAgdm9pZCBK
U0FycmF5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQog
ICAgIH0KIAogICAgIGlmIChpIDwgbV92ZWN0b3JMZW5ndGgpIHsKLSAgICAgICAgSlNWYWx1ZSYg
dmFsdWVTbG90ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CisgICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiYgdmFsdWVTbG90ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAgIGlmICh2
YWx1ZVNsb3QpIHsKLSAgICAgICAgICAgIHZhbHVlU2xvdCA9IHZhbHVlOworICAgICAgICAgICAg
dmFsdWVTbG90LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKICAgICAgICAg
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICB2YWx1ZVNsb3QgPSB2YWx1ZTsKKyAgICAgICAgdmFsdWVTbG90LnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVl
c0luVmVjdG9yOwogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTM5NSwxMSArMzk1LDExIEBAIE5FVkVSX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1dFNsb3dD
YXNlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1CiAgICAgICAgICAg
ICAgICAgc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCA9IG1hcDsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgcGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbWFwLT5hZGQoaSwgdmFsdWUpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25k
KSB7IC8vIHByZS1leGlzdGluZyBlbnRyeQotICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kID0gdmFsdWU7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gdGVtcDsK
KyAgICAgICAgICAgIHBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJl
c3VsdCA9IG1hcC0+YWRkKGksIHRlbXApOworICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNv
bmQuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOworICAgICAgICAgICAgaWYg
KCFyZXN1bHQuc2Vjb25kKSAvLyBwcmUtZXhpc3RpbmcgZW50cnkKICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHNpemVfdCBjYXBhY2l0eSA9IG1h
cC0+Y2FwYWNpdHkoKTsKICAgICAgICAgICAgIGlmIChjYXBhY2l0eSAhPSBzdG9yYWdlLT5yZXBv
cnRlZE1hcENhcGFjaXR5KSB7CkBAIC00MTUsNyArNDE1LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SlNBcnJheTo6cHV0U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IHZhbHUKICAgICBpZiAoIW1hcCB8fCBtYXAtPmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoaW5j
cmVhc2VWZWN0b3JMZW5ndGgoaSArIDEpKSB7CiAgICAgICAgICAgICBzdG9yYWdlID0gbV9zdG9y
YWdlOwotICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0gPSB2YWx1ZTsKKyAgICAgICAg
ICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHZh
bHVlKTsKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAg
ICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgfSBlbHNlCkBAIC00NTcsMTggKzQ1
NywxOSBAQCBORVZFUl9JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXRTbG93Q2FzZShFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdQogICAgIHN0b3JhZ2UgPSBtX3N0b3JhZ2U7
CiAgICAgCiAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gbV92ZWN0b3JMZW5ndGg7Ci0gICAg
SlNWYWx1ZSogdmVjdG9yID0gc3RvcmFnZS0+bV92ZWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiB2ZWN0b3IgPSBzdG9yYWdlLT5tX3ZlY3RvcjsKIAogICAgIGlmIChuZXdOdW1WYWx1
ZXNJblZlY3RvciA9PSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yICsgMSkgewogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSB2ZWN0b3JMZW5ndGg7IGogPCBuZXdWZWN0b3JMZW5ndGg7ICsr
aikKLSAgICAgICAgICAgIHZlY3RvcltqXSA9IEpTVmFsdWUoKTsKKyAgICAgICAgICAgIHZlY3Rv
cltqXS5jbGVhcigpOwogICAgICAgICBpZiAoaSA+IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCiAg
ICAgICAgICAgICBtYXAtPnJlbW92ZShpKTsKICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKHVu
c2lnbmVkIGogPSB2ZWN0b3JMZW5ndGg7IGogPCBtYXgodmVjdG9yTGVuZ3RoLCBNSU5fU1BBUlNF
X0FSUkFZX0lOREVYKTsgKytqKQotICAgICAgICAgICAgdmVjdG9yW2pdID0gSlNWYWx1ZSgpOwor
ICAgICAgICAgICAgdmVjdG9yW2pdLmNsZWFyKCk7CisgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0g
bWF4KHZlY3Rvckxlbmd0aCwgTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCk7IGogPCBuZXdWZWN0b3JM
ZW5ndGg7ICsraikKLSAgICAgICAgICAgIHZlY3RvcltqXSA9IG1hcC0+dGFrZShqKTsKKyAgICAg
ICAgICAgIHZlY3RvcltqXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgbWFwLT50YWtlKGopLmdldCgp
KTsKICAgICB9CiAKICAgICBBU1NFUlQoaSA8IG5ld1ZlY3Rvckxlbmd0aCk7CkBAIC00NzYsNyAr
NDc3LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSlNBcnJheTo6cHV0U2xvd0Nhc2UoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHUKICAgICBtX3ZlY3Rvckxlbmd0aCA9IG5l
d1ZlY3Rvckxlbmd0aDsKICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yID0gbmV3TnVt
VmFsdWVzSW5WZWN0b3I7CiAKLSAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IHZhbHVlOworICAg
IHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHZhbHVl
KTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtNTAzLDEyICs1MDQsMTIgQEAgYm9v
bCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGkpCiAg
ICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwogICAgIAogICAgIGlmIChpIDwg
bV92ZWN0b3JMZW5ndGgpIHsKLSAgICAgICAgSlNWYWx1ZSYgdmFsdWVTbG90ID0gc3RvcmFnZS0+
bV92ZWN0b3JbaV07CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdmFsdWVTbG90ID0g
c3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAgIGlmICghdmFsdWVTbG90KSB7CiAgICAgICAg
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KLSAgICAgICAgdmFsdWVTbG90ID0gSlNWYWx1ZSgpOworICAgICAgICB2YWx1ZVNsb3Qu
Y2xlYXIoKTsKICAgICAgICAgLS1zdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjA1LDkgKzYw
Niw5IEBAIGJvb2wgSlNBcnJheTo6aW5jcmVhc2VWZWN0b3JMZW5ndGgodW5zaWduZWQgbmV3TGVu
Z3RoKQogICAgIHN0b3JhZ2UgPSBtX3N0b3JhZ2UgPSByZWludGVycHJldF9jYXN0X3B0cjxBcnJh
eVN0b3JhZ2UqPihzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZVN0b3JhZ2UpICsgbV9pbmRleEJpYXMg
KiBzaXplb2YoSlNWYWx1ZSkpOwogICAgIG1fc3RvcmFnZS0+bV9hbGxvY0Jhc2UgPSBiYXNlU3Rv
cmFnZTsKIAotICAgIEpTVmFsdWUqIHZlY3RvciA9IHN0b3JhZ2UtPm1fdmVjdG9yOworICAgIFdy
aXRlQmFycmllcjxVbmtub3duPiogdmVjdG9yID0gc3RvcmFnZS0+bV92ZWN0b3I7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gdmVjdG9yTGVuZ3RoOyBpIDwgbmV3VmVjdG9yTGVuZ3RoOyArK2kpCi0g
ICAgICAgIHZlY3RvcltpXSA9IEpTVmFsdWUoKTsKKyAgICAgICAgdmVjdG9yW2ldLmNsZWFyKCk7
CiAKICAgICBtX3ZlY3Rvckxlbmd0aCA9IG5ld1ZlY3Rvckxlbmd0aDsKICAgICAKQEAgLTY2Niw5
ICs2NjcsOSBAQCB2b2lkIEpTQXJyYXk6OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW5ndGgpCiAg
ICAgaWYgKG5ld0xlbmd0aCA8IGxlbmd0aCkgewogICAgICAgICB1bnNpZ25lZCB1c2VkVmVjdG9y
TGVuZ3RoID0gbWluKGxlbmd0aCwgbV92ZWN0b3JMZW5ndGgpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBuZXdMZW5ndGg7IGkgPCB1c2VkVmVjdG9yTGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIEpTVmFsdWUmIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgICAgICAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZVNsb3QgPSBzdG9yYWdlLT5tX3ZlY3Rvcltp
XTsKICAgICAgICAgICAgIGJvb2wgaGFkVmFsdWUgPSB2YWx1ZVNsb3Q7Ci0gICAgICAgICAgICB2
YWx1ZVNsb3QgPSBKU1ZhbHVlKCk7CisgICAgICAgICAgICB2YWx1ZVNsb3QuY2xlYXIoKTsKICAg
ICAgICAgICAgIHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgLT0gaGFkVmFsdWU7CiAgICAg
ICAgIH0KIApAQCAtNzA2LDExICs3MDcsMTEgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoKQogICAg
IEpTVmFsdWUgcmVzdWx0OwogCiAgICAgaWYgKGxlbmd0aCA8IG1fdmVjdG9yTGVuZ3RoKSB7Ci0g
ICAgICAgIEpTVmFsdWUmIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2xlbmd0aF07Cisg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdmFsdWVTbG90ID0gc3RvcmFnZS0+bV92ZWN0
b3JbbGVuZ3RoXTsKICAgICAgICAgaWYgKHZhbHVlU2xvdCkgewogICAgICAgICAgICAgLS1zdG9y
YWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwotICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWVTbG90
OwotICAgICAgICAgICAgdmFsdWVTbG90ID0gSlNWYWx1ZSgpOworICAgICAgICAgICAgcmVzdWx0
ID0gdmFsdWVTbG90LmdldCgpOworICAgICAgICAgICAgdmFsdWVTbG90LmNsZWFyKCk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKICAgICB9IGVs
c2UgewpAQCAtNzE4LDcgKzcxOSw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKCkKICAgICAgICAg
aWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXAp
IHsKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5m
aW5kKGxlbmd0aCk7CiAgICAgICAgICAgICBpZiAoaXQgIT0gbWFwLT5lbmQoKSkgewotICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
aXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgICAgICBtYXAtPnJlbW92ZShpdCk7CiAgICAg
ICAgICAgICAgICAgaWYgKG1hcC0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRl
bGV0ZSBtYXA7CkBAIC03NDIsNyArNzQzLDcgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBtX3N0
b3JhZ2U7CiAKICAgICBpZiAoc3RvcmFnZS0+bV9sZW5ndGggPCBtX3ZlY3Rvckxlbmd0aCkgewot
ICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltzdG9yYWdlLT5tX2xlbmd0aF0gPSB2YWx1ZTsKKyAg
ICAgICAgc3RvcmFnZS0+bV92ZWN0b3Jbc3RvcmFnZS0+bV9sZW5ndGhdLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0lu
VmVjdG9yOwogICAgICAgICArK3N0b3JhZ2UtPm1fbGVuZ3RoOwogICAgICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CkBAIC03NTQsNyArNzU1LDcgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgaWYgKCFtYXAgfHwgbWFwLT5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGlmIChpbmNyZWFzZVZlY3Rvckxlbmd0aChzdG9yYWdlLT5tX2xl
bmd0aCArIDEpKSB7CiAgICAgICAgICAgICAgICAgc3RvcmFnZSA9IG1fc3RvcmFnZTsKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltzdG9yYWdlLT5tX2xlbmd0aF0gPSB2YWx1ZTsK
KyAgICAgICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltzdG9yYWdlLT5tX2xlbmd0aF0uc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgICAgICsrc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgICAgICAgICArK3N0b3JhZ2UtPm1f
bGVuZ3RoOwogICAgICAgICAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTg1Nyw5ICs4
NTgsOSBAQCB2b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMsIGludCBj
b3VudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEpTVmFsdWUqIHZlY3RvciA9IG1f
c3RvcmFnZS0+bV92ZWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3IgPSBt
X3N0b3JhZ2UtPm1fdmVjdG9yOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
LSAgICAgICAgdmVjdG9yW2ldID0gSlNWYWx1ZSgpOworICAgICAgICB2ZWN0b3JbaV0uY2xlYXIo
KTsKIH0KIAogdm9pZCBKU0FycmF5OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2sp
CkBAIC05NDEsNyArOTQyLDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBIZWFwOjpoZWFwKHRoaXMpLT5wdXNoVGVtcFNvcnRWZWN0b3IoJnZhbHVlcyk7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aE5vdEluY2x1ZGluZ1VuZGVmaW5lZDsgaSsr
KSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldLmdldCgpOwogICAgICAgICBB
U1NFUlQoIXZhbHVlLmlzVW5kZWZpbmVkKCkpOwogICAgICAgICB2YWx1ZXNbaV0uZmlyc3QgPSB2
YWx1ZTsKICAgICB9CkBAIC05NzQsOSArOTc1LDEwIEBAIHZvaWQgSlNBcnJheTo6c29ydChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIGluY3JlYXNlVmVjdG9yTGVuZ3RoKGxlbmd0aE5vdEluY2x1
ZGluZ1VuZGVmaW5lZCk7CiAgICAgaWYgKHN0b3JhZ2UtPm1fbGVuZ3RoIDwgbGVuZ3RoTm90SW5j
bHVkaW5nVW5kZWZpbmVkKQogICAgICAgICBzdG9yYWdlLT5tX2xlbmd0aCA9IGxlbmd0aE5vdElu
Y2x1ZGluZ1VuZGVmaW5lZDsKLSAgICAgICAgCisKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7IGkrKykKLSAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3Jb
aV0gPSB2YWx1ZXNbaV0uZmlyc3Q7CisgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldChn
bG9iYWxEYXRhLCB0aGlzLCB2YWx1ZXNbaV0uZmlyc3QpOwogCiAgICAgSGVhcDo6aGVhcCh0aGlz
KS0+cG9wVGVtcFNvcnRWZWN0b3IoJnZhbHVlcyk7CiAgICAgCkBAIC0xMTA1LDE0ICsxMTA3LDE0
IEBAIHZvaWQgSlNBcnJheTo6c29ydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFyZUZ1
bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgYXJy
YXksIGlnbm9yaW5nIG1pc3NpbmcgdmFsdWVzLCBjb3VudGluZyB1bmRlZmluZWQgb25lcywgYW5k
IGluc2VydGluZyBhbGwgb3RoZXIgb25lcyBpbnRvIHRoZSB0cmVlLgogICAgIGZvciAoOyBudW1E
ZWZpbmVkIDwgdXNlZFZlY3Rvckxlbmd0aDsgKytudW1EZWZpbmVkKSB7Ci0gICAgICAgIEpTVmFs
dWUgdiA9IHN0b3JhZ2UtPm1fdmVjdG9yW251bURlZmluZWRdOworICAgICAgICBKU1ZhbHVlIHYg
PSBzdG9yYWdlLT5tX3ZlY3RvcltudW1EZWZpbmVkXS5nZXQoKTsKICAgICAgICAgaWYgKCF2IHx8
IHYuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB0cmVlLmFic3Ry
YWN0b3IoKS5tX25vZGVzW251bURlZmluZWRdLnZhbHVlID0gdjsKICAgICAgICAgdHJlZS5pbnNl
cnQobnVtRGVmaW5lZCk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7
IGkgPCB1c2VkVmVjdG9yTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSB2ID0gc3RvcmFn
ZS0+bV92ZWN0b3JbaV07CisgICAgICAgIEpTVmFsdWUgdiA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ld
LmdldCgpOwogICAgICAgICBpZiAodikgewogICAgICAgICAgICAgaWYgKHYuaXNVbmRlZmluZWQo
KSkKICAgICAgICAgICAgICAgICArK251bVVuZGVmaW5lZDsKQEAgLTExNDAsNyArMTE0Miw3IEBA
IHZvaWQgSlNBcnJheTo6c29ydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFyZUZ1bmN0
aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwKIAogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjpp
dGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwogICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVN
YXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgICAgIHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNbbnVtRGVmaW5lZF0udmFsdWUgPSBpdC0+
c2Vjb25kOworICAgICAgICAgICAgdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rlc1tudW1EZWZpbmVk
XS52YWx1ZSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgICAgICB0cmVlLmluc2VydChudW1E
ZWZpbmVkKTsKICAgICAgICAgICAgICsrbnVtRGVmaW5lZDsKICAgICAgICAgfQpAQCAtMTE1Nywx
OCArMTE1OSwxOSBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsCiAgICAgLy8gQ29weSB0aGUgdmFs
dWVzIGJhY2sgaW50byBtX3N0b3JhZ2UuCiAgICAgQVZMVHJlZTxBVkxUcmVlQWJzdHJhY3RvckZv
ckFycmF5Q29tcGFyZSwgNDQ+OjpJdGVyYXRvciBpdGVyOwogICAgIGl0ZXIuc3RhcnRfaXRlcl9s
ZWFzdCh0cmVlKTsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxE
YXRhKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bURlZmluZWQ7ICsraSkgewot
ICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNb
Kml0ZXJdLnZhbHVlOworICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQoZ2xvYmFsRGF0
YSwgdGhpcywgdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rlc1sqaXRlcl0udmFsdWUpOwogICAgICAg
ICArK2l0ZXI7CiAgICAgfQogCiAgICAgLy8gUHV0IHVuZGVmaW5lZCB2YWx1ZXMgYmFjayBpbi4K
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1EZWZpbmVkOyBpIDwgbmV3VXNlZFZlY3Rvckxlbmd0
aDsgKytpKQotICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IGpzVW5kZWZpbmVkKCk7Cisg
ICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldFVuZGVmaW5lZCgpOwogCiAgICAgLy8gRW5z
dXJlIHRoYXQgdW51c2VkIHZhbHVlcyBpbiB0aGUgdmVjdG9yIGFyZSB6ZXJvZWQgb3V0LgogICAg
IGZvciAodW5zaWduZWQgaSA9IG5ld1VzZWRWZWN0b3JMZW5ndGg7IGkgPCB1c2VkVmVjdG9yTGVu
Z3RoOyArK2kpCi0gICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldID0gSlNWYWx1ZSgpOworICAg
ICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5jbGVhcigpOwogCiAgICAgc3RvcmFnZS0+bV9udW1W
YWx1ZXNJblZlY3RvciA9IG5ld1VzZWRWZWN0b3JMZW5ndGg7CiAKQEAgLTExNzksMTQgKzExODIs
MTQgQEAgdm9pZCBKU0FycmF5OjpmaWxsQXJnTGlzdChFeGVjU3RhdGUqIGV4ZWMsIE1hcmtlZEFy
Z3VtZW50QnVmZmVyJiBhcmdzKQogewogICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IG1fc3Rv
cmFnZTsKIAotICAgIEpTVmFsdWUqIHZlY3RvciA9IHN0b3JhZ2UtPm1fdmVjdG9yOworICAgIFdy
aXRlQmFycmllcjxVbmtub3duPiogdmVjdG9yID0gc3RvcmFnZS0+bV92ZWN0b3I7CiAgICAgdW5z
aWduZWQgdmVjdG9yRW5kID0gbWluKHN0b3JhZ2UtPm1fbGVuZ3RoLCBtX3ZlY3Rvckxlbmd0aCk7
CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkgPCB2ZWN0b3JFbmQ7ICsraSkgewot
ICAgICAgICBKU1ZhbHVlJiB2ID0gdmVjdG9yW2ldOworICAgICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4mIHYgPSB2ZWN0b3JbaV07CiAgICAgICAgIGlmICghdikKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBhcmdzLmFwcGVuZCh2KTsKKyAgICAgICAgYXJncy5hcHBlbmQodi5nZXQoKSk7
CiAgICAgfQogCiAgICAgZm9yICg7IGkgPCBzdG9yYWdlLT5tX2xlbmd0aDsgKytpKQpAQCAtMTE5
NywxNCArMTIwMCwxNCBAQCB2b2lkIEpTQXJyYXk6OmNvcHlUb1JlZ2lzdGVycyhFeGVjU3RhdGUq
IGV4ZWMsIFJlZ2lzdGVyKiBidWZmZXIsIHVpbnQzMl90IG1heFNpegogewogICAgIEFTU0VSVCht
X3N0b3JhZ2UtPm1fbGVuZ3RoID49IG1heFNpemUpOwogICAgIFVOVVNFRF9QQVJBTShtYXhTaXpl
KTsKLSAgICBKU1ZhbHVlKiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9yOworICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiogdmVjdG9yID0gbV9zdG9yYWdlLT5tX3ZlY3RvcjsKICAgICB1bnNp
Z25lZCB2ZWN0b3JFbmQgPSBtaW4obWF4U2l6ZSwgbV92ZWN0b3JMZW5ndGgpOwogICAgIHVuc2ln
bmVkIGkgPSAwOwogICAgIGZvciAoOyBpIDwgdmVjdG9yRW5kOyArK2kpIHsKLSAgICAgICAgSlNW
YWx1ZSYgdiA9IHZlY3RvcltpXTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2ID0g
dmVjdG9yW2ldOwogICAgICAgICBpZiAoIXYpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
YnVmZmVyW2ldID0gdjsKKyAgICAgICAgYnVmZmVyW2ldID0gdi5nZXQoKTsKICAgICB9CiAKICAg
ICBmb3IgKDsgaSA8IG1heFNpemU7ICsraSkKQEAgLTEyMjMsMTcgKzEyMjYsMTggQEAgdW5zaWdu
ZWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcoKQogICAgIHVuc2lnbmVkIG51bVVuZGVmaW5l
ZCA9IDA7CiAKICAgICBmb3IgKDsgbnVtRGVmaW5lZCA8IHVzZWRWZWN0b3JMZW5ndGg7ICsrbnVt
RGVmaW5lZCkgewotICAgICAgICBKU1ZhbHVlIHYgPSBzdG9yYWdlLT5tX3ZlY3RvcltudW1EZWZp
bmVkXTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gc3RvcmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5lZF0u
Z2V0KCk7CiAgICAgICAgIGlmICghdiB8fCB2LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICBi
cmVhazsKICAgICB9CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1EZWZpbmVkOyBpIDwgdXNl
ZFZlY3Rvckxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgdiA9IHN0b3JhZ2UtPm1fdmVj
dG9yW2ldOworICAgICAgICBKU1ZhbHVlIHYgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXS5nZXQoKTsK
ICAgICAgICAgaWYgKHYpIHsKICAgICAgICAgICAgIGlmICh2LmlzVW5kZWZpbmVkKCkpCiAgICAg
ICAgICAgICAgICAgKytudW1VbmRlZmluZWQ7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5lZCsrXSA9IHY7CisgICAgICAgICAgICAg
ICAgc3RvcmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVy
KHYpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjUyLDE2ICsxMjU2LDE2IEBAIHVuc2lnbmVk
IEpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKCkKIAogICAgICAgICBTcGFyc2VBcnJheVZhbHVl
TWFwOjppdGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwogICAgICAgICBmb3IgKFNwYXJzZUFycmF5
VmFsdWVNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0g
ICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltudW1EZWZpbmVkKytdID0gaXQtPnNlY29uZDsK
KyAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW251bURlZmluZWQrK10uc2V0V2l0aG91dFdy
aXRlQmFycmllcihpdC0+c2Vjb25kLmdldCgpKTsKIAogICAgICAgICBkZWxldGUgbWFwOwogICAg
ICAgICBzdG9yYWdlLT5tX3NwYXJzZVZhbHVlTWFwID0gMDsKICAgICB9CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBudW1EZWZpbmVkOyBpIDwgbmV3VXNlZFZlY3Rvckxlbmd0aDsgKytpKQotICAg
ICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IGpzVW5kZWZpbmVkKCk7CisgICAgICAgIHN0b3Jh
Z2UtPm1fdmVjdG9yW2ldLnNldFVuZGVmaW5lZCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG5l
d1VzZWRWZWN0b3JMZW5ndGg7IGkgPCB1c2VkVmVjdG9yTGVuZ3RoOyArK2kpCi0gICAgICAgIHN0
b3JhZ2UtPm1fdmVjdG9yW2ldID0gSlNWYWx1ZSgpOworICAgICAgICBzdG9yYWdlLT5tX3ZlY3Rv
cltpXS5jbGVhcigpOwogCiAgICAgc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciA9IG5ld1Vz
ZWRWZWN0b3JMZW5ndGg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApp
bmRleCBkZTI4YjY1YmI4M2RmMWU3NDcxYzY5Mjk0OGJmY2QzNTdjZmE0OTE2Li45OTIzNDMyYzI2
YmEzNjkzYzA5Y2VkYzIyMjVjYTM5YTBjNzdmYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0g
ICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBKU1ZhbHVlPiBTcGFyc2VBcnJheVZhbHVlTWFw
OworICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgV3JpdGVCYXJyaWVyPFVua25vd24+ID4g
U3BhcnNlQXJyYXlWYWx1ZU1hcDsKIAogICAgIC8vIFRoaXMgc3RydWN0IGhvbGRzIHRoZSBhY3R1
YWwgZGF0YSB2YWx1ZXMgb2YgYW4gYXJyYXkuICBBIEpTQXJyYXkgb2JqZWN0IHBvaW50cyB0byBp
dCdzIGNvbnRhaW5lZCBBcnJheVN0b3JhZ2UKICAgICAvLyBzdHJ1Y3QgYnkgcG9pbnRpbmcgdG8g
bV92ZWN0b3IuICBUbyBhY2Nlc3MgdGhlIGNvbnRhaW5lZCBBcnJheVN0b3JhZ2Ugc3RydWN0LCB1
c2UgdGhlIGdldFN0b3JhZ2UoKSBhbmQgCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2lmIENIRUNLX0FSUkFZX0NPTlNJU1RFTkNZCiAgICAgICAgIGJvb2wgbV9pbkNvbXBhY3RJ
bml0aWFsaXphdGlvbjsKICNlbmRpZgotICAgICAgICBKU1ZhbHVlIG1fdmVjdG9yWzFdOworICAg
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV92ZWN0b3JbMV07CiAgICAgfTsKIAogICAgIC8v
IFRoZSBDcmVhdGVDb21wYWN0IGNyZWF0aW9uIG1vZGUgaXMgdXNlZCBmb3IgZmFzdCBjb25zdHJ1
Y3Rpb24gb2YgYXJyYXlzCkBAIC02Nyw3ICs2Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIGV4cGxpY2l0IEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAgICAg
ICAgIEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgdW5zaWduZWQgaW5pdGlh
bExlbmd0aCwgQXJyYXlDcmVhdGlvbk1vZGUpOwotICAgICAgICBKU0FycmF5KE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IEFyZ0xpc3QmIGluaXRpYWxWYWx1ZXMpOworICAgICAg
ICBKU0FycmF5KEpTR2xvYmFsRGF0YSYsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNv
bnN0IEFyZ0xpc3QmIGluaXRpYWxWYWx1ZXMpOwogICAgICAgICB2aXJ0dWFsIH5KU0FycmF5KCk7
CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpAQCAtOTQsMzIg
Kzk0LDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGdldEluZGV4KHVuc2ln
bmVkIGkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChjYW5HZXRJbmRleChpKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9zdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICAgICAgICAgIHJl
dHVybiBtX3N0b3JhZ2UtPm1fdmVjdG9yW2ldLmdldCgpOwogICAgICAgICB9CiAKICAgICAgICAg
Ym9vbCBjYW5TZXRJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV92ZWN0b3JMZW5ndGg7
IH0KLSAgICAgICAgdm9pZCBzZXRJbmRleCh1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCisgICAgICAg
IHZvaWQgc2V0SW5kZXgoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBpLCBKU1Zh
bHVlIHYpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChjYW5TZXRJbmRleChpKSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIEpTVmFsdWUmIHggPSBtX3N0b3JhZ2UtPm1fdmVjdG9y
W2ldOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB4ID0gbV9zdG9yYWdlLT5t
X3ZlY3RvcltpXTsKICAgICAgICAgICAgIGlmICgheCkgewogICAgICAgICAgICAgICAgIEFycmF5
U3RvcmFnZSAqc3RvcmFnZSA9IG1fc3RvcmFnZTsKICAgICAgICAgICAgICAgICArK3N0b3JhZ2Ut
Pm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgICAgICAgICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+
bV9sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UtPm1fbGVuZ3RoID0gaSArIDE7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB4ID0gdjsKKyAgICAgICAgICAgIHguc2V0KGds
b2JhbERhdGEsIHRoaXMsIHYpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHVu
Y2hlY2tlZFNldEluZGV4KHVuc2lnbmVkIGksIEpTVmFsdWUgdikKKyAgICAgICAgdm9pZCB1bmNo
ZWNrZWRTZXRJbmRleChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIGksIEpTVmFs
dWUgdikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNhblNldEluZGV4KGkpKTsKICAg
ICAgICAgICAgIEFycmF5U3RvcmFnZSAqc3RvcmFnZSA9IG1fc3RvcmFnZTsKICNpZiBDSEVDS19B
UlJBWV9DT05TSVNURU5DWQogICAgICAgICAgICAgQVNTRVJUKHN0b3JhZ2UtPm1faW5Db21wYWN0
SW5pdGlhbGl6YXRpb24pOwogI2VuZGlmCi0gICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3Rvcltp
XSA9IHY7CisgICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQoZ2xvYmFsRGF0YSwg
dGhpcywgdik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGZpbGxBcmdMaXN0KEV4ZWNTdGF0
ZSosIE1hcmtlZEFyZ3VtZW50QnVmZmVyJik7CkBAIC0xODksMTIgKzE4OSwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwogCiAg
ICAgICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSBzdGQ6Om1pbihzdG9yYWdlLT5tX2xl
bmd0aCwgbV92ZWN0b3JMZW5ndGgpOwotICAgICAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKHN0
b3JhZ2UtPm1fdmVjdG9yLCB1c2VkVmVjdG9yTGVuZ3RoLCBNYXlDb250YWluTnVsbFZhbHVlcyk7
CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoc3RvcmFnZS0+bV92ZWN0b3JbMF0uc2xv
dCgpLCB1c2VkVmVjdG9yTGVuZ3RoLCBNYXlDb250YWluTnVsbFZhbHVlcyk7CiAKICAgICAgICAg
aWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXAp
IHsKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC0+
ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGl0
ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgbWFya1N0
YWNrLmFwcGVuZChpdC0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5k
KGl0LT5zZWNvbmQuc2xvdCgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCmluZGV4IDZhZjlkNzVmMTM0ZWI5NTlm
YzBiNzk4OGM0ZDJlZTdjYjhjZDFjOWMuLjNmN2Q4MDZhYzhjN2IzNjQ4YmMxYzJmZmU4YzczMjdh
NzE1MDUxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0
ZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJh
eS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KEV4ZWNTdGF0
ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUKICAgICAsIG1f
c3RvcmFnZShzdG9yYWdlKQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZvKQogewotICAgIHB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250
RGVsZXRlKTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKaW5kZXggZjdlODgxMDUxMmMyOTM5MjI1ZmMyYjNmMWJjZTAwYWQ2YWQ3
OThmZi4uODZhYzkzYmNjZWUxZDkyMTc1ZTcwZTQ3Yjk2OGQyZGIxNjU2ZjNkNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTMzNiw4ICszMzYsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgewogICAgICAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+dG9U
aGlzT2JqZWN0KGV4ZWMpIDogdG9UaGlzT2JqZWN0U2xvd0Nhc2UoZXhlYyk7CiAgICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTQ2VsbCogY2VsbCkKKyAg
ICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoSlNDZWxsKiogc2xv
dCkKKyAgICB7CisgICAgICAgIGFwcGVuZENlbGwoKnNsb3QpOworICAgIH0KKyAgICAKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBlbmRDZWxsKEpTQ2VsbCogY2VsbCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghbV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24p
OwogICAgICAgICBBU1NFUlQoY2VsbCk7CkBAIC0zNDYsMTIgKzM1MSwxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA+
PSBDb21wb3VuZFR5cGUpCiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQoY2VsbCk7CiAgICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTVmFsdWUgdmFs
dWUpCisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTVmFs
dWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICAgICAgaWYgKHZh
bHVlLmlzQ2VsbCgpKQotICAgICAgICAgICAgYXBwZW5kKHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAg
ICAgaWYgKHZhbHVlLT5pc0NlbGwoKSkKKyAgICAgICAgICAgIGFwcGVuZENlbGwodmFsdWUtPmFz
Q2VsbCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSGVhcCogSGVhcDo6aGVhcChKU1ZhbHVlIHYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDk5
ZjhlNmY5NTNhZTc3MzllZDA0YjE1YTNhM2ZiNWE1ZmQxNTA3OGQuLjRmZjU5ZTM5ZmVkMzVlMzJh
MGUyZjUzNzk4Y2Y4YWIyNjIyYTJjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC03MSw4ICs3MSw4IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxs
UGFzCiAgICAgLCBtX2V4ZWN1dGFibGUodGh1bmspCiAgICAgLCBtX3Njb3BlQ2hhaW4oZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgp
ID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIo
bGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5n
dGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAjZW5kaWYKIApAQCAt
ODMsOSArODMsOSBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhcwogI2VuZGlmCiAgICAgLCBtX3Nj
b3BlQ2hhaW4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7Ci0gICAgcHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVj
LCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5p
c051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7CiAgICAgVU5V
U0VEX1BBUkFNKGZ1bmMpOwpAQCAtOTksNyArOTksNyBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBl
eAogICAgICwgbV9zY29wZUNoYWluKHNjb3BlQ2hhaW5Ob2RlKQogewogICAgIGNvbnN0IElkZW50
aWZpZXImIG5hbWUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihtX2V4ZWN1dGFi
bGUuZ2V0KCkpLT5uYW1lKCk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1l
LnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
cy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5n
KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIEpTRnVuY3Rpb246
On5KU0Z1bmN0aW9uKCkKQEAgLTIwNyw4ICsyMDcsOCBAQCBib29sIEpTRnVuY3Rpb246OmdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TgogCiAgICAgICAgIGlmICghbG9jYXRpb24pIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUgPSBuZXcgKGV4ZWMpIEpTT2JqZWN0KHNjb3BlKCkuZ2xvYmFsT2JqZWN0KCktPmVtcHR5
T2JqZWN0U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3QoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzLCBEb250RW51bSk7Ci0gICAgICAg
ICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBl
LCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IHRoaXMsIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0
ZSB8IERvbnRFbnVtKTsKICAgICAgICAgICAgIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24o
cHJvcGVydHlOYW1lKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOWI2N2RiYjczNGY1MGZhMjkwMTJmNzZk
N2RlNDI5NTM1NWY2MmI2Yy4uYmQyYmYwN2E2YmZlODliYjhjZGU2MWUwNDA0NzgyOGQ0NGY1OWEx
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtODAsMTYgKzgwLDE2IEBAIHN0YXRpYyBjb25zdCBpbnQgaW5pdGlhbFRpY2tDb3Vu
dFRocmVzaG9sZCA9IDI1NTsKIC8vIFByZWZlcnJlZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJl
dHdlZW4gZWFjaCB0aW1lb3V0IGNoZWNrCiBzdGF0aWMgY29uc3QgaW50IHByZWZlcnJlZFNjcmlw
dENoZWNrVGltZUludGVydmFsID0gMTAwMDsKIAotc3RhdGljIGlubGluZSB2b2lkIG1hcmtJZk5l
ZWRlZChNYXJrU3RhY2smIG1hcmtTdGFjaywgSlNWYWx1ZSB2KQorc3RhdGljIGlubGluZSB2b2lk
IG1hcmtJZk5lZWRlZChNYXJrU3RhY2smIG1hcmtTdGFjaywgSlNDZWxsKiogdikKIHsKLSAgICBp
ZiAodikKKyAgICBpZiAoKnYpCiAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQodik7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgdm9pZCBtYXJrSWZOZWVkZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIGNvbnN0
IFJlZlB0cjxTdHJ1Y3R1cmU+JiBzKQogewotICAgIGlmIChzKQotICAgICAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBzLT5zdG9yZWRQcm90b3R5cGUoKSk7CisgICAgaWYgKHMgJiYgcy0+c3Rv
cmVkUHJvdG90eXBlKCkpCisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQocy0+c3RvcmVkUHJvdG90
eXBlU2xvdCgpKTsKIH0KIAogSlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCgpCkBAIC0y
MDIsMTE3ICsyMDIsMTE3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJv
dG90eXBlKQogCiAgICAgLy8gUHJvdG90eXBlcwogCi0gICAgZCgpLT5mdW5jdGlvblByb3RvdHlw
ZSA9IG5ldyAoZXhlYykgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgdGhpcywgRnVuY3Rpb25Qcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpOyAvLyBUaGUgcmVhbCBwcm90b3R5cGUg
d2lsbCBiZSBzZXQgb25jZSBPYmplY3RQcm90b3R5cGUgaXMgY3JlYXRlZC4KLSAgICBkKCktPnBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlID0gUHJvdG90eXBlRnVuY3Rpb246OmNyZWF0ZVN0cnVj
dHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKTsKLSAgICBkKCktPmludGVybmFsRnVuY3Rpb25T
dHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlv
blByb3RvdHlwZSk7CisgICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEZ1bmN0aW9uUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEZ1
bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKSk7IC8vIFRoZSByZWFs
IHByb3RvdHlwZSB3aWxsIGJlIHNldCBvbmNlIE9iamVjdFByb3RvdHlwZSBpcyBjcmVhdGVkLgor
ICAgIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUgPSBQcm90b3R5cGVGdW5jdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIGQoKS0+
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVj
dHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBOYXRpdmVGdW5jdGlvbldy
YXBwZXIqIGNhbGxGdW5jdGlvbiA9IDA7CiAgICAgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKiBhcHBs
eUZ1bmN0aW9uID0gMDsKICAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblBy
b3BlcnRpZXMoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQo
KSwgJmNhbGxGdW5jdGlvbiwgJmFwcGx5RnVuY3Rpb24pOwotICAgIGQoKS0+Y2FsbEZ1bmN0aW9u
ID0gY2FsbEZ1bmN0aW9uOwotICAgIGQoKS0+YXBwbHlGdW5jdGlvbiA9IGFwcGx5RnVuY3Rpb247
Ci0gICAgZCgpLT5vYmplY3RQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE9iamVjdFByb3RvdHlwZShl
eGVjLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSksIGQo
KS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIGQoKS0+ZnVuY3Rpb25Q
cm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihkKCkt
Pm9iamVjdFByb3RvdHlwZSk7CisgICAgZCgpLT5jYWxsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKKyAgICBkKCktPmFwcGx5RnVuY3Rpb24uc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CisgICAgZCgpLT5vYmpl
Y3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBPYmpl
Y3RQcm90b3R5cGUoZXhlYywgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
anNOdWxsKCkpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CisgICAg
ZCgpLT5mdW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRU
cmFuc2l0aW9uKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIAogICAgIGQoKS0+ZW1wdHlP
YmplY3RTdHJ1Y3R1cmUgPSBkKCktPm9iamVjdFByb3RvdHlwZS0+aW5oZXJpdG9ySUQoKTsKIAot
ICAgIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUgPSBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgZCgpLT5jYWxsYmFja0Z1bmN0aW9uU3RydWN0
dXJlID0gSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblBy
b3RvdHlwZSk7Ci0gICAgZCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUgPSBBcmd1bWVudHM6OmNyZWF0
ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSk7Ci0gICAgZCgpLT5jYWxsYmFja0NvbnN0
cnVjdG9yU3RydWN0dXJlID0gSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5vYmplY3RQcm90b3R5cGUpOwotICAgIGQoKS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUg
PSBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD46OmNyZWF0ZVN0cnVj
dHVyZShkKCktPm9iamVjdFByb3RvdHlwZSk7CisgICAgZCgpLT5mdW5jdGlvblN0cnVjdHVyZSA9
IEpTRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgp
KTsKKyAgICBkKCktPmNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrRnVuY3Rp
b246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBk
KCktPmFyZ3VtZW50c1N0cnVjdHVyZSA9IEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+
b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPmNhbGxiYWNrQ29uc3RydWN0b3JTdHJ1
Y3R1cmUgPSBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVj
dFByb3RvdHlwZS5nZXQoKSk7CisgICAgZCgpLT5jYWxsYmFja09iamVjdFN0cnVjdHVyZSA9IEpT
Q2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJl
KGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+YXJyYXlQcm90b3R5cGUg
PSBuZXcgKGV4ZWMpIEFycmF5UHJvdG90eXBlKHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpKTsKLSAgICBkKCktPmFycmF5U3RydWN0dXJl
ID0gSlNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+YXJyYXlQcm90b3R5cGUpOwotICAgIGQo
KS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlID0gUmVnRXhwTWF0Y2hlc0FycmF5OjpjcmVh
dGVTdHJ1Y3R1cmUoZCgpLT5hcnJheVByb3RvdHlwZSk7CisgICAgZCgpLT5hcnJheVByb3RvdHlw
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEFycmF5UHJvdG90eXBl
KHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5
cGUuZ2V0KCkpKSk7CisgICAgZCgpLT5hcnJheVN0cnVjdHVyZSA9IEpTQXJyYXk6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPmFycmF5UHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPnJlZ0V4cE1hdGNo
ZXNBcnJheVN0cnVjdHVyZSA9IFJlZ0V4cE1hdGNoZXNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+YXJyYXlQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5zdHJpbmdQcm90b3R5cGUgPSBu
ZXcgKGV4ZWMpIFN0cmluZ1Byb3RvdHlwZShleGVjLCB0aGlzLCBTdHJpbmdQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSkpOwotICAgIGQoKS0+c3RyaW5nT2Jq
ZWN0U3RydWN0dXJlID0gU3RyaW5nT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5zdHJpbmdQ
cm90b3R5cGUpOworICAgIGQoKS0+c3RyaW5nUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIG5ldyAoZXhlYykgU3RyaW5nUHJvdG90eXBlKGV4ZWMsIHRoaXMsIFN0cmluZ1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwor
ICAgIGQoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlID0gU3RyaW5nT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUoZCgpLT5zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5ib29sZWFuUHJv
dG90eXBlID0gbmV3IChleGVjKSBCb29sZWFuUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEJvb2xlYW5Q
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSksIGQoKS0+cHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIGQoKS0+Ym9vbGVhbk9iamVjdFN0
cnVjdHVyZSA9IEJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmJvb2xlYW5Qcm90
b3R5cGUpOworICAgIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBuZXcgKGV4ZWMpIEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgdGhpcywgQm9vbGVhblBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgp
LT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOworICAgIGQoKS0+Ym9vbGVhbk9i
amVjdFN0cnVjdHVyZSA9IEJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmJvb2xl
YW5Qcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5udW1iZXJQcm90b3R5cGUgPSBuZXcgKGV4
ZWMpIE51bWJlclByb3RvdHlwZShleGVjLCB0aGlzLCBOdW1iZXJQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCkpOwotICAgIGQoKS0+bnVtYmVyT2JqZWN0U3RydWN0dXJlID0gTnVtYmVyT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5udW1iZXJQcm90b3R5cGUpOworICAgIGQoKS0+bnVt
YmVyUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTnVt
YmVyUHJvdG90eXBlKGV4ZWMsIHRoaXMsIE51bWJlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVj
dHVyZS5nZXQoKSkpOworICAgIGQoKS0+bnVtYmVyT2JqZWN0U3RydWN0dXJlID0gTnVtYmVyT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5udW1iZXJQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAg
ZCgpLT5kYXRlUHJvdG90eXBlID0gbmV3IChleGVjKSBEYXRlUHJvdG90eXBlKGV4ZWMsIHRoaXMs
IERhdGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSkpOwot
ICAgIGQoKS0+ZGF0ZVN0cnVjdHVyZSA9IERhdGVJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+ZGF0ZVByb3RvdHlwZSk7CisgICAgZCgpLT5kYXRlUHJvdG90eXBlLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgRGF0ZVByb3RvdHlwZShleGVjLCB0aGlzLCBEYXRl
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7
CisgICAgZCgpLT5kYXRlU3RydWN0dXJlID0gRGF0ZUluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5kYXRlUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+cmVnRXhwUHJvdG90eXBlID0g
bmV3IChleGVjKSBSZWdFeHBQcm90b3R5cGUoZXhlYywgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpLCBkKCktPnByb3RvdHlwZUZ1bmN0
aW9uU3RydWN0dXJlLmdldCgpKTsKLSAgICBkKCktPnJlZ0V4cFN0cnVjdHVyZSA9IFJlZ0V4cE9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+cmVnRXhwUHJvdG90eXBlKTsKKyAgICBkKCktPnJl
Z0V4cFByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJl
Z0V4cFByb3RvdHlwZShleGVjLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCkpKTsKKyAgICBkKCktPnJlZ0V4cFN0cnVjdHVyZSA9IFJlZ0V4cE9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKGQoKS0+cmVnRXhwUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+
bWV0aG9kQ2FsbER1bW15ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgZCgpLT5t
ZXRob2RDYWxsRHVtbXkuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYykpOwogCi0gICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlID0g
bmV3IChleGVjKSBFcnJvclByb3RvdHlwZShleGVjLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSk7CisgICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlID0g
bmV3IChleGVjKSBFcnJvclByb3RvdHlwZShleGVjLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7CiAgICAgZCgpLT5lcnJvclN0cnVjdHVyZSA9IEVycm9y
SW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShlcnJvclByb3RvdHlwZSk7CiAKICAgICAvLyBDb25z
dHJ1Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE9i
amVjdENvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSksIGQoKS0+b2JqZWN0UHJvdG90eXBlLCBkKCkt
PnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKLSAgICBKU0NlbGwqIGZ1bmN0aW9u
Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgdGhpcywg
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5
cGUpLCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlKTsKLSAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0
b3IgPSBuZXcgKGV4ZWMpIEFycmF5Q29uc3RydWN0b3IoZXhlYywgdGhpcywgQXJyYXlDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPmFycmF5
UHJvdG90eXBlLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKLSAgICBK
U0NlbGwqIHN0cmluZ0NvbnN0cnVjdG9yID0gbmV3IChleGVjKSBTdHJpbmdDb25zdHJ1Y3Rvcihl
eGVjLCB0aGlzLCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rp
b25Qcm90b3R5cGUpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCBkKCkt
PnN0cmluZ1Byb3RvdHlwZSk7Ci0gICAgSlNDZWxsKiBib29sZWFuQ29uc3RydWN0b3IgPSBuZXcg
KGV4ZWMpIEJvb2xlYW5Db25zdHJ1Y3RvcihleGVjLCB0aGlzLCBCb29sZWFuQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKSwgZCgpLT5ib29sZWFuUHJv
dG90eXBlKTsKLSAgICBKU0NlbGwqIG51bWJlckNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBOdW1i
ZXJDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPm51bWJlclByb3RvdHlwZSk7Ci0gICAg
SlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIERhdGVDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJv
dG90eXBlKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgZCgpLT5kYXRl
UHJvdG90eXBlKTsKKyAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gbmV3IChleGVjKSBP
YmplY3RDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBkKCktPm9iamVjdFByb3RvdHlw
ZS5nZXQoKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7CisgICAgSlND
ZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBGdW5jdGlvbkNvbnN0cnVjdG9y
KGV4ZWMsIHRoaXMsIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBBcnJheUNvbnN0cnVjdG9y
KGV4ZWMsIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5hcnJheVByb3RvdHlwZS5nZXQoKSwgZCgpLT5wcm90
b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7CisgICAgSlNDZWxsKiBzdHJpbmdDb25zdHJ1
Y3RvciA9IG5ldyAoZXhlYykgU3RyaW5nQ29uc3RydWN0b3IoZXhlYywgdGhpcywgU3RyaW5nQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
ZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgZCgpLT5zdHJpbmdQcm90b3R5
cGUuZ2V0KCkpOworICAgIEpTQ2VsbCogYm9vbGVhbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBC
b29sZWFuQ29uc3RydWN0b3IoZXhlYywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+Ym9vbGVhblByb3Rv
dHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBudW1iZXJDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykg
TnVtYmVyQ29uc3RydWN0b3IoZXhlYywgdGhpcywgTnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5udW1iZXJQcm90b3R5
cGUuZ2V0KCkpOworICAgIEpTQ2VsbCogZGF0ZUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBEYXRl
Q29uc3RydWN0b3IoZXhlYywgdGhpcywgRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCksIGQoKS0+ZGF0ZVByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICBkKCktPnJlZ0V4
cENvbnN0cnVjdG9yID0gbmV3IChleGVjKSBSZWdFeHBDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBS
ZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUp
LCBkKCktPnJlZ0V4cFByb3RvdHlwZSk7CisgICAgZCgpLT5yZWdFeHBDb25zdHJ1Y3Rvci5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJlZ0V4cENvbnN0cnVjdG9yKGV4
ZWMsIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIGQoKS0+cmVnRXhwUHJvdG90eXBlLmdldCgpKSk7CiAKLSAgICBk
KCktPmVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEVycm9yQ29uc3RydWN0b3IoZXhlYywg
dGhpcywgRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90
b3R5cGUpLCBlcnJvclByb3RvdHlwZSk7CisgICAgZCgpLT5lcnJvckNvbnN0cnVjdG9yLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgRXJyb3JDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIGVycm9yUHJvdG90eXBlKSk7CiAKICAgICBSZWZQdHI8U3RydWN0dXJl
PiBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoZXJyb3JQcm90b3R5cGUpOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5h
dGl2ZUVycm9yU3RydWN0dXJlID0gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpOwotICAgIGQoKS0+ZXZhbEVycm9yQ29uc3RydWN0
b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZl
RXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiRXZhbEVycm9y
Iik7Ci0gICAgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVy
cm9yUHJvdG90eXBlU3RydWN0dXJlLCAiUmFuZ2VFcnJvciIpOwotICAgIGQoKS0+cmVmZXJlbmNl
RXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1
cmUsICJSZWZlcmVuY2VFcnJvciIpOwotICAgIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvciA9
IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJv
clN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJTeW50YXhFcnJvciIp
OwotICAgIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9y
UHJvdG90eXBlU3RydWN0dXJlLCAiVHlwZUVycm9yIik7Ci0gICAgZCgpLT5VUklFcnJvckNvbnN0
cnVjdG9yID0gbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5h
dGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVy
cm9yIik7Ci0KLSAgICBkKCktPm9iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG9iamVjdENv
bnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZS0+cHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBkKCktPmFycmF5UHJv
dG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIGQo
KS0+Ym9vbGVhblByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGJvb2xlYW5Db25zdHJ1Y3RvciwgRG9u
dEVudW0pOwotICAgIGQoKS0+c3RyaW5nUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwgc3RyaW5nQ29u
c3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBkKCktPm51bWJlclByb3RvdHlwZS0+cHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIG51bWJlckNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5kYXRlUHJvdG90eXBl
LT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5yZWdF
eHBQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBkKCktPnJlZ0V4cENvbnN0cnVjdG9yLCBEb250RW51
bSk7Ci0gICAgZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBkKCktPmVycm9yQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiBuYXRpdmVFcnJvclN0cnVjdHVy
ZSA9IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9u
UHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPmV2YWxFcnJvckNvbnN0cnVjdG9yLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcihl
eGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1
Y3R1cmUsICJFdmFsRXJyb3IiKSk7CisgICAgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3Iuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSwgIlJhbmdlRXJyb3IiKSk7CisgICAgZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0
cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJy
b3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIpKTsKKyAgICBkKCktPnN5bnRh
eEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVj
KSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlN5bnRheEVycm9yIikpOworICAgIGQo
KS0+dHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3
IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlR5cGVFcnJvciIpKTsKKyAg
ICBkKCktPlVSSUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
bmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9y
U3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVycm9yIikpOwor
CisgICAgZCgpLT5vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgZCgpLT5mdW5jdGlvblByb3Rv
dHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3Rv
ciwgRG9udEVudW0pOworICAgIGQoKS0+YXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuY29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBkKCktPmJv
b2xlYW5Qcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGJvb2xlYW5D
b25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIGQoKS0+c3RyaW5nUHJvdG90eXBlLT5wdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBzdHJpbmdDb25zdHJ1Y3RvciwgRG9udEVudW0pOwor
ICAgIGQoKS0+bnVtYmVyUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCBudW1iZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIGQoKS0+ZGF0ZVByb3RvdHlwZS0+
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51
bSk7CisgICAgZCgpLT5yZWdFeHBQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBlcnJv
clByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZCgpLT5lcnJvckNv
bnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAKICAgICAvLyBTZXQgZ2xvYmFsIGNvbnN0cnVj
dG9ycwogCiAgICAgLy8gRklYTUU6IFRoZXNlIHByb3BlcnRpZXMgY291bGQgYmUgaGFuZGxlZCBi
eSBhIHN0YXRpYyBoYXNoIHRhYmxlLgogCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSwgb2JqZWN0Q29uc3RydWN0b3IsIERv
bnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZp
ZXIoZXhlYywgIkZ1bmN0aW9uIiksIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkFy
cmF5IiksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkJvb2xlYW4iKSwgYm9vbGVhbkNv
bnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihJZGVudGlmaWVyKGV4ZWMsICJTdHJpbmciKSwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRF
bnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIo
ZXhlYywgIk51bWJlciIpLCBudW1iZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiRGF0ZSIpLCBk
YXRlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlJlZ0V4cCIpLCBkKCktPnJlZ0V4cENvbnN0cnVj
dG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJ
ZGVudGlmaWVyKGV4ZWMsICJFcnJvciIpLCBkKCktPmVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVt
KTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhl
YywgIkV2YWxFcnJvciIpLCBkKCktPmV2YWxFcnJvckNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0g
ICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJS
YW5nZUVycm9yIiksIGQoKS0+cmFuZ2VFcnJvckNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJSZWZl
cmVuY2VFcnJvciIpLCBkKCktPnJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywg
IlN5bnRheEVycm9yIiksIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOwot
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAi
VHlwZUVycm9yIiksIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlVSSUVy
cm9yIiksIGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJPYmplY3QiKSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCAiRnVuY3Rpb24iKSwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJBcnJheSIpLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZXhlYywgIkJvb2xlYW4iKSwgYm9vbGVhbkNvbnN0cnVjdG9yLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlN0cmluZyIpLCBzdHJpbmdDb25zdHJ1Y3Rvciwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJOdW1iZXIiKSwgbnVtYmVyQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRGF0ZSIpLCBkYXRlQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVnRXhwIiksIGQoKS0+cmVnRXhw
Q29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRXJyb3Ii
KSwgZCgpLT5lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
ZXhlYywgIkV2YWxFcnJvciIpLCBkKCktPmV2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlJhbmdlRXJyb3IiKSwgZCgpLT5yYW5nZUVycm9y
Q29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVmZXJl
bmNlRXJyb3IiKSwgZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51
bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIElkZW50aWZpZXIoZXhlYywgIlN5bnRheEVycm9yIiksIGQoKS0+c3ludGF4RXJyb3JD
b25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJUeXBlRXJy
b3IiKSwgZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJVUklFcnJvciIpLCBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCks
IERvbnRFbnVtKTsKIAogICAgIC8vIFNldCBnbG9iYWwgdmFsdWVzLgogICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJ
ZGVudGlmaWVyKGV4ZWMsICJNYXRoIiksIG5ldyAoZXhlYykgTWF0aE9iamVjdChleGVjLCB0aGlz
LCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlKSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZp
ZXIoZXhlYywgIk1hdGgiKSwgbmV3IChleGVjKSBNYXRoT2JqZWN0KGV4ZWMsIHRoaXMsIE1hdGhP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250
RW51bSB8IERvbnREZWxldGUpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmll
cihleGVjLCAiTmFOIiksIGpzTmFOKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIkluZmluaXR5
IiksIGpzTnVtYmVyKEluZiksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgInVuZGVmaW5lZCIpLCBq
c1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJKU09OIiksIG5ldyAoZXhlYykg
SlNPTk9iamVjdCh0aGlzLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQ
cm90b3R5cGUpKSwgRG9udEVudW0gfCBEb250RGVsZXRlKQorICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8oSWRlbnRpZmllcihleGVjLCAiSlNPTiIpLCBuZXcgKGV4ZWMpIEpTT05PYmplY3QodGhp
cywgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgp
KSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSkKICAgICB9OwogCiAgICAgYWRkU3RhdGljR2xvYmFs
cyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKIAogICAg
IC8vIFNldCBnbG9iYWwgZnVuY3Rpb25zLgogCi0gICAgZCgpLT5ldmFsRnVuY3Rpb24gPSBuZXcg
KGV4ZWMpIEdsb2JhbEV2YWxGdW5jdGlvbihleGVjLCB0aGlzLCBHbG9iYWxFdmFsRnVuY3Rpb246
OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKSwgMSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmV2YWwsIGdsb2JhbEZ1bmNFdmFsLCB0aGlzKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIGQoKS0+ZXZhbEZ1bmN0aW9uLCBEb250RW51bSk7
CisgICAgZCgpLT5ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3
IChleGVjKSBHbG9iYWxFdmFsRnVuY3Rpb24oZXhlYywgdGhpcywgR2xvYmFsRXZhbEZ1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIDEsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5ldmFsLCBnbG9iYWxGdW5jRXZhbCwgdGhpcykpOworICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgZCgpLT5ldmFsRnVuY3Rpb24uZ2V0
KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDIsIElkZW50aWZpZXIoZXhlYywgInBhcnNl
SW50IiksIGdsb2JhbEZ1bmNQYXJzZUludCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEs
IElkZW50aWZpZXIoZXhlYywgInBhcnNlRmxvYXQiKSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQpLCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBu
ZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCB0aGlzLCBkKCktPnByb3RvdHlw
ZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJpc05hTiIpLCBn
bG9iYWxGdW5jSXNOYU4pLCBEb250RW51bSk7CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgc2V0UHJv
dG90eXBlKHByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCogb2xkTGFzdEluUHJvdG90eXBlQ2hh
aW4gPSBsYXN0SW5Qcm90b3R5cGVDaGFpbih0aGlzKTsKLSAgICBKU09iamVjdCogb2JqZWN0UHJv
dG90eXBlID0gZCgpLT5vYmplY3RQcm90b3R5cGU7CisgICAgSlNPYmplY3QqIG9iamVjdFByb3Rv
dHlwZSA9IGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpOwogICAgIGlmIChvbGRMYXN0SW5Qcm90
b3R5cGVDaGFpbiAhPSBvYmplY3RQcm90b3R5cGUpCiAgICAgICAgIG9sZExhc3RJblByb3RvdHlw
ZUNoYWluLT5zZXRQcm90b3R5cGUob2JqZWN0UHJvdG90eXBlKTsKIH0KQEAgLTM0OSwyOSArMzQ5
LDI5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtT
dGFjaykKICAgICBmb3IgKEhhc2hTZXQ8R2xvYmFsQ29kZUJsb2NrKj46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gY29kZUJsb2NrcygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgKCpp
dCktPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKIAotICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
IGQoKS0+ZXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgp
LT5ldmFsRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgp
LT5yYW5nZUVycm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQo
KS0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgZCgpLT5zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCBkKCktPnR5cGVFcnJvckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IpOwotCi0gICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgZCgpLT5ldmFsRnVuY3Rpb24pOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQo
KS0+Y2FsbEZ1bmN0aW9uKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPmFwcGx5
RnVuY3Rpb24pOwotCi0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5vYmplY3RQcm90
b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZnVuY3Rpb25Qcm90b3R5
cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+YXJyYXlQcm90b3R5cGUpOwot
ICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+Ym9vbGVhblByb3RvdHlwZSk7Ci0gICAg
bWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5zdHJpbmdQcm90b3R5cGUpOwotICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+bnVtYmVyUHJvdG90eXBlKTsKLSAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBkKCktPmRhdGVQcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssIGQoKS0+cmVnRXhwUHJvdG90eXBlKTsKLQotICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssIGQoKS0+bWV0aG9kQ2FsbER1bW15KTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBk
KCktPnJlZ0V4cENvbnN0cnVjdG9yLnNsb3QoKSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgZCgpLT5lcnJvckNvbnN0cnVjdG9yLnNsb3QoKSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgZCgpLT5ldmFsRXJyb3JDb25zdHJ1Y3Rvci5zbG90KCkpOworICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssIGQoKS0+cmFuZ2VFcnJvckNvbnN0cnVjdG9yLnNsb3QoKSk7CisgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLnNsb3Qo
KSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5zeW50YXhFcnJvckNvbnN0cnVj
dG9yLnNsb3QoKSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT50eXBlRXJyb3JD
b25zdHJ1Y3Rvci5zbG90KCkpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+VVJJ
RXJyb3JDb25zdHJ1Y3Rvci5zbG90KCkpOworCisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywg
ZCgpLT5ldmFsRnVuY3Rpb24uc2xvdCgpKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBk
KCktPmNhbGxGdW5jdGlvbi5zbG90KCkpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQo
KS0+YXBwbHlGdW5jdGlvbi5zbG90KCkpOworCisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywg
ZCgpLT5vYmplY3RQcm90b3R5cGUuc2xvdCgpKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNr
LCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLnNsb3QoKSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgZCgpLT5hcnJheVByb3RvdHlwZS5zbG90KCkpOworICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5zbG90KCkpOworICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssIGQoKS0+c3RyaW5nUHJvdG90eXBlLnNsb3QoKSk7CisgICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgZCgpLT5udW1iZXJQcm90b3R5cGUuc2xvdCgpKTsKKyAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBkKCktPmRhdGVQcm90b3R5cGUuc2xvdCgpKTsKKyAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBkKCktPnJlZ0V4cFByb3RvdHlwZS5zbG90KCkpOworCisgICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgZCgpLT5tZXRob2RDYWxsRHVtbXkuc2xvdCgpKTsKIAogICAgIG1h
cmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZXJyb3JTdHJ1Y3R1cmUpOwogICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssIGQoKS0+YXJndW1lbnRzU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDI0YmMyZjg4YjcxYzIz
ZjVjZTBhYTA5YTlmMWZlZGZhOTUzM2Y1ODAuLjJjMmQzNzljYjczMzk4MGU4NDMwZmZmODE5NTc5
ZTBmMzAwODliM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaApAQCAtNzMsMjYgKzczLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgLCBkZXN0cnVjdG9yKGRlc3RydWN0b3IpCiAgICAgICAgICAgICAgICAgLCByZWdpc3Rl
ckFycmF5U2l6ZSgwKQogICAgICAgICAgICAgICAgICwgZ2xvYmFsU2NvcGVDaGFpbihOb1Njb3Bl
Q2hhaW4oKSkKLSAgICAgICAgICAgICAgICAsIHJlZ0V4cENvbnN0cnVjdG9yKDApCi0gICAgICAg
ICAgICAgICAgLCBlcnJvckNvbnN0cnVjdG9yKDApCi0gICAgICAgICAgICAgICAgLCBldmFsRXJy
b3JDb25zdHJ1Y3RvcigwKQotICAgICAgICAgICAgICAgICwgcmFuZ2VFcnJvckNvbnN0cnVjdG9y
KDApCi0gICAgICAgICAgICAgICAgLCByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKDApCi0gICAg
ICAgICAgICAgICAgLCBzeW50YXhFcnJvckNvbnN0cnVjdG9yKDApCi0gICAgICAgICAgICAgICAg
LCB0eXBlRXJyb3JDb25zdHJ1Y3RvcigwKQotICAgICAgICAgICAgICAgICwgVVJJRXJyb3JDb25z
dHJ1Y3RvcigwKQotICAgICAgICAgICAgICAgICwgZXZhbEZ1bmN0aW9uKDApCi0gICAgICAgICAg
ICAgICAgLCBjYWxsRnVuY3Rpb24oMCkKLSAgICAgICAgICAgICAgICAsIGFwcGx5RnVuY3Rpb24o
MCkKLSAgICAgICAgICAgICAgICAsIG9iamVjdFByb3RvdHlwZSgwKQotICAgICAgICAgICAgICAg
ICwgZnVuY3Rpb25Qcm90b3R5cGUoMCkKLSAgICAgICAgICAgICAgICAsIGFycmF5UHJvdG90eXBl
KDApCi0gICAgICAgICAgICAgICAgLCBib29sZWFuUHJvdG90eXBlKDApCi0gICAgICAgICAgICAg
ICAgLCBzdHJpbmdQcm90b3R5cGUoMCkKLSAgICAgICAgICAgICAgICAsIG51bWJlclByb3RvdHlw
ZSgwKQotICAgICAgICAgICAgICAgICwgZGF0ZVByb3RvdHlwZSgwKQotICAgICAgICAgICAgICAg
ICwgcmVnRXhwUHJvdG90eXBlKDApCi0gICAgICAgICAgICAgICAgLCBtZXRob2RDYWxsRHVtbXko
MCkKICAgICAgICAgICAgICAgICAsIHdlYWtSYW5kb20oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJh
bmRvbU51bWJlcigpICogKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSArIDEu
MCkpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgfQpAQCAtMTA5LDI5ICs4OSwyOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFNjb3BlQ2hhaW4gZ2xvYmFsU2NvcGVDaGFpbjsK
ICAgICAgICAgICAgIFJlZ2lzdGVyIGdsb2JhbENhbGxGcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxG
cmFtZUhlYWRlclNpemVdOwogCi0gICAgICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhw
Q29uc3RydWN0b3I7Ci0gICAgICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVj
dG9yOwotICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3Ry
dWN0b3I7Ci0gICAgICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29u
c3RydWN0b3I7Ci0gICAgICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VF
cnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciogc3lu
dGF4RXJyb3JDb25zdHJ1Y3RvcjsKLSAgICAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IHR5cGVFcnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciogVVJJRXJyb3JDb25zdHJ1Y3RvcjsKLQotICAgICAgICAgICAgR2xvYmFsRXZhbEZ1bmN0aW9u
KiBldmFsRnVuY3Rpb247Ci0gICAgICAgICAgICBOYXRpdmVGdW5jdGlvbldyYXBwZXIqIGNhbGxG
dW5jdGlvbjsKLSAgICAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciogYXBwbHlGdW5jdGlv
bjsKLQotICAgICAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGU7Ci0gICAg
ICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGU7Ci0gICAgICAgICAg
ICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGU7Ci0gICAgICAgICAgICBCb29sZWFuUHJv
dG90eXBlKiBib29sZWFuUHJvdG90eXBlOwotICAgICAgICAgICAgU3RyaW5nUHJvdG90eXBlKiBz
dHJpbmdQcm90b3R5cGU7Ci0gICAgICAgICAgICBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3Rv
dHlwZTsKLSAgICAgICAgICAgIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGU7Ci0gICAgICAg
ICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZTsKLQotICAgICAgICAgICAgSlNP
YmplY3QqIG1ldGhvZENhbGxEdW1teTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxSZWdFeHBD
b25zdHJ1Y3Rvcj4gcmVnRXhwQ29uc3RydWN0b3I7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8
RXJyb3JDb25zdHJ1Y3Rvcj4gZXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIFdyaXRlQmFy
cmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBldmFsRXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAg
ICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiByYW5nZUVycm9yQ29u
c3RydWN0b3I7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cj4gcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxO
YXRpdmVFcnJvckNvbnN0cnVjdG9yPiBzeW50YXhFcnJvckNvbnN0cnVjdG9yOworICAgICAgICAg
ICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IHR5cGVFcnJvckNvbnN0cnVj
dG9yOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IFVS
SUVycm9yQ29uc3RydWN0b3I7CisKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxHbG9iYWxFdmFs
RnVuY3Rpb24+IGV2YWxGdW5jdGlvbjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVG
dW5jdGlvbldyYXBwZXI+IGNhbGxGdW5jdGlvbjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxO
YXRpdmVGdW5jdGlvbldyYXBwZXI+IGFwcGx5RnVuY3Rpb247CisKKyAgICAgICAgICAgIFdyaXRl
QmFycmllcjxPYmplY3RQcm90b3R5cGU+IG9iamVjdFByb3RvdHlwZTsKKyAgICAgICAgICAgIFdy
aXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4gZnVuY3Rpb25Qcm90b3R5cGU7CisgICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IGFycmF5UHJvdG90eXBlOworICAgICAg
ICAgICAgV3JpdGVCYXJyaWVyPEJvb2xlYW5Qcm90b3R5cGU+IGJvb2xlYW5Qcm90b3R5cGU7Cisg
ICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3RyaW5nUHJvdG90eXBlPiBzdHJpbmdQcm90b3R5cGU7
CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8TnVtYmVyUHJvdG90eXBlPiBudW1iZXJQcm90b3R5
cGU7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8RGF0ZVByb3RvdHlwZT4gZGF0ZVByb3RvdHlw
ZTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IHJlZ0V4cFByb3Rv
dHlwZTsKKworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtZXRob2RDYWxsRHVt
bXk7CiAKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGFyZ3VtZW50c1N0cnVjdHVyZTsK
ICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGFycmF5U3RydWN0dXJlOwpAQCAtMjA5LDI4
ICsxODksMjggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYWNj
ZXNzb3JzIHJldHVybiBwcmlzdGluZSB2YWx1ZXMsIGV2ZW4gaWYgYSBzY3JpcHQgCiAgICAgICAg
IC8vIHJlcGxhY2VzIHRoZSBnbG9iYWwgb2JqZWN0J3MgYXNzb2NpYXRlZCBwcm9wZXJ0eS4KIAot
ICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBkKCktPnJlZ0V4cENvbnN0cnVjdG9yOyB9CisgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9y
KiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cmVnRXhwQ29uc3RydWN0
b3IuZ2V0KCk7IH0KIAotICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gZCgpLT5lcnJvckNvbnN0cnVjdG9yOyB9Ci0gICAgICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
ZCgpLT5ldmFsRXJyb3JDb25zdHJ1Y3RvcjsgfQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnJhbmdlRXJy
b3JDb25zdHJ1Y3RvcjsgfQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVu
Y2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5yZWZlcmVuY2VFcnJvckNv
bnN0cnVjdG9yOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHN5bnRheEVycm9y
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3I7
IH0KLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdHlwZUVycm9yQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBkKCktPnR5cGVFcnJvckNvbnN0cnVjdG9yOyB9Ci0gICAgICAgIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IqIFVSSUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBkKCktPlVSSUVycm9yQ29uc3RydWN0b3I7IH0KKyAgICAgICAgRXJyb3JDb25zdHJ1Y3Rvciog
ZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXJyb3JDb25zdHJ1Y3Rvci5n
ZXQoKTsgfQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0K
KyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICAg
ICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIGQoKS0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAg
ICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBzeW50YXhFcnJvckNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gZCgpLT5zeW50YXhFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgICAg
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHR5cGVFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgp
LT5VUklFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAKLSAgICAgICAgR2xvYmFsRXZhbEZ1bmN0
aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBkKCktPmV2YWxGdW5jdGlvbjsgfQor
ICAgICAgICBHbG9iYWxFdmFsRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGQoKS0+ZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAKLSAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBv
YmplY3RQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPm9iamVjdFByb3RvdHlwZTsgfQot
ICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBkKCktPmZ1bmN0aW9uUHJvdG90eXBlOyB9Ci0gICAgICAgIEFycmF5UHJvdG90eXBlKiBh
cnJheVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+YXJyYXlQcm90b3R5cGU7IH0KLSAg
ICAgICAgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IGQoKS0+Ym9vbGVhblByb3RvdHlwZTsgfQotICAgICAgICBTdHJpbmdQcm90b3R5cGUqIHN0cmlu
Z1Byb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+c3RyaW5nUHJvdG90eXBlOyB9Ci0gICAg
ICAgIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgp
LT5udW1iZXJQcm90b3R5cGU7IH0KLSAgICAgICAgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZGF0ZVByb3RvdHlwZTsgfQotICAgICAgICBSZWdFeHBQ
cm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cmVnRXhwUHJv
dG90eXBlOyB9CisgICAgICAgIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgRnVuY3Rp
b25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5mdW5j
dGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgICAgICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmFycmF5UHJvdG90eXBlLmdldCgpOyB9CisgICAg
ICAgIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBk
KCktPmJvb2xlYW5Qcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgU3RyaW5nUHJvdG90eXBlKiBz
dHJpbmdQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPnN0cmluZ1Byb3RvdHlwZS5nZXQo
KTsgfQorICAgICAgICBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIGQoKS0+bnVtYmVyUHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIERhdGVQcm90b3R5
cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmRhdGVQcm90b3R5cGUuZ2V0
KCk7IH0KKyAgICAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBkKCktPnJlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogCi0gICAgICAgIEpTT2JqZWN0
KiBtZXRob2RDYWxsRHVtbXkoKSBjb25zdCB7IHJldHVybiBkKCktPm1ldGhvZENhbGxEdW1teTsg
fQorICAgICAgICBKU09iamVjdCogbWV0aG9kQ2FsbER1bW15KCkgY29uc3QgeyByZXR1cm4gZCgp
LT5tZXRob2RDYWxsRHVtbXkuZ2V0KCk7IH0KIAogICAgICAgICBTdHJ1Y3R1cmUqIGFyZ3VtZW50
c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+YXJndW1lbnRzU3RydWN0dXJlLmdldCgp
OyB9CiAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBk
KCktPmFycmF5U3RydWN0dXJlLmdldCgpOyB9CkBAIC00NTcsMTIgKzQzNywxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHZhbHVlczsKICAg
ICAgICAgdmFsdWVzLmFwcGVuZChzaW5nbGVJdGVtVmFsdWUpOwotICAgICAgICByZXR1cm4gbmV3
IChleGVjKSBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1
cmUoKSwgdmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUo
KSwgdmFsdWVzKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJyYXko
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJy
YXlTdHJ1Y3R1cmUoKSwgdmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJh
eShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlT
dHJ1Y3R1cmUoKSwgdmFsdWVzKTsKICAgICB9CiAKICAgICBjbGFzcyBEeW5hbWljR2xvYmFsT2Jq
ZWN0U2NvcGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cAppbmRleCA1YTgyNTBmMDc3YzYzZWRmMDM3NThkMWU1ZDNlYTUwMWM1NDVhOGFlLi5lYmVhZDdi
OTFkNDFhYWZiZjcwMTQ3MDc4NGI0NjdlNjRmZWMxMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtODQsMTIgKzg0LDEzIEBAIHByaXZhdGU6
CiAgICAgcHVibGljOgogICAgICAgICBIb2xkZXIoSlNPYmplY3QqKTsKIAotICAgICAgICBKU09i
amVjdCogb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KKyAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0LmdldCgpOyB9CisgICAgICAgIEpT
Q2VsbCoqIG9iamVjdFNsb3QoKSB7IHJldHVybiBtX29iamVjdC5zbG90KCk7IH0KIAogICAgICAg
ICBib29sIGFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmllciYsIFVTdHJpbmdCdWlsZGVyJik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU09iamVjdCogY29uc3QgbV9vYmplY3Q7CisgICAg
ICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IG1fb2JqZWN0OwogICAgICAgICBjb25zdCBib29s
IG1faXNBcnJheTsKICAgICAgICAgYm9vbCBtX2lzSlNBcnJheTsKICAgICAgICAgdW5zaWduZWQg
bV9pbmRleDsKQEAgLTI1OCw3ICsyNTksNyBAQCB2b2lkIFN0cmluZ2lmaWVyOjptYXJrQWdncmVn
YXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgIGZvciAoU3RyaW5naWZpZXIqIHN0cmluZ2lm
aWVyID0gdGhpczsgc3RyaW5naWZpZXI7IHN0cmluZ2lmaWVyID0gc3RyaW5naWZpZXItPm1fbmV4
dFN0cmluZ2lmaWVyVG9NYXJrKSB7CiAgICAgICAgIHNpemVfdCBzaXplID0gbV9ob2xkZXJTdGFj
ay5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX2hvbGRlclN0YWNrW2ldLm9iamVjdCgpKTsKKyAg
ICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9ob2xkZXJTdGFja1tpXS5vYmplY3RTbG90KCkp
OwogICAgIH0KIH0KIApAQCAtMjY5LDcgKzI3MCw3IEBAIEpTVmFsdWUgU3RyaW5naWZpZXI6OnN0
cmluZ2lmeShKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBQ
cm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwgZW1wdHlQcm9wZXJ0eU5hbWUobV9leGVjLT5nbG9i
YWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKLSAgICBvYmplY3QtPnB1
dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZp
ZXIsIHZhbHVlKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKSwg
bV9leGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCB2YWx1
ZSk7CiAKICAgICBVU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgaWYgKGFwcGVuZFN0cmluZ2lm
aWVkVmFsdWUocmVzdWx0LCB2YWx1ZSwgb2JqZWN0LCBlbXB0eVByb3BlcnR5TmFtZSkgIT0gU3Ry
aW5naWZ5U3VjY2VlZGVkKQpAQCAtNDk5LDcgKzUwMCw3IEBAIGJvb2wgU3RyaW5naWZpZXI6Okhv
bGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0cmlu
Z0J1CiAgICAgLy8gRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplLgogICAgIGlmICghbV9p
bmRleCkgewogICAgICAgICBpZiAobV9pc0FycmF5KSB7Ci0gICAgICAgICAgICBtX2lzSlNBcnJh
eSA9IGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdCk7CisgICAgICAgICAg
ICBtX2lzSlNBcnJheSA9IGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdC5n
ZXQoKSk7CiAgICAgICAgICAgICBtX3NpemUgPSBtX29iamVjdC0+Z2V0KGV4ZWMsIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTUzMiwxMCAr
NTMzLDEwIEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0
cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0cmluZ0J1CiAgICAgaWYgKG1faXNBcnJheSkgewog
ICAgICAgICAvLyBHZXQgdGhlIHZhbHVlLgogICAgICAgICBKU1ZhbHVlIHZhbHVlOwotICAgICAg
ICBpZiAobV9pc0pTQXJyYXkgJiYgYXNBcnJheShtX29iamVjdCktPmNhbkdldEluZGV4KGluZGV4
KSkKLSAgICAgICAgICAgIHZhbHVlID0gYXNBcnJheShtX29iamVjdCktPmdldEluZGV4KGluZGV4
KTsKKyAgICAgICAgaWYgKG1faXNKU0FycmF5ICYmIGFzQXJyYXkobV9vYmplY3QuZ2V0KCkpLT5j
YW5HZXRJbmRleChpbmRleCkpCisgICAgICAgICAgICB2YWx1ZSA9IGFzQXJyYXkobV9vYmplY3Qu
Z2V0KCkpLT5nZXRJbmRleChpbmRleCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QobV9vYmplY3QpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qo
bV9vYmplY3QuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFtX29iamVjdC0+Z2V0T3duUHJvcGVy
dHlTbG90KGV4ZWMsIGluZGV4LCBzbG90KSkKICAgICAgICAgICAgICAgICBzbG90LnNldFVuZGVm
aW5lZCgpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNTQ5LDEw
ICs1NTAsMTAgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVydHko
U3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBVU3RyaW5nQnUKICAgICAgICAgc3RyaW5naWZpZXIu
c3RhcnROZXdMaW5lKGJ1aWxkZXIpOwogCiAgICAgICAgIC8vIEFwcGVuZCB0aGUgc3RyaW5naWZp
ZWQgdmFsdWUuCi0gICAgICAgIHN0cmluZ2lmeVJlc3VsdCA9IHN0cmluZ2lmaWVyLmFwcGVuZFN0
cmluZ2lmaWVkVmFsdWUoYnVpbGRlciwgdmFsdWUsIG1fb2JqZWN0LCBpbmRleCk7CisgICAgICAg
IHN0cmluZ2lmeVJlc3VsdCA9IHN0cmluZ2lmaWVyLmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoYnVp
bGRlciwgdmFsdWUsIG1fb2JqZWN0LmdldCgpLCBpbmRleCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gR2V0IHRoZSB2YWx1ZS4KLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QobV9vYmplY3Qp
OworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChtX29iamVjdC5nZXQoKSk7CiAgICAgICAgIElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSA9IG1fcHJvcGVydHlOYW1lcy0+cHJvcGVydHlOYW1lVmVj
dG9yKClbaW5kZXhdOwogICAgICAgICBpZiAoIW1fb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3Qo
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
NTc0LDcgKzU3NSw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3Bl
cnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0cmluZ0J1CiAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOwogCiAgICAgICAgIC8vIEFwcGVuZCB0aGUgc3RyaW5naWZpZWQgdmFs
dWUuCi0gICAgICAgIHN0cmluZ2lmeVJlc3VsdCA9IHN0cmluZ2lmaWVyLmFwcGVuZFN0cmluZ2lm
aWVkVmFsdWUoYnVpbGRlciwgdmFsdWUsIG1fb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBzdHJpbmdpZnlSZXN1bHQgPSBzdHJpbmdpZmllci5hcHBlbmRTdHJpbmdpZmllZFZhbHVlKGJ1
aWxkZXIsIHZhbHVlLCBtX29iamVjdC5nZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICB9CiAKICAg
ICAvLyBGcm9tIHRoaXMgcG9pbnQgb24sIG5vIGFjY2VzcyB0byB0aGUgdGhpcyBwb2ludGVyIG9y
IHRvIGFueSBtZW1iZXJzLCBiZWNhdXNlIHRoZQpAQCAtNjQxLDEzICs2NDIsMTMgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIEpTVmFsdWUgYXJnc1tdID0geyBwcm9wZXJ0eSwgdW5maWx0ZXJl
ZCB9OwogICAgICAgICBBcmdMaXN0IGFyZ0xpc3QoYXJncywgMik7Ci0gICAgICAgIHJldHVybiBj
YWxsKG1fZXhlYywgbV9mdW5jdGlvbiwgbV9jYWxsVHlwZSwgbV9jYWxsRGF0YSwgdGhpc09iaiwg
YXJnTGlzdCk7CisgICAgICAgIHJldHVybiBjYWxsKG1fZXhlYywgbV9mdW5jdGlvbi5nZXQoKSwg
bV9jYWxsVHlwZSwgbV9jYWxsRGF0YSwgdGhpc09iaiwgYXJnTGlzdCk7CiAgICAgfQogCiAgICAg
ZnJpZW5kIGNsYXNzIEhvbGRlcjsKIAogICAgIEV4ZWNTdGF0ZSogbV9leGVjOwotICAgIEpTT2Jq
ZWN0KiBtX2Z1bmN0aW9uOworICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IG1fZnVuY3Rpb247
CiAgICAgQ2FsbFR5cGUgbV9jYWxsVHlwZTsKICAgICBDYWxsRGF0YSBtX2NhbGxEYXRhOwogfTsK
QEAgLTcyNiw3ICs3MjcsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNW
YWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgICAgICBhcnJheS0+ZGVsZXRlUHJvcGVy
dHkobV9leGVjLCBpbmRleFN0YWNrLmxhc3QoKSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBh
cnJheSkgJiYgYXJyYXktPmNhblNldEluZGV4KGluZGV4U3RhY2subGFzdCgpKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFycmF5LT5zZXRJbmRleChpbmRleFN0YWNrLmxhc3QoKSwgZmlsdGVy
ZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS0+c2V0SW5kZXgobV9leGVj
LT5nbG9iYWxEYXRhKCksIGluZGV4U3RhY2subGFzdCgpLCBmaWx0ZXJlZFZhbHVlKTsKICAgICAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXktPnB1dCht
X2V4ZWMsIGluZGV4U3RhY2subGFzdCgpLCBmaWx0ZXJlZFZhbHVlKTsKICAgICAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggNmVj
YzczZjhjN2JkZGMwYWU2ODM1MTJjYTU2MjY5YjdjZjZkNzQ5Yi4uN2ExZTdlMTA1Yzg4MzkyNzZi
ZTI2YTUxZTdjYmFkZmNkMmQ1NmVmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgSlNPYmplY3Q6OmRlZmluZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNP
CiAgICAgSlNWYWx1ZSBvYmplY3QgPSBnZXREaXJlY3QocHJvcGVydHlOYW1lKTsKICAgICBpZiAo
b2JqZWN0ICYmIG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7CiAgICAgICAgIEFTU0VSVChtX3N0
cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICAgICAgYXNHZXR0ZXJT
ZXR0ZXIob2JqZWN0KS0+c2V0R2V0dGVyKGdldHRlckZ1bmN0aW9uKTsKKyAgICAgICAgYXNHZXR0
ZXJTZXR0ZXIob2JqZWN0KS0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2V0dGVyRnVu
Y3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9p
ZCBKU09iamVjdDo6ZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU08KICAgICB9CiAKICAgICBtX3N0cnVjdHVyZS0+c2V0SGFzR2V0
dGVyU2V0dGVyUHJvcGVydGllcyh0cnVlKTsKLSAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihn
ZXR0ZXJGdW5jdGlvbik7CisgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBnZXR0ZXJGdW5jdGlvbik7CiB9CiAKIHZvaWQgSlNPYmplY3Q6OmRlZmluZVNldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmpl
Y3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAtMzM5LDcgKzMzOSw3
IEBAIHZvaWQgSlNPYmplY3Q6OmRlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPCiAgICAgSlNWYWx1ZSBvYmplY3QgPSBnZXREaXJl
Y3QocHJvcGVydHlOYW1lKTsKICAgICBpZiAob2JqZWN0ICYmIG9iamVjdC5pc0dldHRlclNldHRl
cigpKSB7CiAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllcygpKTsKLSAgICAgICAgYXNHZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0U2V0dGVyKHNldHRl
ckZ1bmN0aW9uKTsKKyAgICAgICAgYXNHZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0U2V0dGVyKGV4
ZWMtPmdsb2JhbERhdGEoKSwgc2V0dGVyRnVuY3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBKU09iamVjdDo6ZGVmaW5lU2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU08KICAgICB9CiAK
ICAgICBtX3N0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyh0cnVlKTsKLSAg
ICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihzZXR0ZXJGdW5jdGlvbik7CisgICAgZ2V0dGVyU2V0
dGVyLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzZXR0ZXJGdW5jdGlvbik7CiB9CiAK
IEpTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCkBAIC01MTIsMzQgKzUxMiwzNCBAQCB2b2lkIEpTT2JqZWN0Ojpy
ZW1vdmVEaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIGlmIChtX3N0
cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBt
X3N0cnVjdHVyZS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihwcm9wZXJ0eU5hbWUp
OwogICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgICAgICBwdXRE
aXJlY3RPZmZzZXQob2Zmc2V0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIHB1dFVuZGVm
aW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbihtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwogICAgIHNldFN0
cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90
Rm91bmQpCi0gICAgICAgIHB1dERpcmVjdE9mZnNldChvZmZzZXQsIGpzVW5kZWZpbmVkKCkpOwor
ICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwogfQogCiB2b2lkIEpT
T2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEludGVybmFsRnVuY3Rp
b24qIGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uKElk
ZW50aWZpZXIoZXhlYywgZnVuY3Rpb24tPm5hbWUoZXhlYykpLCBmdW5jdGlvbiwgYXR0cik7Cisg
ICAgcHV0RGlyZWN0RnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMs
IGZ1bmN0aW9uLT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOwogfQogCiB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uLCB1bnNpZ25lZCBhdHRyKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uKElkZW50aWZpZXIo
ZXhlYywgZnVuY3Rpb24tPm5hbWUoZXhlYykpLCBmdW5jdGlvbiwgYXR0cik7CisgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9u
LT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJuYWxG
dW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMp
KSwgZnVuY3Rpb24sIGF0dHIpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4
ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogZnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHIpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0
dHIpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24s
IGF0dHIpOwogfQogCiBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3Bl
cnR5U2xvdChQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUqIGxvY2F0aW9uKQpAQCAtNTk1LDEx
ICs1OTUsMTEgQEAgc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0YXJnZXQsIGNvbnN0IElkZW50aWZpZXImIHAKICAgICAgICAgICAgIEdldHRlclNl
dHRlciogYWNjZXNzb3IgPSBuZXcgKGV4ZWMpIEdldHRlclNldHRlcihleGVjKTsKICAgICAgICAg
ICAgIGlmIChvbGREZXNjcmlwdG9yLmdldHRlcigpKSB7CiAgICAgICAgICAgICAgICAgYXR0cmli
dXRlcyB8PSBHZXR0ZXI7Ci0gICAgICAgICAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcihhc09i
amVjdChvbGREZXNjcmlwdG9yLmdldHRlcigpKSk7CisgICAgICAgICAgICAgICAgYWNjZXNzb3It
PnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KG9sZERlc2NyaXB0b3IuZ2V0
dGVyKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvbGREZXNjcmlwdG9yLnNl
dHRlcigpKSB7CiAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBTZXR0ZXI7Ci0gICAgICAg
ICAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcihhc09iamVjdChvbGREZXNjcmlwdG9yLnNldHRl
cigpKSk7CisgICAgICAgICAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5nbG9iYWxE
YXRhKCksIGFzT2JqZWN0KG9sZERlc2NyaXB0b3Iuc2V0dGVyKCkpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHRhcmdldC0+cHV0V2l0aEF0dHJpYnV0ZXMoZXhlYywgcHJvcGVydHlOYW1l
LCBhY2Nlc3NvciwgYXR0cmlidXRlcyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTcy
MCw5ICs3MjAsOSBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZQogICAgIEdldHRlclNldHRlciog
Z2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYWNjZXNzb3IpOwogICAgIGlmIChjdXJyZW50
LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSkgewogICAgICAgICBpZiAoZGVzY3JpcHRvci5z
ZXR0ZXIoKSkKLSAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGFzT2JqZWN0KGRl
c2NyaXB0b3Iuc2V0dGVyKCkpKTsKKyAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVy
KGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3QoZGVzY3JpcHRvci5zZXR0ZXIoKSkpOwogICAg
ICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXIoKSkKLSAgICAgICAgICAgIGdldHRlclNldHRlci0+
c2V0R2V0dGVyKGFzT2JqZWN0KGRlc2NyaXB0b3IuZ2V0dGVyKCkpKTsKKyAgICAgICAgICAgIGdl
dHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3QoZGVzY3Jp
cHRvci5nZXR0ZXIoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgZGVsZXRl
UHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKTsKQEAgLTczMSw3ICs3MzEsNyBAQCBib29sIEpT
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZQogICAgICAgICBhdHRycyB8PSBTZXR0ZXI7CiAgICAgaWYgKGRlc2Ny
aXB0b3IuZ2V0dGVyKCkpCiAgICAgICAgIGF0dHJzIHw9IEdldHRlcjsKLSAgICBwdXREaXJlY3Qo
cHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cnMpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApp
bmRleCA4MDNhYmZkNzNiNGM0OWJlZWEzNWRlMWExMWM4ODMyYmEwNWU5NzRlLi5lOTA4ZDAzNDBk
NTVkMTVjY2Q1ZDhiMWI3NDU5ZDlhOWE2YjFjNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKQEAgLTcwLDggKzcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFNldHRlciAgICAgICA9IDEgPDwgNiAgIC8vIHByb3BlcnR5IGlzIGEgc2V0dGVyCiAgICAg
fTsKIAotICAgIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUqIFByb3BlcnR5U3RvcmFnZTsKLSAgICB0
eXBlZGVmIGNvbnN0IEVuY29kZWRKU1ZhbHVlKiBDb25zdFByb3BlcnR5U3RvcmFnZTsKKyAgICB0
eXBlZGVmIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIFByb3BlcnR5U3RvcmFnZTsKKyAgICB0
eXBlZGVmIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIENvbnN0UHJvcGVydHlTdG9y
YWdlOwogCiAgICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOwpAQCAtMTc5LDIzICsxNzksMjQg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsg
cmV0dXJuICFtX3N0cnVjdHVyZS0+aXNFbXB0eSgpOyB9CiAgICAgICAgIGJvb2wgaGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJuIG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKCk7IH0KIAotICAgICAgICBib29sIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tS
ZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3Qo
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyID0gMCk7Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wg
cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAg
IGJvb2wgcHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgdm9pZCBwdXREaXJl
Y3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUs
IHVuc2lnbmVkIGF0dHIgPSAwKTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIs
IGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAgdm9p
ZCBwdXREaXJlY3RGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTQ2VsbCosIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAgICAgICAgdm9pZCBwdXRE
aXJlY3RGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQ2VsbCosIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0ciA9IDApOwogICAgICAg
ICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogZnVu
Y3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAotICAgICAgICB2b2lkIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0ciA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZh
bHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICAgdm9p
ZCBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50
ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICAgdm9p
ZCBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNG
dW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAogICAgICAgICAvLyBGYXN0
IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBvZmZzZXRzLgogICAgICAgICBKU1ZhbHVlIGdldERp
cmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUo
cHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSk7IH0KLSAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZz
ZXQoc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZz
ZXRdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQorICAgICAgICB2b2lkIHB1dERpcmVjdE9m
ZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFs
dWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFs
dWUpOyB9CisgICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoc2l6ZV90IG9m
ZnNldCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVmaW5lZCgpOyB9CiAKICAg
ICAgICAgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIEpTVmFsdWUq
IGxvY2F0aW9uKTsKIApAQCAtMjI1LDkgKzIyNiw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQpOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCgpCisgICAgICAgIHZvaWQgZmxh
dHRlbkRpY3Rpb25hcnlPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7
Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodGhp
cyk7CisgICAgICAgICAgICBtX3N0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUo
Z2xvYmFsRGF0YSwgdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHB1dEFub255bW91
c1ZhbHVlKHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlKQpAQCAtMjY3LDggKzI2OCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNW
YWx1ZSo+KCZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdKTsKICAgICAgICAgfQogCi0gICAgICAg
IGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCwgSlNDZWxsKik7Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwo
SlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCk7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOworICAgICAgICBib29s
IHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERh
dGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHIgPSAwKTsKIAogICAgICAgICBib29sIGlubGluZUdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwpAQCAtMjc4LDcgKzI3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVuaW9uIHsK
ICAgICAgICAgICAgIFByb3BlcnR5U3RvcmFnZSBtX2V4dGVybmFsU3RvcmFnZTsKLSAgICAgICAg
ICAgIEVuY29kZWRKU1ZhbHVlIG1faW5saW5lU3RvcmFnZVtpbmxpbmVTdG9yYWdlQ2FwYWNpdHld
OworICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiBtX2lubGluZVN0b3JhZ2Vb
aW5saW5lU3RvcmFnZUNhcGFjaXR5XTsKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBtX2luaGVyaXRvcklEOwpAQCAtNDUwLDcgKzQ1MSw3IEBAIGlubGluZSBKU1ZhbHVl
IEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNv
bnN0CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJv
cGVydHlTbG90JiBzbG90LCBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb24pCitpbmxpbmUgYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwq
IHNwZWNpZmljRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhl
YXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykp
OwpAQCAtNDY3LDcgKzQ2OCw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAg
IGlmIChjaGVja1JlYWRPbmx5ICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBwdXREaXJlY3RPZmZzZXQo
b2Zmc2V0LCB2YWx1ZSk7CisgICAgICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwg
b2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGUgb2JqZWN0
cyBzdHJ1Y3R1cmUgb25seSBoYXMgYSBzcGVjaWZpYyB2YWx1ZSBzZXQgaWYgcHJldmlvdXNseSB0
aGVyZQogICAgICAgICAgICAgLy8gaGFkIGJlZW4gb25lIHNldCwgYW5kIGlmIHRoZSBuZXcgdmFs
dWUgYmVpbmcgc3BlY2lmaWVkIGlzIHRoZSBzYW1lIChvdGhlcndpc2Ugd2Ugd291bGQKICAgICAg
ICAgICAgIC8vIGhhdmUgZGVzcGVjaWZpZWQsIGFib3ZlKS4gIFNvLCBpZiBjdXJyZW50U3BlY2lm
aWNGdW5jdGlvbiBpcyBub3Qgc2V0LCBvciBpZiB0aGUgbmV3CkBAIC00ODUsNyArNDg2LDcgQEAg
aW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSk7CiAKICAgICAgICAgQVNTRVJUKG9mZnNldCA8IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpKTsKLSAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUpOwor
ICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAg
ICAgIC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1Byb3BlcnR5IGNhbGwgYmVsb3cuCiAgICAgICAg
IGlmICghc3BlY2lmaWNGdW5jdGlvbikKICAgICAgICAgICAgIHNsb3Quc2V0TmV3UHJvcGVydHko
dGhpcywgb2Zmc2V0KTsKQEAgLTUwMCw3ICs1MDEsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
CiAKICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSk7CiAgICAgICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKLSAg
ICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUpOworICAgICAgICBwdXREaXJlY3RP
ZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBu
ZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3Vy
cmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNh
Y2hhYmxlIHN0YXRlLgogICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCkBAIC01MjcsNyAr
NTI4LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICBpZiAoY3VycmVudFNwZWNp
ZmljRnVuY3Rpb24pIHsKICAgICAgICAgICAgIC8vIGNhc2UgKDEpIERvIHRoZSBwdXQsIHRoZW4g
cmV0dXJuIGxlYXZpbmcgdGhlIHNsb3QgdW5jYWNoYWJsZS4KICAgICAgICAgICAgIGlmIChzcGVj
aWZpY0Z1bmN0aW9uID09IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUpOworICAgICAgICAgICAgICAgIHB1dERp
cmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIGNhc2UgKDIpIERlc3Bl
Y2lmeSwgZmFsbCB0aHJvdWdoIHRvICgzKS4KQEAgLTUzNiw3ICs1MzcsNyBAQCBpbmxpbmUgYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlCiAKICAgICAgICAgLy8gY2FzZSAoMykgc2V0IHRoZSBzbG90LCBkbyB0aGUg
cHV0LCByZXR1cm4uCiAgICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZz
ZXQpOwotICAgICAgICBwdXREaXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1ZSk7CisgICAgICAgIHB1
dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCkBAIC01NTcsNyArNTU4LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZQogCiAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSk7CiAgICAgc2V0U3RydWN0dXJlKHN0cnVjdHVyZS5yZWxlYXNlKCkpOwotICAgIHB1dERp
cmVjdE9mZnNldChvZmZzZXQsIHZhbHVlKTsKKyAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0
YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgLy8gVGhpcyBpcyBhIG5ldyBwcm9wZXJ0eTsgdHJhbnNp
dGlvbnMgd2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50bHkgY2FjaGFibGUsCiAg
ICAgLy8gc28gbGVhdmUgdGhlIHNsb3QgaW4gYW4gdW5jYWNoYWJsZSBzdGF0ZS4KICAgICBpZiAo
IXNwZWNpZmljRnVuY3Rpb24pCkBAIC01NzAsNjEgKzU3MSw2MSBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJ
ZGVudGlmaQogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVl
KSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKIAotICAgIHJldHVy
biBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVj
a1JlYWRPbmx5LCBzbG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7CisgICAg
cmV0dXJuIHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIGdldEpTRnVuY3Rpb24oZ2xvYmFsRGF0
YSwgdmFsdWUpKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFs
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90OwotICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0
dHJpYnV0ZXMsIGZhbHNlLCBzbG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7
CisgICAgcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
YXR0cmlidXRlcywgZmFsc2UsIHNsb3QsIGdldEpTRnVuY3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUp
KTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wg
Y2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBj
aGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09
IEhlYXA6OmhlYXAodGhpcykpOwogCi0gICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsKHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIDApOworICAg
IHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCAwKTsKIH0KIAotaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90OwotICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFs
dWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBzbG90LCAwKTsKKyAgICBwdXREaXJlY3RJbnRlcm5hbChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxzZSwgc2xvdCwg
MCk7CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitp
bmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7Ci0gICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFt
ZSwgdmFsdWUsIDAsIGZhbHNlLCBzbG90LCAwKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJu
YWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgZmFsc2UsIHNsb3QsIDApOwog
fQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBi
b29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSB2b2lkIEpT
T2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAg
cHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tS
ZWFkT25seSwgc2xvdCwgdmFsdWUpOworICAgIHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIHZh
bHVlKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cikK
K2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwg
dW5zaWduZWQgYXR0cikKIHsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBwdXREaXJl
Y3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyLCBmYWxzZSwgc2xvdCwgdmFsdWUp
OworICAgIHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHIsIGZhbHNlLCBzbG90LCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0Ojpw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxpbmUgdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCiB7CiAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVy
ZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IDApOwogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpCiAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGN1cnJlbnRD
YXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHB1
dERpcmVjdE9mZnNldChvZmZzZXQsIHZhbHVlKTsKKyAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFs
RGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0
cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICBzaXplX3Qgb2Zmc2V0ID0g
bV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCB2YWx1ZSk7CiAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBtX3N0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSk7Ci0gICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUpOworICAgIHB1dERpcmVj
dE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKIH0KIAogaW5saW5lIHZvaWQgSlNP
YmplY3Q6OnRyYW5zaXRpb25UbyhTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKQEAgLTcwMyw3ICs3
MDQsNyBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdQogaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0
RGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKGlzQ2Vs
bCgpICYmIGlzT2JqZWN0KCkpOwotICAgIGlmICghYXNPYmplY3QoYXNDZWxsKCkpLT5wdXREaXJl
Y3QocHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAg
ICBpZiAoIWFzT2JqZWN0KGFzQ2VsbCgpKS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKIH0KIApAQCAtNzI1LDcgKzcyNiw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVj
dDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VJbmxpbmUoc2l6ZV90IG9sZFNpemUsIHNpemVfCiAg
ICAgYm9vbCB3YXNJbmxpbmUgPSAob2xkU2l6ZSA9PSBKU09iamVjdDo6aW5saW5lU3RvcmFnZUNh
cGFjaXR5KTsKIAogICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSAod2Fz
SW5saW5lID8gbV9pbmxpbmVTdG9yYWdlIDogbV9leHRlcm5hbFN0b3JhZ2UpOwotICAgIFByb3Bl
cnR5U3RvcmFnZSBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSBuZXcgRW5jb2RlZEpTVmFsdWVbbmV3U2l6
ZV07CisgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9IG5ldyBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+W25ld1NpemVdOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG9sZFNpemU7ICsraSkKICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2VbaV0gPSBvbGRQcm9w
ZXJ0eVN0b3JhZ2VbaV07CkBAIC03NDAsOCArNzQxLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpT
T2JqZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAg
SlNDZWxsOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKIAotICAgIG1hcmtTdGFjay5hcHBlbmQo
cHJvdG90eXBlKCkpOwotICAgIAorICAgIG1hcmtTdGFjay5hcHBlbmQobV9zdHJ1Y3R1cmUtPnN0
b3JlZFByb3RvdHlwZVNsb3QoKSk7CiAgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSBwcm9w
ZXJ0eVN0b3JhZ2UoKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSBtX3N0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlU2l6ZSgpOwogICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMocmVpbnRlcnBy
ZXRfY2FzdDxKU1ZhbHVlKj4oc3RvcmFnZSksIHN0b3JhZ2VTaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKaW5kZXgg
N2FiMWQxYzEwNzQ0ZjUwM2JmYTgxZDE3OWE3YjNmNGIzZGIwNjQ0My4uYTZiMWUyM2RhYjU1M2Qz
ZjVhZDhhOTRkY2YxNjEwYjE4Y2NiMzRmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAg
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1N0YXRpY1Njb3BlT2JqZWN0KTsKIHZvaWQgSlNT
dGF0aWNTY29wZU9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewog
ICAgIEpTVmFyaWFibGVPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwotICAgIG1hcmtT
dGFjay5hcHBlbmQoZCgpLT5yZWdpc3RlclN0b3JlLmpzVmFsdWUoKSk7CisgICAgbWFya1N0YWNr
LmFwcGVuZChkKCktPnJlZ2lzdGVyU3RvcmUuanNWYWx1ZVNsb3QoKSk7CiB9CiAKIEpTT2JqZWN0
KiBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmluZGV4IGJhMjgx
MzlhNGNhZWQyMjJiYzFjYmJmODRiNGFmYzNhNzRiODJhOWEuLjg0OGM0MzFhYzBjNGI0MGZkNDZj
N2Y3NDgxZTQ5NzEzNzI4ZDdiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCBVU3RyaW5nIEpTU3RyaW5nOjp0b1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAKIGlubGluZSBTdHJpbmdPYmplY3QqIFN0cmluZ09i
amVjdDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykKIHsKLSAgICBy
ZXR1cm4gbmV3IChleGVjKSBTdHJpbmdPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSwgc3RyaW5nKTsKKyAgICByZXR1cm4gbmV3IChleGVj
KSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpLCBzdHJpbmcpOwogfQogCiBKU09iamVjdCog
SlNTdHJpbmc6OnRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuaAppbmRleCBjYWQ5NjYyODFkYjdjZDdiMGU2NjdhNjliOTBk
MmRiYzRkOGY3Y2U2Li41OTBlM2UwMjc3NmFiYzFlOGQ0N2IwMzQ2Mjk0NjAwNjhiN2FkYzczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCkBAIC0yMyw2ICsyMyw4IEBA
CiAjaWZuZGVmIEpTVmFsdWVfaAogI2RlZmluZSBKU1ZhbHVlX2gKIAorI2luY2x1ZGUgIldyaXRl
QmFycmllci5oIgorCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0ZGRlZi5oPiAvLyBm
b3Igc2l6ZV90CiAjaW5jbHVkZSA8c3RkaW50Lmg+CkBAIC0yMTIsNiArMjE0LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CisgICAgICAgIHRlbXBsYXRlIDxjbGFz
cyBUPiBKU1ZhbHVlKERlcHJlY2F0ZWRQdHI8VD4pOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gSlNWYWx1ZShXcml0ZUJhcnJpZXI8VD4pOworCiAgICAgICAgIGVudW0gSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07CiAgICAgICAgIEpTVmFsdWUo
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKIApAQCAtNzY0LDYgKzc2OSw2MCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAorICAgIHR5cGVk
ZWYgZW51bSB7IH0gVW5rbm93bjsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8PiBjbGFzcyBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgc2V0KEpTR2xv
YmFsRGF0YSYsIGNvbnN0IEpTQ2VsbCosIEpTVmFsdWUgdmFsdWUpIHsgbV92YWx1ZSA9IEpTVmFs
dWU6OmVuY29kZSh2YWx1ZSk7IH0KKyAgICAgICAgdm9pZCBzZXRXaXRob3V0V3JpdGVCYXJyaWVy
KEpTVmFsdWUgdmFsdWUpIHsgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IH0KKyAg
ICAgICAgSlNWYWx1ZSBnZXQoKSBjb25zdCB7IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV92YWx1
ZSk7IH0KKyAgICAgICAgdm9pZCBjbGVhcigpIHsgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKCkpOyB9CisgICAgICAgIHZvaWQgc2V0VW5kZWZpbmVkKCkgeyBtX3ZhbHVlID0gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOyB9CisgICAgICAgIGJvb2wgaXNOdW1iZXIoKSBj
b25zdCB7IHJldHVybiBnZXQoKS5pc051bWJlcigpOyB9CisgICAgICAgIEpTVmFsdWUqIHNsb3Qo
KQorICAgICAgICB7IAorICAgICAgICAgICAgdW5pb24geworICAgICAgICAgICAgICAgIHZvaWQq
KiB2OworICAgICAgICAgICAgICAgIEpTVmFsdWUqIHNsb3Q7CisgICAgICAgICAgICB9IHU7Cisg
ICAgICAgICAgICB1LnYgPSAmbV92YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiB1LnNsb3Q7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHR5cGVkZWYgSlNWYWx1ZSAoV3JpdGVCYXJyaWVy
QmFzZTo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOworICAgICAgICBvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPyByZWludGVycHJldF9jYXN0PFVu
c3BlY2lmaWVkQm9vbFR5cGUqPigxKSA6IDA7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiAhbV92YWx1ZTsgfSAKKyAgICAgICAgCisgICAgcHJvdGVjdGVkOgorICAg
ICAgICBFbmNvZGVkSlNWYWx1ZSBtX3ZhbHVlOworICAgIH07CisKKyAgICB0ZW1wbGF0ZSA8PiBj
bGFzcyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gOiBwdWJsaWMgV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPiB7CisgICAgcHVibGljOgorICAgICAgICBXcml0ZUJhcnJpZXIoKSB7IG1fdmFsdWUgPSBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsgfQorICAgICAgICBXcml0ZUJhcnJpZXIoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBKU0NlbGwqIG93bmVyLCBKU1ZhbHVlIHZhbHVlKQor
ICAgICAgICB7CisgICAgICAgICAgICBzZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKKyAg
ICAgICAgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZSA8PiBjbGFzcyBEZXByZWNhdGVkUHRyPFVu
a25vd24+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlcHJlY2F0ZWRQdHIoKSB7IH0KKyAgICAg
ICAgRGVwcmVjYXRlZFB0cihKU1ZhbHVlIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHsgfQorICAg
ICAgICBjb25zdCBKU1ZhbHVlJiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAg
ICAgIGNvbnN0IEpTVmFsdWUqIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICZtX3ZhbHVlOyB9
CisgICAgICAgIGNvbnN0IEpTVmFsdWUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV92
YWx1ZTsgfQorICAgICAgICAKKyAgICAgICAgSlNWYWx1ZSogc2xvdCgpIHsgcmV0dXJuICZtX3Zh
bHVlOyB9CisKKyAgICAgICAgdHlwZWRlZiBKU1ZhbHVlIChEZXByZWNhdGVkUHRyOjoqVW5zcGVj
aWZpZWRCb29sVHlwZSk7CisgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29s
VHlwZSo+KDEpIDogMDsgfQorICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
ICFtX3ZhbHVlOyB9CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIEpTVmFsdWUgbV92
YWx1ZTsKKyAgICB9OwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU1ZhbHVlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3Bw
CmluZGV4IDJjMzlmNWMyMzg0OWZlZTJhZmZhMTk0ZDRjNmVlNTkzOTlhYmE3NDEuLjdhMDRiNmFm
ZjlhNTM5ZmI5ZDEyOTE1OWJjZGIwMTdmMjI2OWIwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcApAQCAtMzAsNyArMzAsNyBAQCB2
b2lkIEpTV3JhcHBlck9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQog
ewogICAgIEpTT2JqZWN0OjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKICAgICBpZiAobV9pbnRl
cm5hbFZhbHVlKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1faW50ZXJuYWxWYWx1ZSk7Cisg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9pbnRlcm5hbFZhbHVlLnNsb3QoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNXcmFwcGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dy
YXBwZXJPYmplY3QuaAppbmRleCBmMTljZDMwYzg1MDQ5NDA5YTMzOGNjZTI3ZjYxN2U4OTllZGUz
NDBiLi40ZWFmMmMwNDA5ZTM3OGY1OWY0NzhiNzk3ZTM1MDk1NzFhZWE4OTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAtMzMsOCAr
MzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZXhwbGljaXQgSlNXcmFwcGVyT2JqZWN0
KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCiAgICAgcHVibGljOgotICAgICAgICBK
U1ZhbHVlIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsVmFsdWU7IH0K
LSAgICAgICAgdm9pZCBzZXRJbnRlcm5hbFZhbHVlKEpTVmFsdWUpOworICAgICAgICBKU1ZhbHVl
IGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsVmFsdWUuZ2V0KCk7IH0K
KyAgICAgICAgdm9pZCBzZXRJbnRlcm5hbFZhbHVlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUpOwog
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpT
VmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihN
YXJrU3RhY2smKTsKICAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgbV9pbnRlcm5hbFZhbHVlOwor
ICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9pbnRlcm5hbFZhbHVlOwogICAgIH07CiAK
ICAgICBpbmxpbmUgSlNXcmFwcGVyT2JqZWN0OjpKU1dyYXBwZXJPYmplY3QoTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCkBAIC01NiwxMSArNTYsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHB1dEFub255bW91c1ZhbHVlKDAsIGpzTnVsbCgpKTsKICAgICB9CiAK
LSAgICBpbmxpbmUgdm9pZCBKU1dyYXBwZXJPYmplY3Q6OnNldEludGVybmFsVmFsdWUoSlNWYWx1
ZSB2YWx1ZSkKKyAgICBpbmxpbmUgdm9pZCBKU1dyYXBwZXJPYmplY3Q6OnNldEludGVybmFsVmFs
dWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKLSAg
ICAgICAgbV9pbnRlcm5hbFZhbHVlID0gdmFsdWU7CisgICAgICAgIG1faW50ZXJuYWxWYWx1ZS5z
ZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOwogICAgICAgICBwdXRBbm9ueW1vdXNWYWx1ZSgw
LCB2YWx1ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9MaXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xp
dGVyYWxQYXJzZXIuY3BwCmluZGV4IGRmODdlN2Y4NmI1NmVkMDU3MTg5MjBhZDAyNmUxZTVjMmI2
N2ZlMjkuLmJjMmU3MzYyNDY5NTgzYmRiZjVjMzUwNDRlMTBjN2RkN2E4MTQ2NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBAIC0zNzMs
NyArMzczLDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyOjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0
aWFsU3RhdGUpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RF
bmRFeHByZXNzaW9uOgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGFzT2JqZWN0KG9i
amVjdFN0YWNrLmxhc3QoKSktPnB1dERpcmVjdChpZGVudGlmaWVyU3RhY2subGFzdCgpLCBsYXN0
VmFsdWUpOworICAgICAgICAgICAgICAgIGFzT2JqZWN0KG9iamVjdFN0YWNrLmxhc3QoKSktPnB1
dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnRpZmllclN0YWNrLmxhc3QoKSwgbGFz
dFZhbHVlKTsKICAgICAgICAgICAgICAgICBpZGVudGlmaWVyU3RhY2sucmVtb3ZlTGFzdCgpOwog
ICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgPT0gVG9rQ29t
bWEpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9QYXJzZU9iamVjdFN0YXJ0RXhwcmVzc2lv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCmluZGV4IGRhYzFjOTRk
YzVlYjMyY2E2MGQ3OGU3NjZlODdhYjI4MTdiYWRiMjMuLjEzZWE5MjMwMzA1OWQ1ZTk2Yzc3MTNk
YjZhMDU3NjBhY2MyYjEwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAjZW5kaWYKICAg
ICAgICAgICAgIGZ1bmN0aW9uID0gbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhl
YywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJl
KCksIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlv
bigpKTsKIAotICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3RGdW5jdGlvbihwcm9wZXJ0eU5hbWUs
IGZ1bmN0aW9uLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgdGhpc09iai0+cHV0RGly
ZWN0RnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBl
bnRyeS0+YXR0cmlidXRlcygpKTsKICAgICAgICAgbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJl
Y3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuaAppbmRleCAwZDZkOThmYjRhYzQ0MzMyYzI5NmIxN2NlZGUxMDhjOWEwNmU2
M2M2Li40MzE4NGU1NmRjYWFlZDVlNTRhM2RhYWEzMTY1ZTdiYzQ1ZjlhMDMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMzEyLDkgKzMxMiw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pIHsg
Ly8gZnVuY3Rpb246IHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0eQogICAgICAgICAgICAgaWYgKExJ
S0VMWSh2YWx1ZS5pc0NlbGwoKSkpCi0gICAgICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0
RnVuY3Rpb24ocHJvcGVydHlOYW1lLCB2YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAg
dGhpc09iai0+cHV0RGlyZWN0RnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLmFzQ2VsbCgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0
aGlzT2JqLT5wdXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAg
dGhpc09iai0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkp
KQogICAgICAgICAgICAgZW50cnktPnByb3BlcnR5UHV0dGVyKCkoZXhlYywgdGhpc09iaiwgdmFs
dWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3Rh
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCmluZGV4IGMz
Y2I0ZjJkNzJhODRkZmQ2NTVkY2M5OGJlNTRhNzY1ZWU1ODg5ZTUuLmM3YzAxNTE3NWFhM2QyOGFm
YWViNDUzYWZkNDdlZTI3ZmFiNDE3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcmtTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcmtTdGFjay5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIE1hcmtTdGFja19oCiAKICNp
bmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9PU0FsbG9jYXRvci5oPgpAQCAtNTAsOCArNTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZChKU1Zh
bHVlKTsKLSAgICAgICAgdm9pZCBhcHBlbmQoSlNDZWxsKik7CisgICAgICAgIHZvaWQgYXBwZW5k
KEpTVmFsdWUqKTsKKyAgICAgICAgdm9pZCBhcHBlbmQoSlNDZWxsKiopOwogICAgICAgICAKICAg
ICAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZFZhbHVlcyhSZWdpc3RlciogdmFsdWVzLCBz
aXplX3QgY291bnQsIE1hcmtTZXRQcm9wZXJ0aWVzIHByb3BlcnRpZXMgPSBOb051bGxWYWx1ZXMp
CiAgICAgICAgIHsKQEAgLTc0LDYgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0K
IAogICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgYXBwZW5kQ2VsbChKU0NlbGwqKTsKICAgICAg
ICAgdm9pZCBtYXJrQ2hpbGRyZW4oSlNDZWxsKik7CiAKICAgICAgICAgc3RydWN0IE1hcmtTZXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAppbmRleCAw
ODBkN2QyMWU5MTRlNDI4YTM1MGM4NDEyMDNmYzRhMTk4NmU5YzA4Li5jNzkzMTZiZWE2Yzk1MDcx
MDU5YmY2YWM2YWFmOTI3ZDU2YzYzMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXRoT2JqZWN0LmNwcApAQCAtODksMTQgKzg5LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBN
YXRoT2JqZWN0OjppbmZvID0geyAiTWF0aCIsIDAsIDAsIEV4ZWNTdGF0ZTo6bWF0aFRhYmxlIH07
CiBNYXRoT2JqZWN0OjpNYXRoT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiAg
ICAgOiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7
Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiRSIpLCBq
c051bWJlcihleHAoMS4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJMTjIiKSwganNO
dW1iZXIobG9nKDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiTE4xMCIpLCBqc051
bWJlcihsb2coMTAuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiTE9HMkUiKSwganNO
dW1iZXIoMS4wIC8gbG9nKDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7
Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiTE9HMTBF
IiksIGpzTnVtYmVyKDEuMCAvIGxvZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJl
YWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMs
ICJQSSIpLCBqc051bWJlcihwaURvdWJsZSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRP
bmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJT
UVJUMV8yIiksIGpzTnVtYmVyKHNxcnQoMC41KSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJl
YWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMs
ICJTUVJUMiIpLCBqc051bWJlcihzcXJ0KDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBS
ZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJFIiksIGpzTnVtYmVyKGV4cCgxLjApKSwgRG9udERlbGV0
ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiTE4yIiksIGpzTnVtYmVyKGxv
ZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAi
TE4xMCIpLCBqc051bWJlcihsb2coMTAuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFk
T25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJMT0cyRSIpLCBqc051bWJlcigxLjAgLyBsb2coMi4wKSksIERv
bnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkxPRzEwRSIpLCBq
c051bWJlcigxLjAgLyBsb2coMTAuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25s
eSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJQSSIpLCBqc051bWJlcihwaURvdWJsZSksIERvbnREZWxldGUgfCBE
b250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlNRUlQxXzIiKSwganNOdW1iZXIoc3Fy
dCgwLjUpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAi
U1FSVDIiKSwganNOdW1iZXIoc3FydCgyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVh
ZE9ubHkpOwogfQogCiAvLyBFQ01BIDE1LjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZWI1MDhlYmQz
YTg4YWJlZGQ2MmVhZjk0M2JmMTdlZTQyYWUwMGQxNC4uNDIxZWVjZmQwZGJkYzc5ZmNlMmViMDQw
NTViZDg0MTgxMzllMDJkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDggKzM3LDggQEAgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KgogewogICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5
cGUgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwgdGhpcyk7CiAKLSAgICBwdXREaXJl
Y3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICBwdXREaXJlY3Qo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5
cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBtX2Vycm9yU3RydWN0
dXJlID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHByb3RvdHlwZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90
eXBlLmNwcAppbmRleCA1NDAyMjBhNjIyYzZiN2Y2ZDQ0ZDJiNmI2ZWZkYTliNGE0Nzk1MmRhLi40
ZTEwMjY4ZWViMmZlMGU2Yjc1MGUwYWRkMTQ2ZjdjZDcyNmRiZWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCkBA
IC0zNCw5ICszNCw5IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JQcm90
b3R5cGUpOwogTmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAgICA6IEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3QoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwg
MCk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5tZXNzYWdlLCBqc1N0cmlu
ZyhleGVjLCBuYW1lQW5kTWVzc2FnZSksIDApOwotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3Ry
aW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwgMCk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UsIGpzU3RyaW5nKGV4ZWMsIG5h
bWVBbmRNZXNzYWdlKSwgMCk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvciwgRG9udEVudW0pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAppbmRleCA1MzY5Y2EwY2ZkZDJhYjA0YjQwNjA3
NjljMjIyZjIxNmJmMzhhNzE4Li4yMzhkYzkzYzM2NjNlNTM2YTkyYjZmODQxYjc3M2FlMDY4ZDlj
MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29u
c3RydWN0b3IuY3BwCkBAIC01OCwxMCArNTgsMTAgQEAgTnVtYmVyQ29uc3RydWN0b3I6Ok51bWJl
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUK
ICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgbnVtYmVyUHJvdG90eXBlLT5pbmZvLmNsYXNz
TmFtZSkpCiB7CiAgICAgLy8gTnVtYmVyLlByb3RvdHlwZQotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIG51bWJlclByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSwgbnVtYmVyUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSk7CiAKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgotICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVt
YmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUp
OwogfQogCiBib29sIE51bWJlckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RXaXRoTnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleAogewogICAg
IE51bWJlck9iamVjdCogb2JqZWN0ID0gbmV3IChleGVjKSBOdW1iZXJPYmplY3QoZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgZG91Ymxl
IG4gPSBleGVjLT5hcmd1bWVudENvdW50KCkgPyBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihl
eGVjKSA6IDA7Ci0gICAgb2JqZWN0LT5zZXRJbnRlcm5hbFZhbHVlKGpzTnVtYmVyKG4pKTsKKyAg
ICBvYmplY3QtPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bWJlcihu
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcAppbmRleCAxYTdlNDRjY2Vk
ZmQ5MjVlYjFhNTk0MWE5M2QxNzc1ZTIxZDJmMmM5Li41NjlkYmVkYjY2OTgwODEzNmM1MDVjNjYy
MDAzYzIxN2E0YThlNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlck9iamVjdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNWYWx1ZSBOdW1iZXJPYmplY3Q6Omdl
dEpTTnVtYmVyKCkKIE51bWJlck9iamVjdCogY29uc3RydWN0TnVtYmVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBudW1iZXIpCiB7CiAgICAgTnVtYmVyT2JqZWN0KiBvYmplY3QgPSBuZXcgKGV4
ZWMpIE51bWJlck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm51bWJlck9iamVj
dFN0cnVjdHVyZSgpKTsKLSAgICBvYmplY3QtPnNldEludGVybmFsVmFsdWUobnVtYmVyKTsKKyAg
ICBvYmplY3QtPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBudW1iZXIpOwog
ICAgIHJldHVybiBvYmplY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IDBiODZjMDA0YWEwYTA2ZTgzNDI5NGRhNjZm
ZGZjN2ZjZmQ1N2FiN2UuLjM1NTA4OTQ3MDlkMjhiNzgwNDg5ZTVhMDcyYzVlOTI5ZjY5MmM2YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUqKTsKIE51bWJlclByb3RvdHlw
ZTo6TnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpCiAgICAgOiBOdW1iZXJPYmplY3Qoc3RydWN0
dXJlKQogewotICAgIHNldEludGVybmFsVmFsdWUoanNOdW1iZXIoMCkpOworICAgIHNldEludGVy
bmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bWJlcigwKSk7CiAKICAgICAvLyBUaGUg
Y29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIgTnVtYmVyQ29uc3RydWN0b3Ig
aGFzIGJlZW4gY29uc3RydWN0ZWQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IGNhM2RjZDdjMmQ1MzkzY2E4OGUxNWQ0
MWI5YzNkZTRkZGM3ZjIyZWUuLmYzMWRhNjdlNWYxN2Q3NTcyZjljNTI4ZTIyMTM3ZmI0ZmI5MjIy
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKQEAgLTQ3LDEwICs0NywxMCBAQCBPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQog
OiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSkKIHsKICAgICAvLyBFQ01BIDE1LjIu
My4xCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAKICAgICAvLyBuby4gb2YgYXJndW1l
bnRzIGZvciBjb25zdHJ1Y3RvcgotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVt
IHwgRG9udERlbGV0ZSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogICAgIAogICAgIHB1dERpcmVjdEZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBw
ZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmdldFByb3RvdHlwZU9mLCBvYmplY3RDb25zdHJ1Y3RvckdldFBy
b3RvdHlwZU9mKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmdldE93blByb3BlcnR5RGVzY3JpcHRvciwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IpLCBEb250RW51bSk7CkBAIC0xMTcsMTUgKzExNywxNSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZQogCiAgICAgSlNPYmplY3QqIGRlc2NyaXB0aW9uID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYyk7CiAgICAgaWYgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlw
dG9yKCkpIHsKLSAgICAgICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5h
bWVzKCkudmFsdWUsIGRlc2NyaXB0b3IudmFsdWUoKSA/IGRlc2NyaXB0b3IudmFsdWUoKSA6IGpz
VW5kZWZpbmVkKCksIDApOwotICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS53cml0YWJsZSwganNCb29sZWFuKGRlc2NyaXB0b3Iud3JpdGFibGUoKSks
IDApOworICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlLCBkZXNjcmlwdG9yLnZhbHVlKCkgPyBkZXNjcmlw
dG9yLnZhbHVlKCkgOiBqc1VuZGVmaW5lZCgpLCAwKTsKKyAgICAgICAgZGVzY3JpcHRpb24tPnB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS53cml0YWJs
ZSwganNCb29sZWFuKGRlc2NyaXB0b3Iud3JpdGFibGUoKSksIDApOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldCwg
ZGVzY3JpcHRvci5nZXR0ZXIoKSA/IGRlc2NyaXB0b3IuZ2V0dGVyKCkgOiBqc1VuZGVmaW5lZCgp
LCAwKTsKLSAgICAgICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuc2V0LCBkZXNjcmlwdG9yLnNldHRlcigpID8gZGVzY3JpcHRvci5zZXR0ZXIoKSA6IGpzVW5k
ZWZpbmVkKCksIDApOworICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldCwgZGVzY3JpcHRvci5nZXR0ZXIoKSA/
IGRlc2NyaXB0b3IuZ2V0dGVyKCkgOiBqc1VuZGVmaW5lZCgpLCAwKTsKKyAgICAgICAgZGVzY3Jp
cHRpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5zZXQsIGRlc2NyaXB0b3Iuc2V0dGVyKCkgPyBkZXNjcmlwdG9yLnNldHRlcigpIDoganNVbmRl
ZmluZWQoKSwgMCk7CiAgICAgfQogICAgIAotICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmVudW1lcmFibGUsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmVudW1l
cmFibGUoKSksIDApOwotICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNvbmZpZ3VyYWJsZSwganNCb29sZWFuKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkp
LCAwKTsKKyAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmVudW1lcmFibGUsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmVudW1l
cmFibGUoKSksIDApOworICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uZmlndXJhYmxlLCBqc0Jvb2xlYW4oZGVzY3Jp
cHRvci5jb25maWd1cmFibGUoKSksIDApOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShk
ZXNjcmlwdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKaW5kZXggMTI1MjM0NTM3MTQxNTAyYTViZjM2NWM3MTc4ZDFlNzliNGFiMDI3Mi4uNmU4NDEy
MzlhZWQ3Njc2OWQxODdkNzQzMTlhZmJiNmFmMTdmOWRlMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtNDI5LDcgKzQyOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGlu
IGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQKICAgICAgICAgICAgIC8vIHNob3VsZCBu
b3QgYmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCiAgICAgICAgICAgICBpZiAoY2VsbC0+c3Ry
dWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICAgICAgYXNPYmplY3QoY2Vs
bCktPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KCk7CisgICAgICAgICAgICAgICAgYXNPYmplY3Qo
Y2VsbCktPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsK
ICAgICAgICAgICAgICAgICBpZiAoc2xvdEJhc2UgPT0gY2VsbCkKICAgICAgICAgICAgICAgICAg
ICAgc2xvdE9mZnNldCA9IGNlbGwtPnN0cnVjdHVyZSgpLT5nZXQocHJvcGVydHlOYW1lKTsgCiAg
ICAgICAgICAgICB9CkBAIC00NTQsNyArNDU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdz
IGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVk
IGFzIGEgZGljdGlvbmFyeS4KICAgICAgICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUoKS0+aXNE
aWN0aW9uYXJ5KCkpCi0gICAgICAgICAgICAgICAgYXNPYmplY3QoYmFzZSktPmZsYXR0ZW5EaWN0
aW9uYXJ5T2JqZWN0KCk7CisgICAgICAgICAgICAgICAgYXNPYmplY3QoYmFzZSktPmZsYXR0ZW5E
aWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKIAogICAgICAgICAgICAg
Kytjb3VudDsKICAgICAgICAgfQpAQCAtNDcxLDcgKzQ3MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3QqIGJhc2U7CiAgICAg
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBiYXNlID0gKml0ZXI7CisgICAgICAgICAg
ICBiYXNlID0gaXRlci0+Z2V0KCk7CiAgICAgICAgICAgICBpZiAobmV4dCA9PSBlbmQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGlzU3RyaWN0UHV0ID8gSlNWYWx1ZSgpIDogYmFzZTsKICAgICAg
ICAgICAgIGlmIChiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBwcm9wZXJ0eSwgc2xv
dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVG
dW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5j
dGlvbi5jcHAKaW5kZXggMzUyOTA4MDVjYzkxNjIxOWEwMmE4ZGNiNDJmM2ZkNWUyOGVmZjVmMC4u
OTVlMTAzMzg0ODFlZDA1MWQ1ZjcyODJjYTc4YTA1YTAzYTllMzBkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmNwcApAQCAtMzcs
NyArMzcsNyBAQCBQcm90b3R5cGVGdW5jdGlvbjo6UHJvdG90eXBlRnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgICwgbV9mdW5jdGlvbihmdW5j
dGlvbikKIHsKICAgICBBU1NFUlRfQVJHKGZ1bmN0aW9uLCBmdW5jdGlvbik7Ci0gICAgcHV0RGly
ZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIFByb3RvdHlwZUZ1bmN0aW9u
OjpQcm90b3R5cGVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gcHJvdG90eXBlRnVuY3Rpb25T
dHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uKQpAQCAtNDUsNyArNDUsNyBAQCBQcm90b3R5cGVGdW5jdGlvbjo6UHJvdG90
eXBlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQog
ICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKIHsKICAgICBBU1NFUlRfQVJHKGZ1bmN0aW9uLCBm
dW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
LCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9
CiAgICAgCiBDYWxsVHlwZSBQcm90b3R5cGVGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEm
IGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0
UHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0
eVNsb3QuaAppbmRleCA0YjBiMzk0OGZiYjI5ZjA4MmEzMTYyMWQ2NjVkMzVjM2RjMjZmNzE3Li40
YzllMGU2MmZjZWU4YTEwOTMxNDVhNWQ2ZWJjNDQxMmQ2OTE2OTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaApAQCAtNDUsMTQgKzQ1LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAg
ICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9wZXJ0eShEZXByZWNhdGVkUHRyPEpTT2JqZWN0PiBiYXNl
LCBzaXplX3Qgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBtX3R5cGUgPSBFeGlzdGlu
Z1Byb3BlcnR5OwogICAgICAgICAgICAgbV9iYXNlID0gYmFzZTsKICAgICAgICAgICAgIG1fb2Zm
c2V0ID0gb2Zmc2V0OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXROZXdQcm9wZXJ0eShK
U09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXROZXdQcm9wZXJ0
eShEZXByZWNhdGVkUHRyPEpTT2JqZWN0PiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQogICAgICAgICB7
CiAgICAgICAgICAgICBtX3R5cGUgPSBOZXdQcm9wZXJ0eTsKICAgICAgICAgICAgIG1fYmFzZSA9
IGJhc2U7CkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgICAgIEpTT2Jq
ZWN0KiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CisgICAgICAgIEpTT2JqZWN0KiBi
YXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlLmdldCgpOyB9CiAKICAgICAgICAgYm9vbCBpc1N0
cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgICAgICBib29s
IGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IFVuY2FjaGFibGU7IH0KQEAg
LTcwLDcgKzcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgog
ICAgICAgICBUeXBlIG1fdHlwZTsKLSAgICAgICAgSlNPYmplY3QqIG1fYmFzZTsKKyAgICAgICAg
RGVwcmVjYXRlZFB0cjxKU09iamVjdD4gbV9iYXNlOwogICAgICAgICBzaXplX3QgbV9vZmZzZXQ7
CiAgICAgICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCAzMGQzZWFi
NTNhNjRhZDcyNzMxMzkyMDQzNTYzYmU4ZDViMzEzZTAwLi4xYjMwNTE0OWZkNGJjMDgyYzQ5ZmEy
NzA4ZGU0NzNiZTk2ZDFlMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0xMDAsMTAgKzEwMCwxMCBAQCBSZWdFeHBD
b25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZQogICAgICwgZChhZG9wdFB0cihuZXcgUmVnRXhwQ29uc3RydWN0b3JQ
cml2YXRlKSkKIHsKICAgICAvLyBFQ01BIDE1LjEwLjUuMSBSZWdFeHAucHJvdG90eXBlCi0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgcmVnRXhwUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCByZWdFeHBQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0
cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDIpLCBSZWFkT25seSB8IERvbnRE
ZWxldGUgfCBEb250RW51bSk7CiB9CiAKIFJlZ0V4cE1hdGNoZXNBcnJheTo6UmVnRXhwTWF0Y2hl
c0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKiBkYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAppbmRleCA1NGM1
MDgyYzVlNGNiZGNiZWIxYmI3ZjQ2YTU4Yjk5ZjdlZWFkNmZmLi45NzZjZmY2NGI0OTljZWIwOWFm
YzFiMmEyODcxMzg2NzY0MWJjMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZUNoYWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIHZvaWQgU2NvcGVDaGFpbk5vZGU6
OnByaW50KCkgY29uc3QKIHsKICAgICBTY29wZUNoYWluSXRlcmF0b3Igc2NvcGVFbmQgPSBlbmQo
KTsKICAgICBmb3IgKFNjb3BlQ2hhaW5JdGVyYXRvciBzY29wZUl0ZXIgPSBiZWdpbigpOyBzY29w
ZUl0ZXIgIT0gc2NvcGVFbmQ7ICsrc2NvcGVJdGVyKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBvID0g
KnNjb3BlSXRlcjsKKyAgICAgICAgRGVwcmVjYXRlZFB0cjxKU09iamVjdD4gbyA9ICpzY29wZUl0
ZXI7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCkpOwogICAgICAgICBvLT5nZXRQcm9wZXJ0eU5hbWVzKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWVzKTsKICAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXk6OmNvbnN0X2l0ZXJhdG9yIHByb3BFbmQgPSBwcm9wZXJ0eU5hbWVzLmVuZCgpOwogCi0gICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiLS0tLS0gW3Njb3BlICVwXSAtLS0tLVxuIiwgbyk7CisgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiLS0tLS0gW3Njb3BlICVwXSAtLS0tLVxuIiwgby5nZXQoKSk7
CiAgICAgICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIHByb3BJdGVy
ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBwcm9wSXRlciAhPSBwcm9wRW5kOyBwcm9wSXRlcisr
KSB7CiAgICAgICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSAqcHJvcEl0ZXI7CiAgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiVzLCAiLCBuYW1lLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRleCBiMTA0ZTc1
M2MyM2ZjYjM2YjcyNDBmOTJlYjc5MjZmNDNjYTQyYTYzLi4xMWYzNjkyODU5MDFmODhhZWJhNDkw
NmI5YWY0M2FhYmUxOGM1OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Nv
cGVDaGFpbi5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIFNjb3BlQ2hhaW5faAogI2RlZmlu
ZSBTY29wZUNoYWluX2gKIAorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTIsNyArNTMsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgflNjb3BlQ2hhaW5Ob2RlKCkKICAgICAgICAgewogICAg
ICAgICAgICAgbmV4dCA9IDA7Ci0gICAgICAgICAgICBvYmplY3QgPSAwOwogICAgICAgICAgICAg
Z2xvYmFsRGF0YSA9IDA7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3QgPSAwOwogICAgICAgICAg
ICAgZ2xvYmFsVGhpcyA9IDA7CkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2Vu
ZGlmCiAKICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG5leHQ7Ci0gICAgICAgIEpTT2JqZWN0KiBv
YmplY3Q7CisgICAgICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IG9iamVjdDsKICAgICAgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0OwogICAgICAgICBKU09iamVjdCogZ2xvYmFsVGhpczsKQEAgLTEzMSw4ICsxMzEsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgSlNPYmpl
Y3QqIGNvbnN0ICYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5vYmplY3Q7IH0K
LSAgICAgICAgSlNPYmplY3QqIGNvbnN0ICogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICYo
b3BlcmF0b3IqKCkpOyB9CisgICAgICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IGNvbnN0ICYg
b3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5vYmplY3Q7IH0KKyAgICAgICAgRGVw
cmVjYXRlZFB0cjxKU09iamVjdD4gY29uc3QgKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
JihvcGVyYXRvciooKSk7IH0KICAgICAKICAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yJiBvcGVy
YXRvcisrKCkgeyBtX25vZGUgPSBtX25vZGUtPm5leHQ7IHJldHVybiAqdGhpczsgfQogCkBAIC0x
OTUsNyArMTk1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU2NvcGVDaGFpbk5vZGUq
IG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0KIAotICAgICAgICBKU09iamVjdCogdG9w
KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5vYmplY3Q7IH0KKyAgICAgICAgSlNPYmplY3QqIHRv
cCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+b2JqZWN0LmdldCgpOyB9CiAKICAgICAgICAgU2Nv
cGVDaGFpbkl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5iZWdpbigpOyB9
CiAgICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX25vZGUt
PmVuZCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29w
ZUNoYWluTWFyay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbk1h
cmsuaAppbmRleCA5ODRkMTAxMzY4YTliYzljYTA3OGRhMjdhY2NiMDJmNzVhMWRlZWQ2Li4zZWVh
ZjM0NTNkYjFlNzU4MzI0NDQ0NDEyM2FlN2VmMWQzMDc5ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluTWFyay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW5NYXJrLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIHZvaWQgU2NvcGVDaGFpbjo6bWFya0FnZ3JlZ2F0ZShN
YXJrU3RhY2smIG1hcmtTdGFjaykgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAoU2NvcGVDaGFp
bk5vZGUqIG4gPSBtX25vZGU7IG47IG4gPSBuLT5uZXh0KQotICAgICAgICAgICAgbWFya1N0YWNr
LmFwcGVuZChuLT5vYmplY3QpOworICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZChuLT5vYmpl
Y3Quc2xvdCgpKTsKICAgICB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKaW5kZXggNTYxNDkzMmZmZTAwZWY5
YmZiNjkyZmE0YzcyZWMzMWJlNGRiZGYxMS4uMzg5NTg1Njg5MzZlZWIyNDcwMjAyZjk4NzcwZDc4
YTc3NzJjNTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21h
bGxTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0
cmluZ3MuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbnVtQ2hhcmFjdGVyc1RvU3RvcmUgPSAweDEwMDsKIAotc3RhdGljIGlubGlu
ZSBib29sIGlzTWFya2VkKEpTU3RyaW5nKiBzdHJpbmcpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNN
YXJrZWQoSlNDZWxsKiBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIHN0cmluZyAmJiBIZWFwOjppc0Nl
bGxNYXJrZWQoc3RyaW5nKTsKIH0KQEAgLTgzLDkgKzgzLDkgQEAgdm9pZCBTbWFsbFN0cmluZ3M6
Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKICAgICAgICBzbywgaXQncyBwcm9i
YWJseSByZWFzb25hYmxlIHRvIG1hcmsgdGhlIHJlc3QuIElmIG5vdCwgd2UgY2xlYXIgdGhlIGNh
Y2hlLgogICAgICAqLwogCi0gICAgYm9vbCBpc0FueVN0cmluZ01hcmtlZCA9IGlzTWFya2VkKG1f
ZW1wdHlTdHJpbmcpOworICAgIGJvb2wgaXNBbnlTdHJpbmdNYXJrZWQgPSBpc01hcmtlZChtX2Vt
cHR5U3RyaW5nLmdldCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ2hhcmFj
dGVyc1RvU3RvcmUgJiYgIWlzQW55U3RyaW5nTWFya2VkOyArK2kpCi0gICAgICAgIGlzQW55U3Ry
aW5nTWFya2VkID0gaXNNYXJrZWQobV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2ldKTsKKyAgICAg
ICAgaXNBbnlTdHJpbmdNYXJrZWQgPSBpc01hcmtlZChtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3Nb
aV0uZ2V0KCkpOwogICAgIAogICAgIGlmICghaXNBbnlTdHJpbmdNYXJrZWQpIHsKICAgICAgICAg
Y2xlYXIoKTsKQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIFNtYWxsU3RyaW5nczo6bWFya0NoaWxk
cmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgIH0KICAgICAKICAgICBpZiAobV9lbXB0eVN0
cmluZykKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX2VtcHR5U3RyaW5nKTsKKyAgICAgICAg
bWFya1N0YWNrLmFwcGVuZChtX2VtcHR5U3RyaW5nLnNsb3QoKSk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnNUb1N0b3JlOyArK2kpIHsKICAgICAgICAgaWYgKG1f
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tpXSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
bV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2ldKTsKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBl
bmQobV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2ldLnNsb3QoKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCmluZGV4IGFjODRmZTg4
NzM1NTE2OThjZTY5ODkzMTNiNmVlMTdmMTg4YjY0MjMuLmVlNzk1YjYyMjM4MTU0ODRmY2JhZmNj
MWJjZmQ2YzlkNzA0ODU3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nt
YWxsU3RyaW5ncy5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFNtYWxsU3RyaW5nc19oCiAK
ICNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZpeGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTQ3LDEz
ICs0OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X2VtcHR5U3RyaW5nKQogICAgICAgICAgICAgICAgIGNyZWF0ZUVtcHR5U3RyaW5nKGdsb2JhbERh
dGEpOwotICAgICAgICAgICAgcmV0dXJuIG1fZW1wdHlTdHJpbmc7CisgICAgICAgICAgICByZXR1
cm4gbV9lbXB0eVN0cmluZy5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBKU1N0cmluZyogc2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgdW5zaWduZWQgY2hh
ciBjaGFyYWN0ZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9zaW5nbGVDaGFyYWN0
ZXJTdHJpbmdzW2NoYXJhY3Rlcl0pCiAgICAgICAgICAgICAgICAgY3JlYXRlU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKGdsb2JhbERhdGEsIGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICByZXR1cm4gbV9z
aW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl07CisgICAgICAgICAgICByZXR1cm4gbV9z
aW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl0uZ2V0KCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBTdHJpbmdJbXBsKiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAodW5zaWduZWQgY2hhciBj
aGFyYWN0ZXIpOwpAQCAtNjMsMTQgKzY0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHVuc2lnbmVkIGNvdW50KCkgY29uc3Q7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgSlNTdHJp
bmcqKiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkgeyByZXR1cm4gbV9zaW5nbGVDaGFyYWN0ZXJT
dHJpbmdzLmRhdGEoKTsgfQorICAgICAgICBKU0NlbGwqKiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdz
KCkgeyByZXR1cm4gbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzWzBdLnNsb3QoKTsgfQogI2VuZGlm
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERh
dGEqKTsKICAgICAgICAgdm9pZCBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxE
YXRhKiwgdW5zaWduZWQgY2hhcik7CiAKLSAgICAgICAgSlNTdHJpbmcqIG1fZW1wdHlTdHJpbmc7
Ci0gICAgICAgIEZpeGVkQXJyYXk8SlNTdHJpbmcqLCAweDEwMD4gbV9zaW5nbGVDaGFyYWN0ZXJT
dHJpbmdzOworICAgICAgICBEZXByZWNhdGVkUHRyPEpTU3RyaW5nPiBtX2VtcHR5U3RyaW5nOwor
ICAgICAgICBGaXhlZEFycmF5PERlcHJlY2F0ZWRQdHI8SlNTdHJpbmc+LCAweDEwMD4gbV9zaW5n
bGVDaGFyYWN0ZXJTdHJpbmdzOwogICAgICAgICBPd25QdHI8U21hbGxTdHJpbmdzU3RvcmFnZT4g
bV9zdG9yYWdlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRleCAxMDE2NTBjM2MyMWI1ZGIyODJhZDA4Njdk
NjMzZjQ3NWI5ODkxZjQxLi42MDQ0NzNiZGMyODM4MjVlNjY4MDVmNDFkYjlkYTYwMzhiMTNlNGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3Ry
dWN0b3IuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNs
YXNzTmFtZSkpCiB7CiAgICAgLy8gRUNNQSAxNS41LjMuMSBTdHJpbmcucHJvdG90eXBlCi0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgc3RyaW5nUHJvdG90eXBlLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzdHJpbmdQcm90b3R5cGUsIFJlYWRPbmx5IHwgRG9u
dEVudW0gfCBEb250RGVsZXRlKTsKIAogICAgIC8vIEVDTUEgMTUuNS4zLjIgZnJvbUNoYXJDb2Rl
KCkKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSklUX09QVElNSVpFX05BVElWRV9DQUxMKQpA
QCAtNjIsNyArNjIsNyBAQCBTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIHB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldy
YXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmZyb21DaGFyQ29kZSwgc3RyaW5nRnJvbUNoYXJDb2RlKSwg
RG9udEVudW0pOwogI2VuZGlmCiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0
b3IKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0g
fCBEb250RGVsZXRlKTsKIH0KIAogLy8gRUNNQSAxNS41LjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IGRjMjc2MTg4MWE0NjFiNGM1MGFk
ZDc1NGNiZmIxNjZhYWUyOTBiZDMuLjYzZTQxNDQ1NjMxZDU0MTgyM2RkNTU4YWEyODExMzliNmIz
NDQ5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmNwcApAQCAtMzIsMTkgKzMyLDE5IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdPYmplY3Q6Omlu
Zm8gPSB7ICJTdHJpbmciLCAwLCAwLCAwIH07CiBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChF
eGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQog
ICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKIHsKLSAgICBzZXRJbnRlcm5hbFZhbHVl
KGpzRW1wdHlTdHJpbmcoZXhlYykpOworICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBqc0VtcHR5U3RyaW5nKGV4ZWMpKTsKIH0KIAotU3RyaW5nT2JqZWN0OjpTdHJpbmdP
YmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBz
dHJpbmcpCitTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU1N0cmluZyogc3Ry
aW5nKQogICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKIHsKLSAgICBzZXRJbnRlcm5h
bFZhbHVlKHN0cmluZyk7CisgICAgc2V0SW50ZXJuYWxWYWx1ZShnbG9iYWxEYXRhLCBzdHJpbmcp
OwogfQogCiBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcp
CiAgICAgOiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAgIHNldEludGVybmFsVmFs
dWUoanNTdHJpbmcoZXhlYywgc3RyaW5nKSk7CisgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5n
bG9iYWxEYXRhKCksIGpzU3RyaW5nKGV4ZWMsIHN0cmluZykpOwogfQogCiBib29sIFN0cmluZ09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IGUzYWRkNzdiOTJiYmZmNTg0MzE4NmI0
NmRlYzRlZDVjZWRjMDc3MzguLjAzNDg4ZjU3MWU3MDc1Mzc5ZGY4ZGVmMzg1YmNiNzUwMDRlOWQw
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBA
IC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzIHwgSlNXcmFwcGVyT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLSAgICAgICAgU3RyaW5n
T2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEpTU3RyaW5nKik7CisgICAgICAg
IFN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
LCBKU1N0cmluZyopOwogICB9OwogCiAgICAgU3RyaW5nT2JqZWN0KiBhc1N0cmluZ09iamVjdChK
U1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCmluZGV4IDhiM2QwNTZjOGVhYWM4NmJiYjQzZGY0MTlkZjU5MzRkNThhZDZkNGMu
LjZjZjA3OTIxOWI5NzI2NzkzNDYzYTRiMzZjMDNmZDQyMmZkZTQ5ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTM2LDcg
KzEzNiw3IEBAIFN0cmluZ1Byb3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBwdXRBbm9ueW1vdXNWYWx1
ZSgwLCBnbG9iYWxPYmplY3QpOwogICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVk
IGxhdGVyLCBhZnRlciBTdHJpbmdDb25zdHJ1Y3RvciBoYXMgYmVlbiBidWlsdAotICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVt
YmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OwogfQogCiBib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNs
b3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAw
MTc5ZWVkYjBjNDljZTE3ZDdhY2E1OWM2OTRmZDliNWI5OWViZWRmLi45MjM4YWM3NDA2NDVmMjlm
OWUzMWY1YmYzYzQ5ZWE0NjA2ZmU2YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTYyMCw3ICs2MjAsNyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gU3RydWN0dXJlOjp0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJl
KiBzdAogICAgIHJldHVybiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSwgVW5jYWNo
ZWREaWN0aW9uYXJ5S2luZCk7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6
OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTT2JqZWN0KiBvYmplY3QpCitQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKGlzRGlj
dGlvbmFyeSgpKTsKICAgICBpZiAoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewpAQCAtNjUx
LDcgKzY1MSw3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0
aW9uYXJ5U3RydWN0dXJlKEpTT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIAogICAgICAgICAvLyBD
b3B5IHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSB2YWx1ZXMgaW50byB0aGVpciBmaW5hbCBsb2NhdGlv
bnMKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7IGkrKykK
LSAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGFub255bW91c1Nsb3RDb3VudCAr
IGksIHZhbHVlc1tpXSk7CisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9i
YWxEYXRhLCBhbm9ueW1vdXNTbG90Q291bnQgKyBpLCB2YWx1ZXNbaV0pOwogCiAgICAgICAgIGlm
IChtX3Byb3BlcnR5VGFibGUtPmRlbGV0ZWRPZmZzZXRzKSB7CiAgICAgICAgICAgICBkZWxldGUg
bV9wcm9wZXJ0eVRhYmxlLT5kZWxldGVkT2Zmc2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZjQ4MDA1MWUwYjg2ODgxNDk2MThiMzcxYWY1N2NlMThi
NzE2YTRjOC4uMGM2ZDVmZWY5ODkzMTMwNjYyMjZjNzdlZDkxOTJhZGJkZmUxNzEzYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTgwLDcgKzgwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9D
YWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24o
U3RydWN0dXJlKik7CiAKLSAgICAgICAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGZsYXR0ZW5EaWN0
aW9uYXJ5U3RydWN0dXJlKEpTT2JqZWN0Kik7CisgICAgICAgIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwog
CiAgICAgICAgIH5TdHJ1Y3R1cmUoKTsKIApAQCAtOTUsNiArOTUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlSW5mbzsgfQogCiAgICAgICAgIEpTVmFsdWUgc3RvcmVkUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm90b3R5cGU7IH0KKyAgICAgICAgSlNWYWx1ZSogc3RvcmVkUHJvdG90eXBlU2xv
dCgpIHsgcmV0dXJuICZtX3Byb3RvdHlwZTsgfQogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZUZv
ckxvb2t1cChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3Rv
dHlwZUNoYWluKEV4ZWNTdGF0ZSopIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtHQ01hcC5oCmluZGV4IDMxNjc5NGY0MTM3MDVkZWU1MDgzNzllNWQ1OTA0NjRmMTg2
YjkzNzUuLmQwM2ZkYjBhNGIyY2Q3ZTk1YjBhN2Q0OGEzYmM4NzI5MjM2OTE4OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCkBAIC00NiwyMiArNDYsMjkgQEAg
Y2xhc3MgV2Vha0dDTWFwIHsKICAgICAqLwogCiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFt
ZSBIYXNoTWFwPEtleVR5cGUsIE1hcHBlZFR5cGU+OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0
eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46OmNvbnN0X2l0ZXJh
dG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxLZXlUeXBl
LCBEZXByZWNhdGVkUHRyPE1hcHBlZFR5cGU+ID46Oml0ZXJhdG9yIGl0ZXJhdG9yOworICAgIHR5
cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxLZXlUeXBlLCBEZXByZWNhdGVkUHRyPE1hcHBlZFR5cGU+
ID46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIAogICAgIGJvb2wgaXNFbXB0
eSgpIHsgcmV0dXJuIG1fbWFwLmlzRW1wdHkoKTsgfQogICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFw
LmNsZWFyKCk7IH0KIAotICAgIE1hcHBlZFR5cGUgZ2V0KGNvbnN0IEtleVR5cGUmIGtleSkgY29u
c3Q7Ci0gICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KGNvbnN0IEtleVR5cGUmLCBjb25zdCBN
YXBwZWRUeXBlJik7IAotICAgIE1hcHBlZFR5cGUgdGFrZShjb25zdCBLZXlUeXBlJiBrZXkpOwor
ICAgIE1hcHBlZFR5cGUqIGdldChjb25zdCBLZXlUeXBlJikgY29uc3Q7CisgICAgcGFpcjxpdGVy
YXRvciwgYm9vbD4gc2V0KGNvbnN0IEtleVR5cGUmLCBNYXBwZWRUeXBlKik7IAorICAgIE1hcHBl
ZFR5cGUqIHRha2UoY29uc3QgS2V5VHlwZSYpOwogCiAgICAgLy8gVGhlc2UgdW5jaGVja2VkIGZ1
bmN0aW9ucyBwcm92aWRlIGFjY2VzcyB0byBhIHZhbHVlIGV2ZW4gaWYgdGhlIHZhbHVlJ3MKICAg
ICAvLyBtYXJrIGJpdCBpcyBub3Qgc2V0LiBUaGlzIGlzIHVzZWQsIGFtb25nIG90aGVyIHRoaW5n
cywgdG8gcmV0cmlldmUgdmFsdWVzCiAgICAgLy8gZHVyaW5nIHRoZSBHQyBtYXJrIHBoYXNlLCB3
aGljaCBiZWdpbnMgYnkgY2xlYXJpbmcgYWxsIG1hcmsgYml0cy4KIAotICAgIE1hcHBlZFR5cGUg
dW5jaGVja2VkR2V0KGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QgeyByZXR1cm4gbV9tYXAuZ2V0
KGtleSk7IH0KLSAgICBib29sIHVuY2hlY2tlZFJlbW92ZShjb25zdCBLZXlUeXBlJiwgY29uc3Qg
TWFwcGVkVHlwZSYpOworICAgIE1hcHBlZFR5cGUqIHVuY2hlY2tlZEdldChjb25zdCBLZXlUeXBl
JiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmdldChrZXkpLmdldCgpOyB9CisgICAgSlNDZWxs
KiogdW5jaGVja2VkR2V0U2xvdChjb25zdCBLZXlUeXBlJiBrZXkpCisgICAgeworICAgICAgICBp
dGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOworICAgICAgICBpZiAoaXRlciA9PSBtX21h
cC5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gaXRlci0+c2Vj
b25kLnNsb3QoKTsKKyAgICB9CisgICAgYm9vbCB1bmNoZWNrZWRSZW1vdmUoY29uc3QgS2V5VHlw
ZSYsIE1hcHBlZFR5cGUqKTsKIAogICAgIGl0ZXJhdG9yIHVuY2hlY2tlZEJlZ2luKCkgeyByZXR1
cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGl0ZXJhdG9yIHVuY2hlY2tlZEVuZCgpIHsgcmV0dXJu
IG1fbWFwLmVuZCgpOyB9CkBAIC03MCw1MCArNzcsNTAgQEAgcHVibGljOgogICAgIGNvbnN0X2l0
ZXJhdG9yIHVuY2hlY2tlZEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgSGFzaE1hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPiBtX21hcDsKKyAgICBIYXNo
TWFwPEtleVR5cGUsIERlcHJlY2F0ZWRQdHI8TWFwcGVkVHlwZT4gPiBtX21hcDsKIH07CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+Ci1pbmxpbmUgTWFw
cGVkVHlwZSBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46OmdldChjb25zdCBLZXlUeXBl
JiBrZXkpIGNvbnN0CitpbmxpbmUgTWFwcGVkVHlwZSogV2Vha0dDTWFwPEtleVR5cGUsIE1hcHBl
ZFR5cGU+OjpnZXQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAogewotICAgIE1hcHBlZFR5cGUg
cmVzdWx0ID0gbV9tYXAuZ2V0KGtleSk7Ci0gICAgaWYgKHJlc3VsdCA9PSBIYXNoVHJhaXRzPE1h
cHBlZFR5cGU+OjplbXB0eVZhbHVlKCkpCisgICAgTWFwcGVkVHlwZSogcmVzdWx0ID0gbV9tYXAu
Z2V0KGtleSkuZ2V0KCk7CisgICAgaWYgKHJlc3VsdCA9PSBIYXNoVHJhaXRzPE1hcHBlZFR5cGUq
Pjo6ZW1wdHlWYWx1ZSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGlmICghSGVhcDo6
aXNDZWxsTWFya2VkKHJlc3VsdCkpCi0gICAgICAgIHJldHVybiBIYXNoVHJhaXRzPE1hcHBlZFR5
cGU+OjplbXB0eVZhbHVlKCk7CisgICAgICAgIHJldHVybiBIYXNoVHJhaXRzPE1hcHBlZFR5cGUq
Pjo6ZW1wdHlWYWx1ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+Ci1NYXBwZWRUeXBlIFdlYWtHQ01hcDxL
ZXlUeXBlLCBNYXBwZWRUeXBlPjo6dGFrZShjb25zdCBLZXlUeXBlJiBrZXkpCitNYXBwZWRUeXBl
KiBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46OnRha2UoY29uc3QgS2V5VHlwZSYga2V5
KQogewotICAgIE1hcHBlZFR5cGUgcmVzdWx0ID0gbV9tYXAudGFrZShrZXkpOwotICAgIGlmIChy
ZXN1bHQgPT0gSGFzaFRyYWl0czxNYXBwZWRUeXBlPjo6ZW1wdHlWYWx1ZSgpKQorICAgIE1hcHBl
ZFR5cGUqIHJlc3VsdCA9IG1fbWFwLnRha2Uoa2V5KS5nZXQoKTsKKyAgICBpZiAocmVzdWx0ID09
IEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+OjplbXB0eVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgaWYgKCFIZWFwOjppc0NlbGxNYXJrZWQocmVzdWx0KSkKLSAgICAgICAgcmV0
dXJuIEhhc2hUcmFpdHM8TWFwcGVkVHlwZT46OmVtcHR5VmFsdWUoKTsKKyAgICAgICAgcmV0dXJu
IEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+OjplbXB0eVZhbHVlKCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4K
LXBhaXI8dHlwZW5hbWUgSGFzaE1hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6aXRlcmF0b3IsIGJv
b2w+IFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtl
eSwgY29uc3QgTWFwcGVkVHlwZSYgdmFsdWUpCitwYWlyPHR5cGVuYW1lIFdlYWtHQ01hcDxLZXlU
eXBlLCBNYXBwZWRUeXBlPjo6aXRlcmF0b3IsIGJvb2w+IFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBw
ZWRUeXBlPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkVHlwZSogdmFsdWUpCiB7CiAg
ICAgSGVhcDo6bWFya0NlbGwodmFsdWUpOyAvLyBJZiB2YWx1ZSBpcyBuZXdseSBhbGxvY2F0ZWQs
IGl0J3Mgbm90IG1hcmtlZCwgc28gbWFyayBpdCBub3cuCiAgICAgcGFpcjxpdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgdmFsdWUpOwogICAgIGlmICghcmVzdWx0LnNlY29u
ZCkgeyAvLyBwcmUtZXhpc3RpbmcgZW50cnkKLSAgICAgICAgcmVzdWx0LnNlY29uZCA9ICFIZWFw
Ojppc0NlbGxNYXJrZWQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICByZXN1bHQuc2Vj
b25kID0gIUhlYXA6OmlzQ2VsbE1hcmtlZChyZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKSk7CiAg
ICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gdmFsdWU7CiAgICAgfQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5
cGU+Ci1ib29sIFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6dW5jaGVja2VkUmVtb3Zl
KGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgdmFsdWUpCitib29sIFdlYWtH
Q01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6dW5jaGVja2VkUmVtb3ZlKGNvbnN0IEtleVR5cGUm
IGtleSwgTWFwcGVkVHlwZSogdmFsdWUpCiB7CiAgICAgaXRlcmF0b3IgaXQgPSBtX21hcC5maW5k
KGtleSk7CiAgICAgaWYgKGl0ID09IG1fbWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKGl0LT5zZWNvbmQgIT0gdmFsdWUpCisgICAgaWYgKGl0LT5zZWNvbmQuZ2V0KCkg
IT0gdmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX21hcC5yZW1vdmUoaXQpOwog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV3JpdGVCYXJyaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJh
cnJpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTMxMjU4MGJmOWJjMWQxMGM4NGYxOTRhODE4Y2ZlZjE1Zjcz
NzgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3Jp
dGVCYXJyaWVyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV3JpdGVC
YXJyaWVyX2gKKyNkZWZpbmUgV3JpdGVCYXJyaWVyX2gKKworbmFtZXNwYWNlIEpTQyB7CitjbGFz
cyBKU0NlbGw7CitjbGFzcyBKU0dsb2JhbERhdGE7CisKKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNs
YXNzIERlcHJlY2F0ZWRQdHIgeworcHVibGljOgorICAgIERlcHJlY2F0ZWRQdHIoKSA6IG1fY2Vs
bCgwKSB7IH0KKyAgICBEZXByZWNhdGVkUHRyKFQqIGNlbGwpIDogbV9jZWxsKHJlaW50ZXJwcmV0
X2Nhc3Q8SlNDZWxsKj4oY2VsbCkpIHsgfQorICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8VCo+KG1fY2VsbCk7IH0KKyAgICBUKiBvcGVyYXRvciooKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsgfQorICAgIAorICAgIEpTQ2Vs
bCoqIHNsb3QoKSB7IHJldHVybiAmbV9jZWxsOyB9CisgICAgCisgICAgdHlwZWRlZiBUKiAoRGVw
cmVjYXRlZFB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOworICAgIG9wZXJhdG9yIFVuc3BlY2lm
aWVkQm9vbFR5cGUqKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsID8gcmVpbnRlcnByZXRfY2FzdDxV
bnNwZWNpZmllZEJvb2xUeXBlKj4oMSkgOiAwOyB9CisKKyAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0IHsgcmV0dXJuICFtX2NlbGw7IH0KKworcHJvdGVjdGVkOgorICAgIEpTQ2VsbCogbV9jZWxs
OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdyaXRlQmFycmllckJhc2Ugewor
cHVibGljOgorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IEpTQ2VsbCosIFQqIHZh
bHVlKSB7IHRoaXMtPm1fY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odmFsdWUpOyB9
CisgICAgCisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4o
bV9jZWxsKTsgfQorICAgIFQqIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFQqPihtX2NlbGwpOyB9CisgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFQqPihtX2NlbGwpOyB9CisgICAgCisgICAgSlNDZWxsKiogc2xvdCgpIHsgcmV0dXJu
ICZtX2NlbGw7IH0KKyAgICAKKyAgICB0eXBlZGVmIFQqIChXcml0ZUJhcnJpZXJCYXNlOjoqVW5z
cGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBj
b25zdCB7IHJldHVybiBtX2NlbGwgPyByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5
cGUqPigxKSA6IDA7IH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
ICFtX2NlbGw7IH0KKworcHJvdGVjdGVkOgorICAgIEpTQ2VsbCogbV9jZWxsOworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdyaXRlQmFycmllciA6IHB1YmxpYyBXcml0ZUJhcnJp
ZXJCYXNlPFQ+IHsKK3B1YmxpYzoKKyAgICBXcml0ZUJhcnJpZXIoKSB7IHRoaXMtPm1fY2VsbCA9
IDA7IH0KKyAgICBXcml0ZUJhcnJpZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBK
U0NlbGwqIG93bmVyLCBUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNldChnbG9iYWxEYXRhLCBv
d25lciwgdmFsdWUpOworICAgIH0KKworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFY+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRGVwcmVjYXRlZFB0cjxVPiYgbGhz
LCBjb25zdCBEZXByZWNhdGVkUHRyPFY+JiByaHMpCit7CisgICAgcmV0dXJuIGxocy5nZXQoKSA9
PSByaHMuZ2V0KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdyaXRlQmFycmllckJhc2U8VT4mIGxocywgY29uc3Qg
V3JpdGVCYXJyaWVyQmFzZTxWPiYgcmhzKQoreworICAgIHJldHVybiBsaHMuZ2V0KCkgPT0gcmhz
LmdldCgpOworfQorCit9CisKKyNlbmRpZiAvLyBXcml0ZUJhcnJpZXJfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9D
aGFuZ2VMb2cKaW5kZXggMmJlNGNlYmE5MjY5Mjc1NWRmOTg5MWNlYTIxMWRhOTQ4ZjM4YzQzMi4u
ZGZmOGQxZGExNzc1ZWJkOGUwMDkxZDQ0MmM0NmQwMDJiMjJjMWZjYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDEtMjcgIE9saXZlciBIdW50ICA8b2xp
dmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb252ZXJ0IG1hcmtzdGFjayB0byBhIHNsb3QgdmlzaXRvciBBUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMjE5CisKKyAgICAgICAg
VGhlcmUncyBubyByZWFzb24gdG8gcmVjdXJzZSBoZXJlLCB0aGUgdmFsdWUgd2UKKyAgICAgICAg
d2VyZSBtYXJraW5nIHdhcyBwcm90ZWN0ZWQuCisKKyAgICAgICAgKiBKU1ZhbHVlV3JhcHBlci5j
cHA6CisgICAgICAgIChKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RNYXJrKToKKwogMjAxMS0wMS0y
MyAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvdy11cCB0byBy
NzY0NzcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBwZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNwcAppbmRleCBlMDg3
OWEwMGViMjY4Y2M1YjM3Y2Q2OWFhNTAyODAxNWQ1OTI4ZThkLi5kOWFjNDk3ZDkxOTQyZGNiYWU3
Nzg1Y2Q3YzNiMWE1NDUyNzY4Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUv
SlNWYWx1ZVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3Jh
cHBlci5jcHAKQEAgLTE5NCwxNSArMTk0LDQgQEAgQ0ZUeXBlUmVmIEpTVmFsdWVXcmFwcGVyOjpK
U09iamVjdENvcHlDRlZhbHVlKHZvaWQgKmRhdGEpCiAKIHZvaWQgSlNWYWx1ZVdyYXBwZXI6OkpT
T2JqZWN0TWFyayh2b2lkICpkYXRhKQogewotICAgIEpTVmFsdWVXcmFwcGVyKiBwdHIgPSAoSlNW
YWx1ZVdyYXBwZXIqKWRhdGE7Ci0gICAgaWYgKHB0cikKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMg
cmVzdWx0cyBpbiByZWN1cnNpdmUgbWFya2luZyBidXQgd2lsbCBiZSBvdGhlcndpc2Ugc2FmZSBh
bmQgY29ycmVjdC4KLSAgICAgICAgLy8gV2UgY2xhaW0gdGhlIGFycmF5IHZwdHIgaXMgMCBiZWNh
dXNlIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGl0IGhlcmUsIGFuZAotICAgICAgICAvLyBjbGFp
bWluZyAwIGlzIGZ1bmN0aW9uYWxseSBoYXJtbGVzcyAtLSBpdCBtZXJlbHkgbWVhbnMgdGhhdCB3
ZSBjYW4ndAotICAgICAgICAvLyBkZXZpcnR1YWxpc2UgbWFya2luZyBvZiBhcnJheXMgd2hlbiBy
ZWN1cnNpbmcgZnJvbSB0aGlzIHBvaW50LgotICAgICAgICBNYXJrU3RhY2sgbWFya1N0YWNrKDAp
OwotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHB0ci0+ZlZhbHVlLmdldCgpKTsKLSAgICAgICAg
bWFya1N0YWNrLmRyYWluKCk7Ci0gICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM3ZDVjYjRmZGYwNmU2
MzBlZDMxNWU1OWZiZjAwN2U3NWE5MzA2YzYuLjRlZmEwYmQ1NDI1YWYwZTljNmNlYjg4NjBmNjc5
MzE2NGE4OWUxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxMS0wMS0yNyAgT2xp
dmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgbWFya3N0YWNrIHRvIGEgc2xvdCB2aXNpdG9y
IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMy
MTkKKworICAgICAgICBVcGRhdGUgV2ViQ29yZSB0byB0aGUgbmV3IG1hcmtpbmcgYXBpcywgY29y
cmVjdCBiaW5kaW5ncworICAgICAgICBjb2RlZ2VuLiAKKworICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpnbG9iYWxEYXRhKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRp
b0NvbnN0cnVjdG9yOjpKU0F1ZGlvQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrRE9NTm9kZXNGb3JEb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjptYXJrRE9NT2JqZWN0V3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjptYXJrRE9NTm9kZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0
OjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OnNl
dEluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojpp
bmplY3RlZFNjcmlwdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpKU0RPTUdsb2JhbE9iamVj
dERhdGE6OkpTRE9NR2xvYmFsT2JqZWN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRET01D
b25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpYWxvZ0hhbmRsZXI6OmRpYWxvZ0NyZWF0ZWQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3dTaGVsbDo6SlNET01XaW5kb3dTaGVsbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
d1NoZWxsOjpzZXRXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6
bWFya0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnVud3Jh
cHBlZE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6d2luZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnNldFdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5l
cjo6SlNFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6
bWFya0pTRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5o
OgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpqc0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxEb2N1bWVudDo6c2V0QWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lt
YWdlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbWFnZUNvbnN0cnVjdG9y
OjpKU0ltYWdlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRh
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNK
YXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZVR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Tm9kZUZpbHRlckNvbmRpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXJD
b25kaXRpb246Om1hcmtBZ2dyZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVy
Q29uZGl0aW9uOjphY2NlcHROb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0
ZXJDb25kaXRpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNPcHRpb25Db25zdHJ1Y3Rvcjo6SlNPcHRpb25Db25zdHJ1Y3Rvcik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEdsb2JhbE9iamVj
dDo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnB1dFByb3BlcnR5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKwogMjAxMS0wMS0yNiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1dyaXRlQmFycmllci5oIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODU3
ZDJmZjY2ZmI1YzNlZGQ4YWRiOGIyN2E5Njg4OGYxNWFlYjRiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApA
QCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfV3JpdGVCYXJyaWVyX2gKKyNkZWZp
bmUgV2ViQ29yZV9GV0RfV3JpdGVCYXJyaWVyX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9X
cml0ZUJhcnJpZXIuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBhY2M2Y2I5YTQw
OTBmZGQ4MTUzZmFhNmZlNTJiYzc2NGY1M2M3ZjcwLi40OWNhNzZhMGFiODY2ODg5MDNhM2NhZjY1
YTY1YmM5ZmNiN2IxZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNDQ2LDcgKzQ0Niw2IEBA
IF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1cEVQS05TXzVSYW5nZUUKIF9fWk43V2ViQ29y
ZTE2ZW5jbG9zaW5nSW50UmVjdEVSSzdfTlNSZWN0CiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0lu
dFJlY3RFUktOU185RmxvYXRSZWN0RQogX19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJL
TlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCi1f
X1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTlMwXzlXZWFr
R0NNYXBJUE4zV1RGMTBTdHJpbmdJbXBsRVBOUzBfOEpTU3RyaW5nRUVFUzZfCiBfX1pON1dlYkNv
cmUxN0NyZWRlbnRpYWxTdG9yYWdlM2dldEVSS05TXzE1UHJvdGVjdGlvblNwYWNlRQogX19aTjdX
ZWJDb3JlMTdET01JbXBsZW1lbnRhdGlvbjEzaXNYTUxNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UK
IF9fWk43V2ViQ29yZTE3RE9NSW1wbGVtZW50YXRpb24xNGlzVGV4dE1JTUVUeXBlRVJLTjNXVEY2
U3RyaW5nRQpAQCAtMTQyOCw2ICsxNDI3LDcgQEAgX19OUE5fU2V0UHJvcGVydHkKIF9fTlBOX1VU
RjhGcm9tSWRlbnRpZmllcgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjB3aW5kb3dT
Y3JpcHROUE9iamVjdEV2CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIyOWNsZWFudXBT
Y3JpcHRPYmplY3RzRm9yUGx1Z2luRVB2CitfX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VF
UE4zSlNDOUV4ZWNTdGF0ZUVSTlMwXzlXZWFrR0NNYXBJUE4zV1RGMTBTdHJpbmdJbXBsRU5TMF84
SlNTdHJpbmdFRUVTNl8KIF9fWk43V2ViQ29yZTE3SFRNTFBsdWdJbkVsZW1lbnQxMWdldE5QT2Jq
ZWN0RXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDR2aWV3RXYKIF9fWk5LN1dlYkNvcmUx
NFNlY3VyaXR5T3JpZ2luOWNhbkFjY2Vzc0VQS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01XcmFwcGVyV29ybGQuaAppbmRleCA1ZTdiNTUxM2ZlNjI2NWM5YzBkNTZmZWQyMTU2
OWYwYjBlYjNlODdmLi45ODI1YTA4ZjMwYWQ5ZjVmMzU0YTQ0OWMxN2I3NmY0ZjgwMGZjMjI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaApAQCAtMzIs
OCArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXI7
CiAKLXR5cGVkZWYgSlNDOjpXZWFrR0NNYXA8dm9pZCosIERPTU9iamVjdCo+IERPTU9iamVjdFdy
YXBwZXJNYXA7Ci10eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFN0cmluZ0ltcGwqLCBKU0M6OkpTU3Ry
aW5nKj4gSlNTdHJpbmdDYWNoZTsgCit0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPHZvaWQqLCBET01P
YmplY3Q+IERPTU9iamVjdFdyYXBwZXJNYXA7Cit0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFN0cmlu
Z0ltcGwqLCBKU0M6OkpTU3RyaW5nPiBKU1N0cmluZ0NhY2hlOyAKIAogY2xhc3MgRE9NV3JhcHBl
cldvcmxkIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NV3JhcHBlcldvcmxkPiB7CiBwdWJsaWM6CkBA
IC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNOb3JtYWwoKSBjb25zdCB7IHJl
dHVybiBtX2lzTm9ybWFsOyB9CiAKKyAgICBKU0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRE9NV3Jh
cHBlcldvcmxkKEpTQzo6SlNHbG9iYWxEYXRhKiwgYm9vbCBpc05vcm1hbCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwCmluZGV4IDFl
YTVhZTQwMWRkZDBhNDY3ZDEzYzg2NWJlZDcwOTY3MDQ4NzM4YzMuLmMxOWQ3OTU3ZDc5YzU5YTg1
NDllZDUxOTQwOTJmZjI1YWRkYzkwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcApAQCAtNDIsOCArNDIsOCBAQCBjb25zdCBDbGFz
c0luZm8gSlNBdWRpb0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBdWRpb0NvbnN0cnVjdG9yIiwg
MCwgMCwgMCB9OwogSlNBdWRpb0NvbnN0cnVjdG9yOjpKU0F1ZGlvQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogRE9NQ29u
c3RydWN0b3JXaXRoRG9jdW1lbnQoSlNBdWRpb0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSksIGdsb2JhbE9iamVjdCkKIHsKLSAgICBw
dXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNIVE1MQXVkaW9FbGVt
ZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOwotICAgIHB1dERp
cmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkg
fCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTSFRNTEF1ZGlvRWxlbWVudFBy
b3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKKyAgICBwdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJl
cigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogfQogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBdWRpbyhFeGVjU3RhdGUqIGV4ZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBlNTNk
Y2ZiNjAxYWEyYjkyZmExZTViMDhmNDQ2NjJmNzM0MjNjNzZkLi5iZGI1YmJmODg1ZGFiMmY5MGRh
MmE2YmUxYTgwMzZlM2UxNmRkN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAKQEAgLTMzNSw5ICszMzUsOSBAQCB2b2lkIG1hcmtET01Ob2Rlc0ZvckRv
Y3VtZW50KE1hcmtTdGFjayYgbWFya1N0YWNrLCBEb2N1bWVudCogZG9jdW1lbnQpCiAKICAgICAg
ICAgSlNXcmFwcGVyQ2FjaGU6Oml0ZXJhdG9yIG5vZGVFbmQgPSBub2RlRGljdC0+dW5jaGVja2Vk
RW5kKCk7CiAgICAgICAgIGZvciAoSlNXcmFwcGVyQ2FjaGU6Oml0ZXJhdG9yIG5vZGVJdCA9IG5v
ZGVEaWN0LT51bmNoZWNrZWRCZWdpbigpOyBub2RlSXQgIT0gbm9kZUVuZDsgKytub2RlSXQpIHsK
LSAgICAgICAgICAgIEpTTm9kZSoganNOb2RlID0gbm9kZUl0LT5zZWNvbmQ7Ci0gICAgICAgICAg
ICBpZiAoaXNPYnNlcnZhYmxlVGhyb3VnaERPTShqc05vZGUsIHdvcmxkKSkKLSAgICAgICAgICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKGpzTm9kZSk7CisgICAgICAgICAgICBEZXByZWNhdGVkUHRy
PEpTTm9kZT4mIGpzTm9kZSA9IG5vZGVJdC0+c2Vjb25kOworICAgICAgICAgICAgaWYgKGlzT2Jz
ZXJ2YWJsZVRocm91Z2hET00oanNOb2RlLmdldCgpLCB3b3JsZCkpCisgICAgICAgICAgICAgICAg
bWFya1N0YWNrLmFwcGVuZChqc05vZGUuc2xvdCgpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAg
LTQxNiw4ICs0MTYsOCBAQCB2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKE1hcmtTdGFjayYgbWFy
a1N0YWNrLCBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHZvaWQqCiAgICAgICAgIHJldHVybjsK
IAogICAgIGZvciAoSlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvciB3b3JsZEl0ZXIoJmdsb2JhbERh
dGEpOyB3b3JsZEl0ZXI7ICsrd29ybGRJdGVyKSB7Ci0gICAgICAgIGlmIChET01PYmplY3QqIHdy
YXBwZXIgPSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0KG9iamVjdCkpCi0gICAg
ICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHdyYXBwZXIpOworICAgICAgICBpZiAoSlNDZWxsKiog
d3JhcHBlclNsb3QgPSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0U2xvdChvYmpl
Y3QpKQorICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCh3cmFwcGVyU2xvdCk7CiAgICAgfQog
fQogCkBAIC00MjYsMTUgKzQyNiwxNSBAQCB2b2lkIG1hcmtET01Ob2RlV3JhcHBlcihNYXJrU3Rh
Y2smIG1hcmtTdGFjaywgRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQogICAgIGlmIChk
b2N1bWVudCkgewogICAgICAgICBKU1dyYXBwZXJDYWNoZU1hcCYgd3JhcHBlckNhY2hlTWFwID0g
ZG9jdW1lbnQtPndyYXBwZXJDYWNoZU1hcCgpOwogICAgICAgICBmb3IgKEpTV3JhcHBlckNhY2hl
TWFwOjppdGVyYXRvciBpdGVyID0gd3JhcHBlckNhY2hlTWFwLmJlZ2luKCk7IGl0ZXIgIT0gd3Jh
cHBlckNhY2hlTWFwLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmIChKU05vZGUqIHdy
YXBwZXIgPSBpdGVyLT5zZWNvbmQtPnVuY2hlY2tlZEdldChub2RlKSkKLSAgICAgICAgICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKHdyYXBwZXIpOworICAgICAgICAgICAgaWYgKEpTQ2VsbCoqIHdy
YXBwZXJTbG90ID0gaXRlci0+c2Vjb25kLT51bmNoZWNrZWRHZXRTbG90KG5vZGUpKQorICAgICAg
ICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQod3JhcHBlclNsb3QpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKEpTR2xvYmFsRGF0YVdvcmxkSXRlcmF0b3Ig
d29ybGRJdGVyKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7IHdvcmxkSXRlcjsg
Kyt3b3JsZEl0ZXIpIHsKLSAgICAgICAgaWYgKERPTU9iamVjdCogd3JhcHBlciA9IHdvcmxkSXRl
ci0+bV93cmFwcGVycy51bmNoZWNrZWRHZXQobm9kZSkpCi0gICAgICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKHdyYXBwZXIpOworICAgICAgICBpZiAoSlNDZWxsKiogd3JhcHBlclNsb3QgPSB3b3Js
ZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0U2xvdChub2RlKSkKKyAgICAgICAgICAgIG1h
cmtTdGFjay5hcHBlbmQod3JhcHBlclNsb3QpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGUwYjViODkxZDQw
YmZjMDA3YjkzYWI3YmZjMWI3NjY0YzlhMzhmZTYuLjgyOGFiNDljZGI5NjVjZGZjZTk5MTlhMjU2
OTE4ZjQyMjEzM2Q1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKQEAgLTUzLDE0ICs1MywxNCBAQCB2b2lkIEpTRE9NR2xvYmFsT2Jq
ZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAKICAgICBKU0RPTVN0cnVj
dHVyZU1hcDo6aXRlcmF0b3IgZW5kID0gc3RydWN0dXJlcygpLmVuZCgpOwogICAgIGZvciAoSlNE
T01TdHJ1Y3R1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gc3RydWN0dXJlcygpLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChpdC0+c2Vjb25kLT5zdG9yZWRQ
cm90b3R5cGUoKSk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoaXQtPnNlY29uZC0+c3RvcmVk
UHJvdG90eXBlU2xvdCgpKTsKIAogICAgIEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGVu
ZDIgPSBjb25zdHJ1Y3RvcnMoKS5lbmQoKTsKICAgICBmb3IgKEpTRE9NQ29uc3RydWN0b3JNYXA6
Oml0ZXJhdG9yIGl0MiA9IGNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0MiAhPSBlbmQyOyArK2l0
MikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChpdDItPnNlY29uZCk7CisgICAgICAgIG1hcmtT
dGFjay5hcHBlbmQoaXQyLT5zZWNvbmQuc2xvdCgpKTsKIAogICAgIGlmIChkKCktPm1faW5qZWN0
ZWRTY3JpcHQpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoZCgpLT5tX2luamVjdGVkU2NyaXB0
KTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZChkKCktPm1faW5qZWN0ZWRTY3JpcHQuc2xvdCgp
KTsKIH0KIAogdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6c2V0Q3VycmVudEV2ZW50KEV2ZW50KiBl
dnQpCkBAIC03NSwxMiArNzUsMTIgQEAgRXZlbnQqIEpTRE9NR2xvYmFsT2JqZWN0OjpjdXJyZW50
RXZlbnQoKSBjb25zdAogCiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpzZXRJbmplY3RlZFNjcmlw
dChKU09iamVjdCogaW5qZWN0ZWRTY3JpcHQpCiB7Ci0gICAgZCgpLT5tX2luamVjdGVkU2NyaXB0
ID0gaW5qZWN0ZWRTY3JpcHQ7CisgICAgZCgpLT5tX2luamVjdGVkU2NyaXB0LnNldChnbG9iYWxE
YXRhKCksIHRoaXMsIGluamVjdGVkU2NyaXB0KTsKIH0KIAogSlNPYmplY3QqIEpTRE9NR2xvYmFs
T2JqZWN0OjppbmplY3RlZFNjcmlwdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQoKS0+bV9pbmpl
Y3RlZFNjcmlwdDsKKyAgICByZXR1cm4gZCgpLT5tX2luamVjdGVkU2NyaXB0LmdldCgpOwogfQog
CiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpkZXN0cm95SlNET01HbG9iYWxPYmplY3REYXRhKHZv
aWQqIGpzRE9NR2xvYmFsT2JqZWN0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IDhlYjU1YzE0ODQ3Y2JlOTdkNDE4MjQyYjM3ZmI3
NGQ0MzdkNWNlNzMuLjRkY2U3YTUxNWMzZGJhMjMzMDVhZjQ0NmI3MzdhNjZkZDk4ZmYwYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAt
MzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBKU0M6OkNsYXNzSW5mbyos
IFJlZlB0cjxKU0M6OlN0cnVjdHVyZT4gPiBKU0RPTVN0cnVjdHVyZU1hcDsKLSAgICB0eXBlZGVm
IEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0luZm8qLCBKU0M6OkpTT2JqZWN0Kj4gSlNET01Db25z
dHJ1Y3Rvck1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0luZm8qLCBK
U0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiA+IEpTRE9NQ29uc3RydWN0b3JNYXA7CiAK
ICAgICBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTR2xvYmFsT2JqZWN0
IHsKICAgICAgICAgdHlwZWRlZiBKU0M6OkpTR2xvYmFsT2JqZWN0IEJhc2U7CkBAIC03Niw3ICs3
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICA6IEpTR2xvYmFsT2Jq
ZWN0RGF0YShkZXN0cnVjdG9yKQogICAgICAgICAgICAgICAgICwgZXZ0KDApCiAgICAgICAgICAg
ICAgICAgLCBtX3dvcmxkKHdvcmxkKQotICAgICAgICAgICAgICAgICwgbV9pbmplY3RlZFNjcmlw
dCgwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgfQogCkBAIC04NSw3ICs4NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAgICAgRXZlbnQqIGV2dDsKICAgICAgICAgICAg
IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7Ci0gICAgICAgICAgICBKU09iamVjdCog
bV9pbmplY3RlZFNjcmlwdDsKKyAgICAgICAgICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTT2JqZWN0
PiBtX2luamVjdGVkU2NyaXB0OwogICAgICAgICB9OwogCiAgICAgcHJpdmF0ZToKQEAgLTk3LDEx
ICs5NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgQ29uc3Ry
dWN0b3JDbGFzcz4KICAgICBpbmxpbmUgSlNDOjpKU09iamVjdCogZ2V0RE9NQ29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgewotICAgICAgICBpZiAoSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBnbG9i
YWxPYmplY3QtPmNvbnN0cnVjdG9ycygpLmdldCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvKSkK
KyAgICAgICAgaWYgKEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5j
b25zdHJ1Y3RvcnMoKS5nZXQoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbykuZ2V0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0
cnVjdG9yID0gbmV3IChleGVjKSBDb25zdHJ1Y3RvckNsYXNzKGV4ZWMsIGNvbnN0X2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKICAgICAgICAgQVNTRVJUKCFnbG9iYWxP
YmplY3QtPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8p
KTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5jb25zdHJ1Y3RvcnMoKS5zZXQoJkNvbnN0cnVjdG9y
Q2xhc3M6OnNfaW5mbywgY29uc3RydWN0b3IpOworICAgICAgICBKU0M6OldyaXRlQmFycmllcjxK
U0M6OkpTT2JqZWN0PiB0ZW1wOworICAgICAgICBnbG9iYWxPYmplY3QtPmNvbnN0cnVjdG9ycygp
LmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCB0ZW1wKS5maXJzdC0+c2Vjb25kLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IpOwogICAgICAgICBy
ZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNmFmYmRiZWIxMDg4YzI1NmRlMGVkMDk5
MTE1YzdlMTRhZTcyYTY1Zi4uMjVmOTVmYTZiMWQ1Y2VkM2ZlNmY5NmNkMjgyMmRhZDViZWRkZmE0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0
aW5ncyA9IGFjdGl2ZUZyYW1lLT5zZXR0aW5ncygpKSB7CiAgICAgICAgICAgICBpZiAoc2V0dGlu
Z3MtPnVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkgJiYgIWFjdGl2ZUZy
YW1lLT50cmVlKCktPnBhcmVudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGFsbG93c0FjY2Vz
c0Zyb20oZXhlYykpCi0gICAgICAgICAgICAgICAgICAgIHB1dERpcmVjdChJZGVudGlmaWVyKGV4
ZWMsICJsb2NhdGlvbiIpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgImxvY2F0aW9uIiksIHZhbHVlKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTY4
Miw3ICs2ODIsNyBAQCBpbmxpbmUgdm9pZCBEaWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVkKERP
TVdpbmRvdyogZGlhbG9nKQogICAgIC8vICAgICAgICB3b3JsZCBpZiBkaWFsb2dBcmd1bWVudHMg
Y29tZXMgZnJvbSBhbiBpc29sYXRlZCB3b3JsZC4KICAgICBtX2dsb2JhbE9iamVjdCA9IHRvSlNE
T01XaW5kb3coZGlhbG9nLT5mcmFtZSgpLCBub3JtYWxXb3JsZChtX2V4ZWMtPmdsb2JhbERhdGEo
KSkpOwogICAgIGlmIChKU1ZhbHVlIGRpYWxvZ0FyZ3VtZW50cyA9IG1fZXhlYy0+YXJndW1lbnQo
MSkpCi0gICAgICAgIG1fZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoSWRlbnRpZmllcihtX2V4ZWMs
ICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9nQXJndW1lbnRzKTsKKyAgICAgICAgbV9nbG9iYWxP
YmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihtX2V4ZWMs
ICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9nQXJndW1lbnRzKTsKIH0KIAogaW5saW5lIEpTVmFs
dWUgRGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRleCA2NTA5NmI5M2MwNmQ4Mzdh
NDE0YWQ3YTgzZmI2YTYxOWQyMTdmYWZmLi43OGJlNTBlNDA4NTBlNzE2M2E5MTczZjI3NWU1YjUz
NjA5MDU4OWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmNwcApAQCAtNDUsNyArNDUsNiBAQCBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dT
aGVsbDo6c19pbmZvID0geyAiSlNET01XaW5kb3dTaGVsbCIsIDAsIDAsIDAgfTsKIAogSlNET01X
aW5kb3dTaGVsbDo6SlNET01XaW5kb3dTaGVsbChQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93
LCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogICAgIDogQmFzZShKU0RPTVdpbmRvd1NoZWxsOjpj
cmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQotICAgICwgbV93aW5kb3coMCkKICAgICAsIG1fd29y
bGQod29ybGQpCiB7CiAgICAgc2V0V2luZG93KHdpbmRvdyk7CkBAIC02Niw3ICs2NSw3IEBAIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21X
aW5kb3cpCiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gSlNET01XaW5kb3c6OmNy
ZWF0ZVN0cnVjdHVyZShwcm90b3R5cGUpOwogICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRvdyA9
IG5ldyAoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKSBKU0RPTVdpbmRvdyhzdHJ1
Y3R1cmUucmVsZWFzZSgpLCBkb21XaW5kb3csIHRoaXMpOwogICAgIHByb3RvdHlwZS0+cHV0QW5v
bnltb3VzVmFsdWUoMCwganNET01XaW5kb3cpOwotICAgIHNldFdpbmRvdyhqc0RPTVdpbmRvdyk7
CisgICAgc2V0V2luZG93KCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzRE9N
V2luZG93KTsKIH0KIAogLy8gLS0tLQpAQCAtNzcsNyArNzYsNyBAQCB2b2lkIEpTRE9NV2luZG93
U2hlbGw6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBCYXNlOjpt
YXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKICAgICBpZiAobV93aW5kb3cpCi0gICAgICAgIG1hcmtT
dGFjay5hcHBlbmQobV93aW5kb3cpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1fd2luZG93
LnNsb3QoKSk7CiB9CiAKIFVTdHJpbmcgSlNET01XaW5kb3dTaGVsbDo6Y2xhc3NOYW1lKCkgY29u
c3QKQEAgLTE0Nyw3ICsxNDYsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93U2hlbGw6Omxvb2t1cFNl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcgogCiBKU09iamVj
dCogSlNET01XaW5kb3dTaGVsbDo6dW53cmFwcGVkT2JqZWN0KCkKIHsKLSAgICByZXR1cm4gbV93
aW5kb3c7CisgICAgcmV0dXJuIG1fd2luZG93LmdldCgpOwogfQogCiAvLyAtLS0tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggODg4MzI1ZDAz
ZmNjOGYzNGM5ZTMzYWEyNWZhYWQwMzMyNTQ4M2Y3MS4uZDU4NWZkNDkzZTE5Y2ZiMDVjZjExNzc2
Y2RjMmQxYzUyOGU3ZWViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaApAQCAtNDMsMTEgKzQzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgSlNET01XaW5kb3dTaGVsbChQYXNzUmVmUHRyPERPTVdpbmRvdz4sIERPTVdyYXBwZXJX
b3JsZCogd29ybGQpOwogICAgICAgICB2aXJ0dWFsIH5KU0RPTVdpbmRvd1NoZWxsKCk7CiAKLSAg
ICAgICAgSlNET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93OyB9Ci0g
ICAgICAgIHZvaWQgc2V0V2luZG93KEpTRE9NV2luZG93KiB3aW5kb3cpCisgICAgICAgIEpTRE9N
V2luZG93KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBtX3dpbmRvdy5nZXQoKTsgfQorICAgICAg
ICB2b2lkIHNldFdpbmRvdyhKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNET01XaW5k
b3cqIHdpbmRvdykKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUX0FSRyh3aW5kb3csIHdp
bmRvdyk7Ci0gICAgICAgICAgICBtX3dpbmRvdyA9IHdpbmRvdzsKKyAgICAgICAgICAgIG1fd2lu
ZG93LnNldChnbG9iYWxEYXRhLCB0aGlzLCB3aW5kb3cpOwogICAgICAgICAgICAgc2V0UHJvdG90
eXBlKHdpbmRvdy0+cHJvdG90eXBlKCkpOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgc2V0V2lu
ZG93KFBhc3NSZWZQdHI8RE9NV2luZG93Pik7CkBAIC04NSw3ICs4NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiB1bndyYXBwZWRPYmplY3Qo
KTsKICAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29u
c3QgeyByZXR1cm4gJnNfaW5mbzsgfQogCi0gICAgICAgIEpTRE9NV2luZG93KiBtX3dpbmRvdzsK
KyAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNET01XaW5kb3c+IG1fd2luZG93OwogICAgICAg
ICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDU2MDQzNzRjMmYz
ZDdhZGRlY2I1N2M4NjI3MzM4YzYzNTVmYjJkNmEuLjk2Nzc4ODI2NjJiYmM1MjFkOTY2MWQ2Njc0
ZjI1OGNiMmNjMzc0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SlNFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXIoSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09i
amVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRl
ZFdvcmxkKQogICAgIDogRXZlbnRMaXN0ZW5lcihKU0V2ZW50TGlzdGVuZXJUeXBlKQotICAgICwg
bV9qc0Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICwgbV9pc0F0dHJpYnV0ZShpc0F0dHJpYnV0ZSkK
ICAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkKQogewogICAgIGlmICh3cmFwcGVy
KQogICAgICAgICBtX3dyYXBwZXIgPSB3cmFwcGVyOworICAgIG1fanNGdW5jdGlvbi5zZXQoKm1f
aXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBmdW5jdGlvbik7CiB9CiAKIEpT
RXZlbnRMaXN0ZW5lcjo6fkpTRXZlbnRMaXN0ZW5lcigpCkBAIC01NSw3ICs1NSw3IEBAIEpTT2Jq
ZWN0KiBKU0V2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSBjb25zdAogdm9pZCBKU0V2ZW50TGlzdGVuZXI6Om1hcmtKU0Z1bmN0aW9uKE1h
cmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIGlmIChtX2pzRnVuY3Rpb24pCi0gICAgICAgIG1h
cmtTdGFjay5hcHBlbmQobV9qc0Z1bmN0aW9uKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCht
X2pzRnVuY3Rpb24uc2xvdCgpKTsKIH0KIAogdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEV2ZW50
KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRM
aXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgK
aW5kZXggODNkMGQyZWU5YjhjY2ZkYzRhMDA4MTIxYzU2YTJhNzY4MTk5MGY2Yy4uNDdmZjQ0ZWM3
NmUyMzgxMjNkZTJiYTM3NWY2NTAxMzMxYTA3YTYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKQEAgLTY2LDcgKzY2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV2ZW50Kik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBtdXRhYmxlIEpTQzo6
SlNPYmplY3QqIG1fanNGdW5jdGlvbjsKKyAgICAgICAgbXV0YWJsZSBKU0M6OldyaXRlQmFycmll
cjxKU0M6OkpTT2JqZWN0PiBtX2pzRnVuY3Rpb247CiAgICAgICAgIG11dGFibGUgSlNDOjpXZWFr
R0NQdHI8SlNDOjpKU09iamVjdD4gbV93cmFwcGVyOwogCiAgICAgICAgIGJvb2wgbV9pc0F0dHJp
YnV0ZTsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGlubGluZSBK
U0M6OkpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgY29uc3QKICAgICB7CiAgICAgICAgIGlm
ICghbV9qc0Z1bmN0aW9uKQotICAgICAgICAgICAgbV9qc0Z1bmN0aW9uID0gaW5pdGlhbGl6ZUpT
RnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgICAgICBtX2pzRnVuY3Rp
b24uc2V0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5nbG9iYWxEYXRhKCksIG1fd3JhcHBlci5n
ZXQoKSwgaW5pdGlhbGl6ZUpTRnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogCiAg
ICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIGhhdmUgYSB2YWxpZCB3cmFwcGVyIHByb3RlY3Rpbmcg
b3VyIGZ1bmN0aW9uIGZyb20KICAgICAgICAgLy8gZ2FyYmFnZSBjb2xsZWN0aW9uLgpAQCAtODYs
OSArODYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gVHJ5IHRvIHZlcmlm
eSB0aGF0IG1fanNGdW5jdGlvbiB3YXNuJ3QgcmVjeWNsZWQuIChOb3QgZXhhY3QsIHNpbmNlIGFu
CiAgICAgICAgIC8vIGV2ZW50IGxpc3RlbmVyIGNhbiBiZSBhbG1vc3QgYW55dGhpbmcsIGJ1dCB0
aGlzIG1ha2VzIHRlc3Qtd3JpdGluZyBlYXNpZXIpLgotICAgICAgICBBU1NFUlQoIW1fanNGdW5j
dGlvbiB8fCBzdGF0aWNfY2FzdDxKU0M6OkpTQ2VsbCo+KG1fanNGdW5jdGlvbiktPmlzT2JqZWN0
KCkpOworICAgICAgICBBU1NFUlQoIW1fanNGdW5jdGlvbiB8fCBzdGF0aWNfY2FzdDxKU0M6OkpT
Q2VsbCo+KG1fanNGdW5jdGlvbi5nZXQoKSktPmlzT2JqZWN0KCkpOwogCi0gICAgICAgIHJldHVy
biBtX2pzRnVuY3Rpb247CisgICAgICAgIHJldHVybiBtX2pzRnVuY3Rpb24uZ2V0KCk7CiAgICAg
fQogCiAgICAgaW5saW5lIHZvaWQgSlNFdmVudExpc3RlbmVyOjppbnZhbGlkYXRlSlNGdW5jdGlv
bihKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDBiNDBlZjA0NGQ1Y2FkZGYyM2U5
OWQ0MDM3YTc3NjAzOTIyZGFkYzUuLjI4MTdhZTY5M2YwOGFhNGJlMTUzNmJhNzIyMTlmMjJjYjE0
ZjUzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1
bWVudEN1c3RvbS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6
YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHZvaWQgSlNIVE1MRG9jdW1lbnQ6OnNldEFsbChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgLy8gQWRkICJhbGwiIHRvIHRo
ZSBwcm9wZXJ0eSBtYXAuCi0gICAgcHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgImFsbCIpLCB2
YWx1ZSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCAiYWxsIiksIHZhbHVlKTsKIH0KIAogLy8gQ3VzdG9tIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjJhZDgw
MzcyZDAzZmFmYTdmZmQwZWZhZDcxZjQyOTgzN2FlNWQwYS4uNTE5MmUxMmUyYTQ3MjlmMTA2MzNl
MzU0YzlhNTAzNTRmMTRiYTY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGNvbnN0IENsYXNzSW5m
byBKU0ltYWdlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkltYWdlQ29uc3RydWN0b3IiLCAwLCAw
LCAwIH07CiBKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1
Y3RvcldpdGhEb2N1bWVudChKU0ltYWdlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERp
cmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU0hUTUxJbWFnZUVsZW1lbnRQ
cm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CisgICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNI
VE1MSW1hZ2VFbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUp
OwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbWFn
ZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lt
YWdlRGF0YUN1c3RvbS5jcHAKaW5kZXggNjFjNTExMjhlNDhkOTQyNjYwMDg1MTcwYzc3MjkzMjQz
M2YzNzM4NC4uODc4ZTFkZWVhNjBhOTYwMzk4NzRjOTU2NjAzMTc1ZmQ0ZTA1MDFmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcApAQCAt
NDksNyArNDksNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEqIGltYWdlRAogICAgIElkZW50aWZpZXIgZGF0
YU5hbWUoZXhlYywgImRhdGEiKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxTdHJ1
Y3R1cmU+LCBjcGFTdHJ1Y3R1cmUsIChKU0J5dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVs
bCgpKSkpOwogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gY3BhQ2xhc3NJbmZvID0geyAiQ2Fu
dmFzUGl4ZWxBcnJheSIsIDAsIDAsIDAgfTsKLSAgICB3cmFwcGVyLT5wdXREaXJlY3QoZGF0YU5h
bWUsIG5ldyAoZXhlYykgSlNCeXRlQXJyYXkoZXhlYywgY3BhU3RydWN0dXJlLCBpbWFnZURhdGEt
PmRhdGEoKS0+ZGF0YSgpLCAmY3BhQ2xhc3NJbmZvKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICB3cmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRhTmFtZSwgbmV3
IChleGVjKSBKU0J5dGVBcnJheShleGVjLCBjcGFTdHJ1Y3R1cmUsIGltYWdlRGF0YS0+ZGF0YSgp
LT5kYXRhKCksICZjcGFDbGFzc0luZm8pLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIGV4
ZWMtPmhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KGltYWdlRGF0YS0+ZGF0YSgpLT5sZW5n
dGgoKSk7CiAgICAgCiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAppbmRl
eCAwZjQ3YjdiMjMyMjk3MGZlNzAzOTAzNzZhYzAzMjA3ZDlmMDJjMzc0Li43YzAwYmQ0M2FjM2Yx
NDdkNWQwODI4ZGQyMDkyNTk1ODVlNTBmNTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKQEAgLTc5
LDcgKzc5LDcgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW4oRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAg
ICBkbyB7Ci0gICAgICAgIGxpc3QuYXBwZW5kKCppdGVyKTsKKyAgICAgICAgbGlzdC5hcHBlbmQo
aXRlci0+Z2V0KCkpOwogICAgICAgICArK2l0ZXI7CiAgICAgfSB3aGlsZSAoaXRlciAhPSBlbmQp
OwogCkBAIC0xMDAsNyArMTAwLDcgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNj
b3BlVHlwZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBib29sIGZvdW5kTG9jYWxTY29wZSA9IGZh
bHNlOwogICAgIGZvciAoU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBzY29wZUNoYWluLT5iZWdp
bigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBzY29wZSA9ICpp
dGVyOworICAgICAgICBKU0M6OkRlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IHNjb3BlID0gKml0ZXI7
CiAgICAgICAgIGlmIChzY29wZS0+aXNBY3RpdmF0aW9uT2JqZWN0KCkpIHsKICAgICAgICAgICAg
IGlmICghZm91bmRMb2NhbFNjb3BlKSB7CiAgICAgICAgICAgICAgICAgLy8gRmlyc3QgYWN0aXZh
dGlvbiBvYmplY3QgaXMgbG9jYWwgc2NvcGUsIGVhY2ggc3VjY2Vzc2l2ZSBhY3RpdmF0aW9uIG9i
amVjdCBpcyBjbG9zdXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKaW5kZXggYjI2OWU1ZmE1OTE4OTk4ZDc4MGU5ZWQwZWEy
MzJjOGY3NzlmZGI2Mi4uZTUzY2UxMmY4YzM5MjdhZDVjZTNiOGQ2NjY5ZWNiMzE3ZmM2NzVjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25k
aXRpb24uY3BwCkBAIC0zOSwxNCArMzksMTQgQEAgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjpKU05v
ZGVGaWx0ZXJDb25kaXRpb24oSlNWYWx1ZSBmaWx0ZXIpCiAKIHZvaWQgSlNOb2RlRmlsdGVyQ29u
ZGl0aW9uOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewotICAgIG1hcmtT
dGFjay5hcHBlbmQobV9maWx0ZXIpOworICAgIG1hcmtTdGFjay5hcHBlbmQobV9maWx0ZXIuc2xv
dCgpKTsKIH0KIAogc2hvcnQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBOb2RlKiBmaWx0ZXJOb2RlKSBjb25zdAogewogICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKLSAgICBpZiAoIW1fZmlsdGVyLmlzT2JqZWN0
KCkpCisgICAgaWYgKCFtX2ZpbHRlci0+aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIE5vZGVG
aWx0ZXI6OkZJTFRFUl9BQ0NFUFQ7CiAKICAgIC8vIFRoZSBleGVjIGFyZ3VtZW50IGhlcmUgc2hv
dWxkIG9ubHkgYmUgbnVsbCBpZiB0aGlzIHdhcyBjYWxsZWQgZnJvbSBhCkBAIC01OCwxMSArNTgs
MTEgQEAgc2hvcnQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBOb2RlKiBmaWx0ZXJOb2RlKQogICAgIGlmICghZXhlYykKICAgICAgICAgcmV0
dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0g
bV9maWx0ZXI7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1fZmlsdGVyLmdldCgpOwogICAgIENh
bGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVu
Y3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0g
ICAgICAgIGZ1bmN0aW9uID0gbV9maWx0ZXIuZ2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImFj
Y2VwdE5vZGUiKSk7CisgICAgICAgIGZ1bmN0aW9uID0gbV9maWx0ZXItPmdldChleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsICJhY2NlcHROb2RlIikpOwogICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxE
YXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZU5vbmUpIHsKICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJOb2RlRmlsdGVyIG9iamVjdCBkb2VzIG5vdCBoYXZlIGFuIGFjY2VwdE5vZGUgZnVuY3Rp
b24iKSk7CkBAIC03Nyw3ICs3Nyw3IEBAIHNob3J0IEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNj
ZXB0Tm9kZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgTm9kZSogZmlsdGVyTm9kZSkKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJf
UkVKRUNUOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9maWx0ZXIsIGFyZ3MpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fZmlsdGVy
LmdldCgpLCBhcmdzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCmluZGV4IGI5NjUzNGEwY2Y0ZTM5
MmVkYTAzMzEwNDhmYjdmMWNlMDhmNzQ3Y2QuLjE0YjBjMWQyNWFmYzZlZDUyYmViNjM1MDEwMDFm
YjBmN2NiZjMyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUZpbHRlckNvbmRpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUZpbHRlckNvbmRpdGlvbi5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKFNjcmlwdFN0YXRlKiwgTm9kZSopIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0FnZ3JlZ2F0ZShKU0M6Ok1hcmtTdGFjayYp
OwogCi0gICAgICAgIG11dGFibGUgSlNDOjpKU1ZhbHVlIG1fZmlsdGVyOworICAgICAgICBtdXRh
YmxlIEpTQzo6RGVwcmVjYXRlZFB0cjxKU0M6OlVua25vd24+IG1fZmlsdGVyOwogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCmluZGV4IGJiOTBjNGY3ZjBiNmRjYzlmZGQ0NWI5OWUy
ZjhjMTk0OWIyYTE3MTguLmJjNzllOTk2Nzk3YjE2OGJjNzk2OTQwMjc5ZWE2NzM1N2M5YzI5YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9t
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpT
Tm9kZUZpbHRlci5oIgogCisjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCiAjaW5jbHVkZSAi
SlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAjaW5jbHVkZSAi
Tm9kZUZpbHRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNP
cHRpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlv
bkNvbnN0cnVjdG9yLmNwcAppbmRleCA0ZWNmZTU4NTJjODM4NDQ5NmFhMzhjNjcxN2JmYmEzYjRl
ZTQ0NDE3Li5lMTRmYjZkYTViZDM5NzRlZjgxYmE3ZDViYTczYmJmNzliOTk3MThiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcApA
QCAtMzgsOCArMzgsOCBAQCBjb25zdCBDbGFzc0luZm8gSlNPcHRpb25Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiT3B0aW9uQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiBKU09wdGlvbkNvbnN0cnVj
dG9yOjpKU09wdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICA6IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KEpTT3B0
aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3Rv
dHlwZSgpKSwgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCBKU0hUTUxPcHRpb25FbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMs
IGdsb2JhbE9iamVjdCksIE5vbmUpOwotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGVuZ3RoLCBqc051bWJlcig0KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUsIEpTSFRNTE9wdGlvbkVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xv
YmFsT2JqZWN0KSwgTm9uZSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNCksIFJlYWRPbmx5IHwgRG9udERl
bGV0ZSB8IERvbnRFbnVtKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SFRNTE9wdGlvbkVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1
c3RvbS5jcHAKaW5kZXggNzI3NGNkMGYyYTRhZDJlMDZmMzQwZmNkNWE2YjUyOGZlZGYyNTYyOS4u
MGZjZDFlYTdmMmQ2MmU0YzhlYmVkZDdhYTZmYWUyNzhmY2IzMDQ4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0
b20uY3BwCkBAIC03NCw3ICs3NCw3IEBAIEpTVmFsdWUgSlNTUUxSZXN1bHRTZXRSb3dMaXN0Ojpp
dGVtKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIH0KIAotICAgICAgICBvYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMs
IHN0cmluZ1RvVVN0cmluZyhtX2ltcGwtPmNvbHVtbk5hbWVzKClbaV0pKSwganNWYWx1ZSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhtX2ltcGwtPmNvbHVt
bk5hbWVzKClbaV0pKSwganNWYWx1ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICB9CiAK
ICAgICByZXR1cm4gb2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKaW5kZXggMTZmMThkMzVhMDZmYTBhZGRiMGUzYjE3
Y2IyZTA0YzBlZDU3YmFkNC4uZDY1YmNlMjYwMTM4ZjkxODY5MGVjZTg2ZmQyNGNiYjQ4OGVjYzBk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRG
cmFtZURhdGEuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
OjpyZXN0b3JlKEZyYW1lKiBmcmFtZSkKICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93
U2hlbGwgPSBpdGVyLT5zZWNvbmQuZ2V0KCk7CiAKICAgICAgICAgaWYgKEpTRE9NV2luZG93KiB3
aW5kb3cgPSBtX3dpbmRvd3MuZ2V0KHdvcmxkKSkKLSAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5z
ZXRXaW5kb3cod2luZG93KTsKKyAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cod2lu
ZG93LT5nbG9iYWxEYXRhKCksIHdpbmRvdyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
d2luZG93U2hlbGwtPnNldFdpbmRvdyhmcmFtZS0+ZG9tV2luZG93KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAppbmRleCBlMDZlY2NiN2I1MjY2MmU4
Y2RjN2MwY2YwZDQ2ZjNhOWNkMmVmZjRkLi5iNWMxZjAxMTk2NDYwODM1MjYyZGMyMDk2MzNkMGI3
NGMzOGE2NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5j
cHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlRXhjZXB0aW9uKFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSkKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmIHZh
bHVlKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgc2Ny
aXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KElkZW50aWZpZXIoc2Ny
aXB0U3RhdGUsIG5hbWUpLCB2YWx1ZS5qc09iamVjdCgpKTsKKyAgICBzY3JpcHRTdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPmdsb2JhbERhdGEoKSwg
SWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0KCkpOwogICAgIHJl
dHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwogfQogCkBAIC03MSw3ICs3MSw3IEBA
IGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBj
b25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0CiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKTsKLSAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKHNjcmlwdFN0YXRl
LCBuYW1lKSwgdG9KUyhzY3JpcHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworICAgIGds
b2JhbE9iamVjdC0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHZh
bHVlKSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKQEAg
LTc5LDcgKzc5LDcgQEAgYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSog
c2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIEluamVjdGUKIHsKICAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KElkZW50aWZp
ZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHZh
bHVlKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGds
b2JhbE9iamVjdCwgdmFsdWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0
YXRlKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYjAyYTRi
YjM4MDBkNDY0MTQ1NjEwNGVkNTA5NWQ3OTkzMTJhZDJhZC4uZjcyMTMzNGMxZjdhN2RiNmVmYzA1
NmE1ZTFjZjc0ZTQyYjQ3ZjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMDQwLDE0ICsxMDQwLDE0IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwdXRQcm9wZXJ0eShKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaW5k
ZXgsIEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoYXJyYXktPmNhblNldEluZGV4
KGluZGV4KSkKLSAgICAgICAgICAgIGFycmF5LT5zZXRJbmRleChpbmRleCwgdmFsdWUpOworICAg
ICAgICAgICAgYXJyYXktPnNldEluZGV4KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBpbmRleCwgdmFs
dWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcnJheS0+cHV0KG1fZXhlYywgaW5kZXgs
IHZhbHVlKTsKICAgICB9CiAKICAgICB2b2lkIHB1dFByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgb2JqZWN0LT5wdXREaXJlY3QocHJvcGVydHksIHZhbHVlKTsKKyAgICAgICAgb2JqZWN0LT5w
dXREaXJlY3QobV9leGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQog
CiAgICAgYm9vbCByZWFkRmlsZShSZWZQdHI8RmlsZT4mIGZpbGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGFiZWYwNGU4
N2Y3YzY4ZDQ5MDM1ODE2MDc2NmM3OGY5ZDg5YjljOWIuLjQ2YTQ0ZDE5NzczYjRkNzRlM2JjMTdl
NTBkMjBlZGU4ZjkzMjFlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xNzM1LDEzICsxNzM1LDEzIEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgJiYgJGNsYXNzTmFtZSBlcSAiSlNi
bGFoIikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTtcbiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2Fz
dDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRo
aXNPYmplY3QpLT5wdXREaXJlY3QoSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJl
cGxhY2VhYmxlIn0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3RcbiIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRj
bGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgXCIkbmFt
ZVwiKSwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZh
bHVlKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0
ZWRUaGlzID0gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpO1xuIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxUeXBl
KiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbFR5cGUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7
CkBAIC0xODI0LDkgKzE4MjQsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yXG4iKTsKIAogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBl
cSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTtcbiIpOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4o
dGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nh
c3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJlY3QoSWRlbnRpZmllcihleGVjLCBc
IiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVl
KTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn1cbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsK
QEAgLTI5NDIsMTEgKzI5NDIsMTEgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9u
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoJHtj
b25zdHJ1Y3RvckNsYXNzTmFtZX06OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVj
dFByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAie1xuIik7CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1l
cygpLnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LT5wcm90b3R5cGUoKSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZ2xv
YmFsT2JqZWN0LT5wcm90b3R5cGUoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgJHtwcm90b0NsYXNzTmFtZX06OnNlbGYoZXhl
YywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOworICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgJHtwcm90b0NsYXNzTmFtZX06OnNlbGYoZXhl
YywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOwogICAgIH0KLSAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgsIGpzTnVtYmVyKCR7bnVtYmVyT2Zjb25zdHJ1Y3RQYXJhbWV0ZXJzfSksIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTtcbiIpIGlmICRudW1iZXJPZmNvbnN0cnVjdFBh
cmFtZXRlcnM7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKCR7bnVt
YmVyT2Zjb25zdHJ1Y3RQYXJhbWV0ZXJzfSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRF
bnVtKTtcbiIpIGlmICRudW1iZXJPZmNvbnN0cnVjdFBhcmFtZXRlcnM7CiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAifVxuXG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtj
b25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGYzZDhlNzdlOWExOGQ5YWUyNzFjNDAzNjhlN2Q3ZmY0
NzE4M2RhZTAuLmJlN2UwMGEzZWI0M2NiYzMxZjlmYzRlOWFlODZlYTcxZDUwOTBlMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC05NDAsNyArOTQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24g
Y29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogI2lmIFVTRShKU0MpCi0gICAgdHlw
ZWRlZiBKU0M6OldlYWtHQ01hcDxXZWJDb3JlOjpOb2RlKiwgSlNOb2RlKj4gSlNXcmFwcGVyQ2Fj
aGU7CisgICAgdHlwZWRlZiBKU0M6OldlYWtHQ01hcDxXZWJDb3JlOjpOb2RlKiwgSlNOb2RlPiBK
U1dyYXBwZXJDYWNoZTsKICAgICB0eXBlZGVmIEhhc2hNYXA8RE9NV3JhcHBlcldvcmxkKiwgSlNX
cmFwcGVyQ2FjaGUqPiBKU1dyYXBwZXJDYWNoZU1hcDsKICAgICBKU1dyYXBwZXJDYWNoZU1hcCYg
d3JhcHBlckNhY2hlTWFwKCkgeyByZXR1cm4gbV93cmFwcGVyQ2FjaGVNYXA7IH0KICAgICBKU1dy
YXBwZXJDYWNoZSogZ2V0V3JhcHBlckNhY2hlKERPTVdyYXBwZXJXb3JsZCogd29ybGQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDFmNGUzYzQ0M2QzMWY2MjhmNDdmNTJkYTQ5NDlhZDA4NmM5NTEyMGMu
LmFmZGI3YjczNmE0OTUzMWQyMWYwNzU3YTUzZmM2ZmM3NWUyODhhMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMS0yNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvbnZlcnQgbWFya3N0YWNrIHRvIGEgc2xvdCB2aXNpdG9yIEFQSQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMyMTkKKworICAgICAgICBVcGRhdGUg
dG8gbmV3IG1hcmtpbmcgYXBpCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVs
ZWdhdGUubW06CisgICAgICAgICgtW1dlYlNjcmlwdENhbGxGcmFtZSBzY29wZUNoYWluXSk6CisK
IDIwMTEtMDEtMjUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQppbmRleCA2M2E5MWE5ZTFmMzliNDgwNjc0
ZWVhY2EzNTMwYzQyOTRjY2FkNjk2Li45NmExYTQyNzFjM2Q1M2ZlYjIzY2I5NWNlODM5Y2M3Y2E0
ZWFhNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERl
YnVnRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHRE
ZWJ1Z0RlbGVnYXRlLm1tCkBAIC0xODQsOSArMTg0LDkgQEAgTlNTdHJpbmcgKiBjb25zdCBXZWJT
Y3JpcHRFcnJvckxpbmVOdW1iZXJLZXkgPSBAIldlYlNjcmlwdEVycm9yTGluZU51bWJlciI7CiAK
ICAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gc2NvcGVDaGFpbi0+ZW5kKCk7CiAgICAgZm9y
IChTY29wZUNoYWluSXRlcmF0b3IgaXQgPSBzY29wZUNoYWluLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9ICppdDsKKyAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGl0LT5nZXQoKTsKICAgICAgICAgaWYgKG9iamVjdC0+aXNBY3RpdmF0aW9u
T2JqZWN0KCkpCi0gICAgICAgICAgICBvYmplY3QgPSBuZXcgKHNjb3BlQ2hhaW4tPmdsb2JhbERh
dGEpIERlYnVnZ2VyQWN0aXZhdGlvbihvYmplY3QpOworICAgICAgICAgICAgb2JqZWN0ID0gbmV3
IChzY29wZUNoYWluLT5nbG9iYWxEYXRhKSBEZWJ1Z2dlckFjdGl2YXRpb24oKnNjb3BlQ2hhaW4t
Pmdsb2JhbERhdGEsIG9iamVjdCk7CiAgICAgICAgIFtzY29wZXMgYWRkT2JqZWN0OltzZWxmIF9j
b252ZXJ0VmFsdWVUb09iamNWYWx1ZTpvYmplY3RdXTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80390</attachid>
            <date>2011-01-27 18:04:53 -0800</date>
            <delta_ts>2011-01-28 12:40:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53219-20110127180451.patch</filename>
            <type>text/plain</type>
            <size>256193</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggODM0
NDJiMmUwMjI2YTg2NjExYTVkNmE4ZDA0OWVhYmFmMDAyZDg5OS4uNzBhZWRiZmE0YjRmNjJkNGRj
ZTUxNzZhMTE5MzVjYzA2NDU3NGExMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKQEAgLTU0LDExICs1NCwxMSBAQCBzdHJ1Y3QgSlNDYWxsYmFja09i
amVjdERhdGEgewogICAgICAgICByZXR1cm4gbV9wcml2YXRlUHJvcGVydGllcy0+Z2V0UHJpdmF0
ZVByb3BlcnR5KHByb3BlcnR5TmFtZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0UHJpdmF0
ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkK
KyAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Q2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVydGllcykKICAgICAgICAgICAg
IG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBhZG9wdFB0cihuZXcgSlNQcml2YXRlUHJvcGVydHlNYXAp
OwotICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5zZXRQcml2YXRlUHJvcGVydHkocHJvcGVy
dHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPnNldFByaXZhdGVQ
cm9wZXJ0eShnbG9iYWxEYXRhLCBvd25lciwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKQEAgLTgzLDEyICs4MywxMyBAQCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERh
dGEgewogICAgICAgICAgICAgUHJpdmF0ZVByb3BlcnR5TWFwOjpjb25zdF9pdGVyYXRvciBsb2Nh
dGlvbiA9IG1fcHJvcGVydHlNYXAuZmluZChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAg
ICAgIGlmIChsb2NhdGlvbiA9PSBtX3Byb3BlcnR5TWFwLmVuZCgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb24tPnNlY29uZDsK
KyAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbi0+c2Vjb25kLmdldCgpOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCisgICAgICAgIHZvaWQgc2V0UHJpdmF0ZVBy
b3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBtX3Byb3BlcnR5TWFwLnNldChwcm9wZXJ0eU5hbWUuaW1wbCgpLCB2YWx1ZSk7CisgICAg
ICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7CisgICAgICAgICAgICBtX3Byb3Bl
cnR5TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuZmlyc3QtPnNlY29uZC5zZXQo
Z2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
dm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQpAQCAtMTAwLDEyICsxMDEsMTIgQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIHsKICAg
ICAgICAgewogICAgICAgICAgICAgZm9yIChQcml2YXRlUHJvcGVydHlNYXA6Oml0ZXJhdG9yIHB0
ciA9IG1fcHJvcGVydHlNYXAuYmVnaW4oKTsgcHRyICE9IG1fcHJvcGVydHlNYXAuZW5kKCk7ICsr
cHRyKSB7CiAgICAgICAgICAgICAgICAgaWYgKHB0ci0+c2Vjb25kKQotICAgICAgICAgICAgICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKHB0ci0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICAgICAg
bWFya1N0YWNrLmFwcGVuZChwdHItPnNlY29uZC5zbG90KCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0
cmluZ0ltcGw+LCBKU1ZhbHVlLCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZVByb3BlcnR5TWFw
OworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlUHJvcGVydHlNYXA7CiAgICAg
ICAgIFByaXZhdGVQcm9wZXJ0eU1hcCBtX3Byb3BlcnR5TWFwOwogICAgIH07CiAgICAgT3duUHRy
PEpTUHJpdmF0ZVByb3BlcnR5TWFwPiBtX3ByaXZhdGVQcm9wZXJ0aWVzOwpAQCAtMTM3LDkgKzEz
OCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3REYXRhLT5nZXRQ
cml2YXRlUHJvcGVydHkocHJvcGVydHlOYW1lKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRQ
cml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlKQorICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsK
LSAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPnNldFByaXZhdGVQcm9wZXJ0eShwcm9wZXJ0
eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPnNldFByaXZhdGVQ
cm9wZXJ0eShnbG9iYWxEYXRhLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCBkZTVkODQyMTY0NDNhNDRhZDQwZjk1MWZmMDVmNDg1
MDVmYjE3MjVhLi5mMDM0NDNmNGViM2Y4YWRmOTRkNGY1ODRjYjA1YTViMGFhNWFlZmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6
cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lCiAgICAg
ICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMt
PmdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+
YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojpw
dXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0
eQorICAgICAgICAgICAgICAgIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJpZGUg
cHJvcGVydHkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTU2NSw3ICs1NjUsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnN0
YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbAogICAgICAgICAg
ICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24g
PSBlbnRyeS0+Y2FsbEFzRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIEpTT2JqZWN0KiBvID0gbmV3IChleGVjKSBKU0NhbGxiYWNrRnVuY3Rpb24o
ZXhlYywgYXNHbG9iYWxPYmplY3QodGhpc09iai0+Z2V0QW5vbnltb3VzVmFsdWUoMCkpLCBjYWxs
QXNGdW5jdGlvbiwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+
cHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgbywgZW50cnktPmF0dHJpYnV0ZXMpOworICAgICAgICAg
ICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG87CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBkNmRlNDI2ODJmNDQ0NzBhNmExNWU5ODQ5MzM3
NGQ0ZTJiMmVjODc2Li5kM2MxOTkzMTg4MmU1ZWY1MDYwNTc0OGQ4ZWVlYzI1YTQ1MDJkN2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMTA4LDcgKzEw
OCw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBj
dHgsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNPYmplCiAgICAgICAgIGpzUHJvdG90eXBlID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKTsKIAogICAgIEpTQ2Fs
bGJhY2tDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEpTQ2FsbGJhY2tDb25z
dHJ1Y3RvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSgpLCBqc0NsYXNzLCBjYWxsQXND
b25zdHJ1Y3Rvcik7Ci0gICAgY29uc3RydWN0b3ItPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCBqc1Byb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpOworICAgIGNvbnN0cnVjdG9yLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBqc1Byb3RvdHlwZSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHJldHVybiB0b1JlZihjb25zdHJ1Y3Rvcik7CiB9
CiAKQEAgLTM4NSwxMSArMzg1LDExIEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHko
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlCiAgICAgSlNW
YWx1ZSBqc1ZhbHVlID0gdmFsdWUgPyB0b0pTKGV4ZWMsIHZhbHVlKSA6IEpTVmFsdWUoKTsKICAg
ICBJZGVudGlmaWVyIG5hbWUocHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9iYWxE
YXRhKCkpKTsKICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpT
R2xvYmFsT2JqZWN0Pjo6aW5mbykpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09i
amVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShuYW1l
LCBqc1ZhbHVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2Jh
bE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9iYWxEYXRh
KCksIG5hbWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYg
KGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxP
YmplY3Q+OjppbmZvKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShu
YW1lLCBqc1ZhbHVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU09i
amVjdFdpdGhHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVydHkoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaAppbmRleCA2NGUxZjRkNTNiN2U4YjE4
Mzk1MjQ2ZWU4MmJiODQwOWJjMDcyMDBlLi5mN2I5MWRhNTFkMzI2ZGIyYTQ1ZjY3N2ViZmVmNmY3
ZjBlYzViNzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09i
amVjdE1hcFJlZkludGVybmFsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEpTT2JqZWN0
OwogCiB0eXBlZGVmIHZvaWQgKCpKU1dlYWtNYXBEZXN0cm95ZWRDYWxsYmFjaykoc3RydWN0IE9w
YXF1ZUpTV2Vha09iamVjdE1hcCosIHZvaWQqKTsKIAotdHlwZWRlZiBKU0M6OldlYWtHQ01hcDx2
b2lkKiwgSlNDOjpKU09iamVjdCo+IFdlYWtNYXBUeXBlOwordHlwZWRlZiBKU0M6OldlYWtHQ01h
cDx2b2lkKiwgSlNDOjpKU09iamVjdD4gV2Vha01hcFR5cGU7CiAKIHN0cnVjdCBPcGFxdWVKU1dl
YWtPYmplY3RNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGFxdWVKU1dlYWtPYmplY3RNYXA+IHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRjNzMxNDMwMDdjNzkzOWZhZmUx
ZjI2NjFhODExMjIzNmU4OTE4NGIuLjk1MmJmMDkyMWFiOTY2NWQ0NmE5Njc1NDNhZGQ5MDNiNTZh
ZTBkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxNCBAQAorMjAxMS0w
MS0yNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgbWFya3N0YWNrIHRvIGEgc2xv
dCB2aXNpdG9yIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTMyMTkKKworICAgICAgICBNb3ZlIHRoZSBNYXJrU3RhY2sgb3ZlciB0byBhIHNsb3Qg
YmFzZWQgbWFya2luZyBBUEkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWRpbmcgYWxpYXNp
bmcgY29uY2VybnMgdGhlcmUgYXJlIHR3byBuZXcgdHlwZXMKKyAgICAgICAgdGhhdCBuZWVkIHRv
IGJlIHVzZWQgd2hlbiBob2xkaW5nIG9uIHRvIEpTVmFsdWVzIGFuZCBKU0NlbGwgdGhhdAorICAg
ICAgICBuZWVkIHRvIGJlIG1hcmtlZDogV3JpdGVCYXJyaWVyIGFuZCBEZXByZWNhdGVkUHRyLiAg
V3JpdGVCYXJyaWVyCisgICAgICAgIGlzIGV4cGVjdGVkIHRvIGJlIHVzZWQgZm9yIGFueSBKU1Zh
bHVlIG9yIENlbGwgdGhhdCdzIGxpZmV0aW1lIGFuZAorICAgICAgICBtYXJraW5nIGlzIGNvbnRy
b2xsZWQgYnkgYW5vdGhlciBHQyBvYmplY3QuICBEZXByZWNhdGVkUHRyIGlzIHVzZWQKKyAgICAg
ICAgZm9yIGFueSB2YWx1ZSB0aGF0IHdlIG5lZWQgdG8gcmV3b3JrIG93bmVyc2hpcCBmb3IuCisK
KyAgICAgICAgVGhlIGNoYW5nZSBvdmVyIHRvIHRoaXMgbW9kZWwgaGFzIHByb2R1Y2VkIGEgbGFy
Z2UgYW1vdW50IG9mCisgICAgICAgIGNvZGUgY2hhbmdlcywgYnV0IHRoZXkgYXJlIG1vc3RseSBt
ZWNoYW5pY2FsIChmb3J3YXJkaW5nIEpTR2xvYmFsRGF0YSwKKyAgICAgICAgZXRjKS4KKworICAg
ICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tP
YmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNr
T2JqZWN0RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OmdldFByaXZhdGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6
c2V0UHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6
OkpTUHJpdmF0ZVByb3BlcnR5TWFwOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0Nh
bGxiYWNrT2JqZWN0OjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6Ojo6cHV0KToKKyAgICAgICAgKEpT
Qzo6OjpzdGF0aWNGdW5jdGlvbkdldHRlcik6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNw
cDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTT2JqZWN0
U2V0UHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKiBBUEkvSlNXZWFrT2JqZWN0TWFwUmVmSW50
ZXJuYWwuaDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0Fn
Z3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJ
Zk5vdEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SnVtcElmTm90RnVuY3Rpb25BcHBseSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpmaW5kU2NvcGVkUHJvcGVydHkpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZh
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6RGVidWdnZXJBY3Rp
dmF0aW9uKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjptYXJrQ2hpbGRyZW4p
OgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJl
c29sdmUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZVNraXApOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbER5bmFtaWMpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6cmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VU
b0Vycm9yKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVy
L1JlZ2lzdGVyLmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpqc1ZhbHVlU2xvdCk6CisgICAg
ICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNo
ZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KToKKyAgICAg
ICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6bWFy
a0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgIChKU0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50
cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnNldEFjdGl2YXRpb24pOgorICAgICAgICAo
SlNDOjpBcmd1bWVudHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayk6CisgICAg
ICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmFycmF5UHJv
dG9GdW5jU3BsaWNlKToKKyAgICAgICAgKiBydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1p
emVyLmg6CisgICAgICAgIChKU0M6OkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOjpCYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplcik6CisgICAgICAgIChKU0M6OkJhdGNoZWRUcmFuc2l0aW9uT3B0
aW1pemVyOjp+QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
Qm9vbGVhbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbkNvbnN0cnVjdG9y
OjpCb29sZWFuQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RCb29sZWFuKToK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKToKKyAg
ICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpCb29s
ZWFuUHJvdG90eXBlOjpCb29sZWFuUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbnNl
cnZhdGl2ZVNldC5oOgorICAgICAgICAoSlNDOjpDb25zZXJ2YXRpdmVTZXQ6Om1hcmspOgorICAg
ICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUNv
bnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3Rh
bmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UpOgorICAg
ICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNTZXRUaW1lKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MpOgor
ICAgICAgICAoSlNDOjpzZXROZXdWYWx1ZUZyb21EYXRlQXJncyk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNTZXRZZWFyKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJv
ckluc3RhbmNlOjpFcnJvckluc3RhbmNlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKToK
KyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90
b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRl
ci5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6bWFya0NoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6
OkdldHRlclNldHRlcik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6Z2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpzZXRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpHZXR0
ZXJTZXR0ZXI6OnNldHRlcik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6c2V0U2V0dGVy
KToKKyAgICAgICAgKiBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChK
U0M6Okdsb2JhbEV2YWxGdW5jdGlvbjo6R2xvYmFsRXZhbEZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6R2xvYmFsRXZhbEZ1bmN0aW9uOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
R2xvYmFsRXZhbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6Okdsb2JhbEV2YWxGdW5jdGlvbjo6
Y2FjaGVkR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjptYXJrUHJvdGVjdGVkT2JqZWN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6
Om1hcmtUZW1wU29ydFZlY3RvcnMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6Oklu
dGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
UElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OnZhbHVl
KToKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OkpTQVBJVmFsdWVXcmFwcGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0
aXZhdGlvbjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAo
SlNDOjpKU0FycmF5OjpKU0FycmF5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJh
eTo6cHV0U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpkZWxldGVQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnVu
c2hpZnRDb3VudCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnQpOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb1Jl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0SW5k
ZXgpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpzZXRJbmRleCk6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnVuY2hlY2tlZFNldEluZGV4KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6bWFya0No
aWxkcmVuRGlyZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6Ok1hcmtTdGFjazo6YXBwZW5kKToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpNYXJrU3RhY2s6OmFwcGVuZENlbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXJrSWZOZWVk
ZWQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdERhdGE6OkpT
R2xvYmFsT2JqZWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjplcnJvckNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmV2YWxFcnJvckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJhbmdlRXJyb3JDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnN5bnRheEVycm9yQ29uc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dHlwZUVycm9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6VVJJRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpldmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6b2JqZWN0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmFycmF5UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmJvb2xlYW5Q
cm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RyaW5nUHJvdG90eXBl
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51bWJlclByb3RvdHlwZSk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpkYXRlUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0OjptZXRob2RDYWxsRHVtbXkpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheSk6
CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5n
aWZpZXI6OkhvbGRlcjo6b2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRl
cjo6b2JqZWN0U2xvdCk6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjptYXJrQWdncmVnYXRl
KToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OnN0cmluZ2lmeSk6CisgICAgICAgIChKU0M6
OlN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OldhbGtlcjo6Y2FsbFJldml2ZXIpOgorICAgICAgICAoSlNDOjpXYWxrZXI6OndhbGspOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVm
aW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZVNldHRlcik6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpyZW1vdmVEaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0RGlyZWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OnB1dERlc2NyaXB0b3Ip
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9m
ZnNldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNl
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmbGF0dGVuRGljdGlvbmFyeU9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dERpcmVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZUlubGluZSk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTdGF0aWNTY29wZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3RhdGljU2NvcGVPYmpl
Y3Q6Om1hcmtDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAg
ICAgIChKU0M6OlN0cmluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFs
dWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTV3JhcHBlck9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
V3JhcHBlck9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OmludGVybmFs
VmFsdWUpOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OnNldEludGVybmFsVmFsdWUp
OgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6Okxp
dGVyYWxQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAg
ICAgIChKU0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xv
b2t1cC5oOgorICAgICAgICAoSlNDOjpsb29rdXBQdXQpOgorICAgICAgICAqIHJ1bnRpbWUvTWFy
a1N0YWNrLmg6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWF0aE9iamVjdDo6TWF0aE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVF
cnJvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6Ok51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdFdpdGhOdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICog
cnVudGltZS9OdW1iZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3ROdW1iZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
TnVtYmVyUHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6T2Jq
ZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKToKKyAgICAgICAgKEpTQzo6cmVzb2x2
ZUJhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpQcm90b3R5cGVGdW5jdGlvbjo6UHJvdG90eXBlRnVuY3Rpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xv
dDo6c2V0RXhpc3RpbmdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6
c2V0TmV3UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OmJhc2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpS
ZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUv
U2NvcGVDaGFpbi5jcHA6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpwcmludCk6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5O
b2RlOjp+U2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluSXRlcmF0b3I6
Om9wZXJhdG9yKik6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5JdGVyYXRvcjo6b3BlcmF0b3It
Pik6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW46OnRvcCk6CisgICAgICAgICogcnVudGltZS9T
Y29wZUNoYWluTWFyay5oOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluOjptYXJrQWdncmVnYXRl
KToKKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5jcHA6CisgICAgICAgIChKU0M6Omlz
TWFya2VkKToKKyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjptYXJrQ2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5n
czo6ZW1wdHlTdHJpbmcpOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnNpbmdsZUNoYXJh
Y3RlclN0cmluZyk6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6c2luZ2xlQ2hhcmFjdGVy
U3RyaW5ncyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6
OlN0cmluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1By
b3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5j
cHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6c3RvcmVkUHJvdG90eXBlU2xvdCk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoK
KyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjp1bmNoZWNrZWRHZXQpOgorICAgICAgICAoSlNDOjpX
ZWFrR0NNYXA6OnVuY2hlY2tlZEdldFNsb3QpOgorICAgICAgICAoSlNDOjo6OmdldCk6CisgICAg
ICAgIChKU0M6Ojo6dGFrZSk6CisgICAgICAgIChKU0M6Ojo6c2V0KToKKyAgICAgICAgKEpTQzo6
Ojp1bmNoZWNrZWRSZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpEZXByZWNhdGVkUHRyOjpEZXByZWNhdGVkUHRyKToKKyAgICAg
ICAgKEpTQzo6RGVwcmVjYXRlZFB0cjo6Z2V0KToKKyAgICAgICAgKEpTQzo6RGVwcmVjYXRlZFB0
cjo6b3BlcmF0b3IqKToKKyAgICAgICAgKEpTQzo6RGVwcmVjYXRlZFB0cjo6b3BlcmF0b3ItPik6
CisgICAgICAgIChKU0M6OkRlcHJlY2F0ZWRQdHI6OnNsb3QpOgorICAgICAgICAoSlNDOjpEZXBy
ZWNhdGVkUHRyOjpvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKik6CisgICAgICAgIChKU0M6
OkRlcHJlY2F0ZWRQdHI6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OldyaXRlQmFycmllckJh
c2U6OnNldCk6CisgICAgICAgIChKU0M6OldyaXRlQmFycmllckJhc2U6OmdldCk6CisgICAgICAg
IChKU0M6OldyaXRlQmFycmllckJhc2U6Om9wZXJhdG9yKik6CisgICAgICAgIChKU0M6OldyaXRl
QmFycmllckJhc2U6Om9wZXJhdG9yLT4pOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNl
OjpzbG90KToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6b3BlcmF0b3IgVW5zcGVj
aWZpZWRCb29sVHlwZSopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRv
ciEpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXI6OldyaXRlQmFycmllcik6CisgICAgICAg
IChKU0M6Om9wZXJhdG9yPT0pOgorCiAyMDExLTAxLTI2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBh
cm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCAxOTljMzdmMGMyYjY0
MmJmMWM2OTk0NDM5ZDM5OWFhOWNmNGI1ZDQ0Li45ODJhZTE5ZWM4NzM3MjBkMzk1YmNlNmQ3NWRj
ZTJkNjM1OTFkYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAK
QEAgLTE4Myw3ICsxODMsNyBAQCBfX1pOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3IyMXNldER1bXBz
R2VuZXJhdGVkQ29kZUViCiBfX1pOM0pTQzE3UHJvcGVydHlOYW1lQXJyYXkzYWRkRVBOM1dURjEw
U3RyaW5nSW1wbEUKIF9fWk4zSlNDMTdjb25zdHJ1Y3RGdW5jdGlvbkVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzdBcmdMaXN0RVJLTlNfMTBJZGVudGlmaWVyRVJLTlNfN1VTdHJpbmdFaQogX19aTjNKU0Mx
N2NyZWF0ZVN5bnRheEVycm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCi1fX1pOM0pT
QzE4RGVidWdnZXJBY3RpdmF0aW9uQzFFUE5TXzhKU09iamVjdEUKK19fWk4zSlNDMThEZWJ1Z2dl
ckFjdGl2YXRpb25DMUVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzhKU09iamVjdEUKIF9fWk4zSlND
MThQcm9wZXJ0eURlc2NyaXB0b3IxMXNldFdyaXRhYmxlRWIKIF9fWk4zSlNDMThQcm9wZXJ0eURl
c2NyaXB0b3IxMnNldFVuZGVmaW5lZEV2CiBfX1pOM0pTQzE4UHJvcGVydHlEZXNjcmlwdG9yMTNz
ZXREZXNjcmlwdG9yRU5TXzdKU1ZhbHVlRWoKQEAgLTI1MSw3ICsyNTEsNyBAQCBfX1pOM0pTQzdK
U0FycmF5MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5
U2xvdEUKIF9fWk4zSlNDN0pTQXJyYXk0aW5mb0UKIF9fWk4zSlNDN0pTQXJyYXk5c2V0TGVuZ3Ro
RWoKIF9fWk4zSlNDN0pTQXJyYXlDMUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVj
dHVyZUVFRQotX19aTjNKU0M3SlNBcnJheUMxRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185
U3RydWN0dXJlRUVFUktOU183QXJnTGlzdEUKK19fWk4zSlNDN0pTQXJyYXlDMUVSTlNfMTJKU0ds
b2JhbERhdGFFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVSS05TXzdB
cmdMaXN0RQogX19aTjNKU0M3SlNBcnJheUMyRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185
U3RydWN0dXJlRUVFCiBfX1pOM0pTQzdKU0FycmF5RDJFdgogX19aTjNKU0M3SlNWYWx1ZTEzaXNW
YWxpZENhbGxlZUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZGVmCmluZGV4IDAxMzczNmFmZWZmOTc5OTJjNWQ2N2NhMWIwNDAzZWJlZjMzMDI0
MDEuLjYxNDcyZTc2YzdiYjZlMTJjY2Y0MDlkNDhjNGZjZTFmOWEzZGZjNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0xMCw3
ICsxMCw3IEBAIEVYUE9SVFMKICAgICA/PzBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGVASlNDQEBR
QUVAUEFWRXhlY1N0YXRlQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBAWgogICAgID8/MEludGVybmFs
RnVuY3Rpb25ASlNDQEBJQUVAUEFWSlNHbG9iYWxEYXRhQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBW
PyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQUJWSWRlbnRpZmllckAx
QEBaCiAgICAgPz8wSlNBcnJheUBKU0NAQFFBRUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0
dXJlQEpTQ0BAQFdURkBAQFoKLSAgICA/PzBKU0FycmF5QEpTQ0BAUUFFQFY/JE5vbk51bGxQYXNz
UmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQlZBcmdMaXN0QDFAQFoKKyAgICA/PzBKU0Fy
cmF5QEpTQ0BAUUFFQEFBVkpTR2xvYmFsRGF0YUAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1
Y3R1cmVASlNDQEBAV1RGQEBBQlZBcmdMaXN0QDFAQFogIAogICAgID8/MEpTQnl0ZUFycmF5QEpT
Q0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlND
QEBAV1RGQEBQQVZCeXRlQXJyYXlANEBQQlVDbGFzc0luZm9AMUBAWgogICAgID8/MEpTRnVuY3Rp
b25ASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBWPyROb25OdWxs
UGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBASEFCVklkZW50aWZpZXJAMUBQNklfSjBA
WkBaCiAgICAgPz8wSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QEpTQ0BASUFFQFBBVkpTR2xvYmFs
T2JqZWN0QDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQEBaCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFlMzVmNmVhOTcyZWQ3MTA1NDBlZmRhMDRl
YTg2YjU0M2QzNmI4YmIuLjA5ODVlMWU5ODk1NTViNWU1ZTcwZmY4YzJlZDZkMzZhMTRiZTgzMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzIsNiArMzcyLDcgQEAKIAkJQTdD
MUU4RTQxMTJFNzJFRjAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDMUU4QzgxMTJFNzAx
QzAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwICovOyB9OwogCQlBN0M1MzBF
NDEwMkEzODEzMDA1QkM3NDEgLyogTWFya1N0YWNrUG9zaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDNTMwRTMxMDJBMzgxMzAwNUJDNzQxIC8q
IE1hcmtTdGFja1Bvc2l4LmNwcCAqLzsgfTsKIAkJQTdENjQ5QUExMDE1MjI0RTAwOUIyRTFCIC8q
IFBvc3NpYmx5TnVsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdENjQ5QTkxMDE1MjI0RTAwOUIyRTFCIC8qIFBvc3NpYmx5TnVsbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RENCOTczMTJFNTE5
M0YwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
N0UyRUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdFMkVBNjkwRkI0NjBDRjAwNjAxRjA2
IC8qIExpdGVyYWxQYXJzZXIuaCAqLzsgfTsKIAkJQTdFMkVBNkMwRkI0NjBDRjAwNjAxRjA2IC8q
IExpdGVyYWxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdFMkVBNkEwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuY3BwICov
OyB9OwogCQlBN0YxOUVDRTExREQ0OTA5MDA5MzFFNzAgLyogRml4ZWRBcnJheS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGMTlFQ0QxMURENDkwOTAw
OTMxRTcwIC8qIEZpeGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTA0Miw2ICsxMDQzLDcgQEAKIAkJQTdDMUU4QzgxMTJFNzAxQzAw
QTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3QzUzMEUzMTAyQTM4MTMwMDVCQzc0MSAvKiBNYXJrU3RhY2tQ
b3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrU3RhY2tQ
b3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDY0OUE5MTAxNTIyNEUw
MDlCMkUxQiAvKiBQb3NzaWJseU51bGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUG9zc2libHlOdWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RENCNzc5
MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpdGVyYWxQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTdFMkVBNkEwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGl0ZXJhbFBhcnNlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RTQyQzE4MEUzOTM4ODMwMDY1QTU0NCAv
KiBKU1N0YXRpY1Njb3BlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU3RhdGljU2NvcGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5
MDQsNiArMTkwNiw3IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01h
cC5oICovLAogCQkJCTE0MDM1REIwMTBEQkZCMkEwMEZGRkZFNyAvKiBXZWFrR0NQdHIuaCAqLywK
IAkJCQkxNDIwQkU3QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oICovLAorCQkJCUE3
RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDI3LDYgKzI0
MzAsNyBAQAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURFNkU1QjMwRTE3MjhFQzAwMTgwNDA3IC8qIGNyZWF0
ZV9oYXNoX3RhYmxlIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0
IC8qIFlhcnIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RENCOTczMTJFNTE5M0YwMDkxMTk0MCAv
KiBXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OURDMTZDMTJFRjI5NEUwMDE4
NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDlEQzE2
RDEyRUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggZjNmNWYyNzFhZTIzZmViZTAyOGRhMzc3YjY4ZWM2NjkyMmQyM2FlYy4uYWFmOTBj
Njc3NjQxMjg3ZTkwMjhmZWY3NjE2YWNhNWYxNmFmNWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1MjksMTIgKzE1MjksMTIgQEAgdm9p
ZCBDb2RlQmxvY2s6OnJlZlN0cnVjdHVyZXMoSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QKIHZvaWQg
Q29kZUJsb2NrOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCk7ICsraSkKLSAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZChtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLmpzVmFsdWUoKSk7
CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9jb25zdGFudFJlZ2lzdGVyc1tpXS5qc1ZhbHVl
U2xvdCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25FeHBycy5zaXpl
KCk7ICsraSkKICAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLT5tYXJrQWdncmVnYXRlKG1hcmtT
dGFjayk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgp
OyArK2kpCiAgICAgICAgIG1fZnVuY3Rpb25EZWNsc1tpXS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3Rh
Y2spOwotICAgIG1hcmtTdGFjay5hcHBlbmQobV9nbG9iYWxPYmplY3QpOworICAgIG1hcmtTdGFj
ay5hcHBlbmQobV9nbG9iYWxPYmplY3Quc2xvdCgpKTsKIH0KIAogSGFuZGxlckluZm8qIENvZGVC
bG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDFjZDA4NjM2
MDhlNGVmMDI0NjY5YThmYzZiNjAxNzAyZGY4ZjQxMDAuLmFkMmVmYTY2OGQwMDM2YmJmZmQ3ZTU1
MzdlMDRiMDdkY2U1MmQxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIENvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IENvZGVUeXBlLCBKU0dsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+LCB1
bnNpZ25lZCBzb3VyY2VPZmZzZXQsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgYm9vbCBpc0Nv
bnN0cnVjdG9yKTsKIAotICAgICAgICBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7Cisg
ICAgICAgIERlcHJlY2F0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogCiAg
ICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Db2RlQmxvY2soKTsKQEAgLTQ4NSw3ICs0ODUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgYWRkUmVnRXhwKFJlZ0V4cCog
cikgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHVuc2lnbmVkIHNpemUgPSBtX3JhcmVE
YXRhLT5tX3JlZ2V4cHMuc2l6ZSgpOyBtX3JhcmVEYXRhLT5tX3JlZ2V4cHMuYXBwZW5kKHIpOyBy
ZXR1cm4gc2l6ZTsgfQogICAgICAgICBSZWdFeHAqIHJlZ2V4cChpbnQgaW5kZXgpIGNvbnN0IHsg
QVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9yZWdleHBzW2luZGV4XS5n
ZXQoKTsgfQogCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVy
biBtX2dsb2JhbE9iamVjdDsgfQorICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KIAogICAgICAgICAvLyBKdW1wIFRh
YmxlcwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDc4YzM3M2E2YWU1NWE2ZDQ4ZjIyNTBhNDY4ZDBl
MDY2ODMwMzE2MGQuLjA5NjQzNDQ4MDNhMTBkZGQyMWYyMmQ2MTVlYzRkZGRiYjhiODE0MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgY29uc3QgU2NvcGVDaGFp
biYKICAgICBmb3IgKFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdCA9IHN5bWJvbFRhYmxlLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHJlZ2lzdGVyRm9yKGl0LT5zZWNvbmQuZ2V0
SW5kZXgoKSkuc2V0SW5kZXgoaXQtPnNlY29uZC5nZXRJbmRleCgpICsgbV9nbG9iYWxWYXJTdG9y
YWdlT2Zmc2V0KTsKICAgICAgICAgCi0gICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIgb3B0
aW1pemVyKGdsb2JhbE9iamVjdCk7CisgICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIgb3B0
aW1pemVyKCptX2dsb2JhbERhdGEsIGdsb2JhbE9iamVjdCk7CiAKICAgICBjb25zdCBWYXJTdGFj
ayYgdmFyU3RhY2sgPSBwcm9ncmFtTm9kZS0+dmFyU3RhY2soKTsKICAgICBjb25zdCBGdW5jdGlv
blN0YWNrJiBmdW5jdGlvblN0YWNrID0gcHJvZ3JhbU5vZGUtPmZ1bmN0aW9uU3RhY2soKTsKQEAg
LTkwMyw3ICs5MDMsNyBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLAogCiAgICAgZW1pdE9wY29k
ZShvcF9qbmVxX3B0cik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbmQtPmluZGV4KCkp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdCgp
LT5kKCktPmNhbGxGdW5jdGlvbik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fc2NvcGVD
aGFpbi0+Z2xvYmFsT2JqZWN0KCktPmQoKS0+Y2FsbEZ1bmN0aW9uLmdldCgpKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpKTsKICAgICByZXR1cm4gdGFyZ2V0OwogfQpAQCAtOTE0LDcgKzkxNCw3IEBAIFBhc3NSZWZQ
dHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShS
ZWdpc3RlcklEKiBjb25kCiAKICAgICBlbWl0T3Bjb2RlKG9wX2puZXFfcHRyKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoY29uZC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KCktPmQoKS0+YXBwbHlGdW5jdGlvbik7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KCktPmQo
KS0+YXBwbHlGdW5jdGlvbi5nZXQoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdl
dC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgcmV0dXJuIHRhcmdl
dDsKIH0KQEAgLTExMTcsNyArMTExNyw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmZpbmRT
Y29wZWRQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgaW50JiBpbmRlCiAKICAg
ICAgICAgaWYgKHNob3VsZE9wdGltaXplTG9jYWxzKCkgJiYgbV9jb2RlVHlwZSA9PSBHbG9iYWxD
b2RlKSB7CiAgICAgICAgICAgICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IG1fc2NvcGVDaGFp
bi0+YmVnaW4oKTsKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9ICppdGVyOworICAgICAgICAg
ICAgZ2xvYmFsT2JqZWN0ID0gaXRlci0+Z2V0KCk7CiAgICAgICAgICAgICBBU1NFUlQoKCsraXRl
cikgPT0gbV9zY29wZUNoYWluLT5lbmQoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZmluZFNj
b3BlZFByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBpbnQmIGluZGUKICAgICBT
Y29wZUNoYWluSXRlcmF0b3IgaXRlciA9IG1fc2NvcGVDaGFpbi0+YmVnaW4oKTsKICAgICBTY29w
ZUNoYWluSXRlcmF0b3IgZW5kID0gbV9zY29wZUNoYWluLT5lbmQoKTsKICAgICBmb3IgKDsgaXRl
ciAhPSBlbmQ7ICsraXRlciwgKytkZXB0aCkgewotICAgICAgICBKU09iamVjdCogY3VycmVudFNj
b3BlID0gKml0ZXI7CisgICAgICAgIEpTT2JqZWN0KiBjdXJyZW50U2NvcGUgPSBpdGVyLT5nZXQo
KTsKICAgICAgICAgaWYgKCFjdXJyZW50U2NvcGUtPmlzVmFyaWFibGVPYmplY3QoKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0KiBjdXJyZW50VmFyaWFibGVP
YmplY3QgPSBzdGF0aWNfY2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oY3VycmVudFNjb3BlKTsKQEAg
LTExNTcsNyArMTE1Nyw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmZpbmRTY29wZWRQcm9w
ZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgaW50JiBpbmRlCiAgICAgLy8gQ2FuJ3Qg
bG9jYXRlIHRoZSBwcm9wZXJ0eSBidXQgd2UncmUgYWJsZSB0byBhdm9pZCBhIGZldyBsb29rdXBz
LgogICAgIHN0YWNrRGVwdGggPSBkZXB0aCArIG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCk7CiAgICAgaW5kZXggPSBtaXNzaW5nU3ltYm9sTWFya2VyKCk7Ci0gICAgSlNPYmplY3Qq
IHNjb3BlID0gKml0ZXI7CisgICAgSlNPYmplY3QqIHNjb3BlID0gaXRlci0+Z2V0KCk7CiAgICAg
aWYgKCsraXRlciA9PSBlbmQpCiAgICAgICAgIGdsb2JhbE9iamVjdCA9IHNjb3BlOwogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCAwNDQ0ZDIzZDIwNGY4MzE4YTM5MjU1NWM1YzU3YzU2
OTA2YTNiOTE0Li40NDNiODFiYzkzNzhmYzFjODExODFhMmVhZGYwNmZhOWQ1MzFhZDlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0
aW9uLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EZWJ1Z2dl
ckFjdGl2YXRpb246OkRlYnVnZ2VyQWN0aXZhdGlvbihKU09iamVjdCogYWN0aXZhdGlvbikKK0Rl
YnVnZ2VyQWN0aXZhdGlvbjo6RGVidWdnZXJBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNPYmplY3QqIGFjdGl2YXRpb24pCiAgICAgOiBKU09iamVjdChEZWJ1Z2dlckFjdGl2
YXRpb246OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiB7CiAgICAgQVNTRVJUKGFjdGl2YXRp
b24pOwogICAgIEFTU0VSVChhY3RpdmF0aW9uLT5pc0FjdGl2YXRpb25PYmplY3QoKSk7Ci0gICAg
bV9hY3RpdmF0aW9uID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbik7Cisg
ICAgbV9hY3RpdmF0aW9uLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdGF0aWNfY2FzdDxKU0FjdGl2
YXRpb24qPihhY3RpdmF0aW9uKSk7CiB9CiAKIHZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjptYXJr
Q2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgRGVi
dWdnZXJBY3RpdmF0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAg
SlNPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogCiAgICAgaWYgKG1fYWN0aXZhdGlv
bikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX2FjdGl2YXRpb24pOworICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKG1fYWN0aXZhdGlvbi5zbG90KCkpOwogfQogCiBVU3RyaW5nIERlYnVnZ2Vy
QWN0aXZhdGlvbjo6Y2xhc3NOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAppbmRleCAzOTI3MDE3NDFiYTc2NGIz
ZjQ0MzkyZGE5OWM3MDA2ZGNjNWM0YzVkLi5iNjQwNjBkY2Y4NDdjOWE3N2U5OWMzMWY0MTMyZmU2
OTg2ZjU4MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRGVidWdnZXJBY3RpdmF0aW9uIDogcHVibGljIEpTT2JqZWN0IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIERlYnVnZ2VyQWN0aXZhdGlvbihKU09iamVjdCopOworICAgICAgICBEZWJ1
Z2dlckFjdGl2YXRpb24oSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogICAgICAgICB2aXJ0dWFsIFVTdHJp
bmcgY2xhc3NOYW1lKCkgY29uc3Q7CkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBKU09iamVjdDo6U3Ry
dWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU0FjdGl2YXRpb24qIG1fYWN0
aXZhdGlvbjsKKyAgICAgICAgV3JpdGVCYXJyaWVyPEpTQWN0aXZhdGlvbj4gbV9hY3RpdmF0aW9u
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMzkyZThiOGI1YjEzOTVkYzJi
ZTA1MjdiMjMwOTZlZGQ1Y2Q2MDhmOS4uZTVmYjM0OTg3ZDNiMzNjOWQ5MWMwZGUyZWMyYTAwZjg4
OWJkZmNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJw
cmV0ZXI6OnJlc29sdmUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydWN0aW9uKiB2UEMsIEoK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAg
SWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwogICAg
IGRvIHsKLSAgICAgICAgSlNPYmplY3QqIG8gPSAqaXRlcjsKKyAgICAgICAgSlNPYmplY3QqIG8g
PSBpdGVyLT5nZXQoKTsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qobyk7CiAgICAgICAgIGlm
IChvLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsKQEAg
LTE0Miw3ICsxNDIsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVzb2x2ZVNr
aXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydWN0aW9uKiB2UAogICAgIH0KICAgICBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CiAgICAgZG8g
ewotICAgICAgICBKU09iamVjdCogbyA9ICppdGVyOworICAgICAgICBKU09iamVjdCogbyA9IGl0
ZXItPmdldCgpOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvKTsKICAgICAgICAgaWYgKG8t
PmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAgICAgICAg
SlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwpAQCAtMjIw
LDcgKzIyMCw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFs
RHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgICAgICAgICArK2l0ZXI7
CiAgICAgfQogICAgIHdoaWxlIChza2lwLS0pIHsKLSAgICAgICAgSlNPYmplY3QqIG8gPSAqaXRl
cjsKKyAgICAgICAgSlNPYmplY3QqIG8gPSBpdGVyLT5nZXQoKTsKICAgICAgICAgaWYgKG8tPmhh
c0N1c3RvbVByb3BlcnRpZXMoKSkgewogICAgICAgICAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBj
b2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwogICAgICAgICAgICAgZG8gewpAQCAtMjM2
LDcgKzIzNiw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFs
RHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGlmIChpdGVyID09IGVuZCkKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgbyA9ICppdGVyOworICAgICAgICAgICAgICAgIG8gPSBpdGVy
LT5nZXQoKTsKICAgICAgICAgICAgICAgICArK2l0ZXI7CiAgICAgICAgICAgICB9IHdoaWxlICh0
cnVlKTsKICAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihjYWxsRnJhbWUsIGlkZW50KTsKQEAgLTMxMCw3ICszMTAsNyBAQCBORVZFUl9JTkxJ
TkUgYm9vbCBJbnRlcnByZXRlcjo6cmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eShDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSW5zdAogICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlm
aWVyKHByb3BlcnR5KTsKICAgICBKU09iamVjdCogYmFzZTsKICAgICBkbyB7Ci0gICAgICAgIGJh
c2UgPSAqaXRlcjsKKyAgICAgICAgYmFzZSA9IGl0ZXItPmdldCgpOwogICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlKTsKICAgICAgICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChjYWxs
RnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90
LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwpAQCAtNTY2LDExICs1NjYsMTEgQEAgTkVWRVJf
SU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZShDYWxsRnJhbWUqJiBjYWxs
RnJhbWUsIEpTVmFsdWUgZXgKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoIXNjb3BlQ2hhaW4t
Pm9iamVjdC0+aW5oZXJpdHMoJkpTQWN0aXZhdGlvbjo6aW5mbykpCiAgICAgICAgICAgICBzY29w
ZUNoYWluID0gc2NvcGVDaGFpbi0+cG9wKCk7Ci0gICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZh
dGlvbiA9IGFzQWN0aXZhdGlvbihzY29wZUNoYWluLT5vYmplY3QpOworICAgICAgICBKU0FjdGl2
YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oc2NvcGVDaGFpbi0+b2JqZWN0LmdldCgp
KTsKICAgICAgICAgYWN0aXZhdGlvbi0+Y29weVJlZ2lzdGVycygpOwogICAgICAgICBpZiAoSlNW
YWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKG9sZENvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFsdWUoKSkg
ewogICAgICAgICAgICAgaWYgKCFvbGRDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAgICAg
ICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPnNldEFjdGl2YXRpb24oYWN0aXZhdGlv
bik7CisgICAgICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJndW1lbnRzKS0+c2V0QWN0aXZhdGlv
bihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKG9sZENvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpICYmICFvbGRDb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlmIChKU1ZhbHVlIGFyZ3VtZW50cyA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIob2xkQ29kZUJsb2Nr
LT5hcmd1bWVudHNSZWdpc3RlcigpKSkuanNWYWx1ZSgpKQpAQCAtNjQ4LDcgKzY0OCw3IEBAIHN0
YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVycm9y
SW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICAgICAgbWVzc2FnZSA9IG1ha2VVU3RyaW5nKG1lc3Nh
Z2UsICIgKG5lYXIgJy4uLiIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKHN0YXJ0LCBz
dG9wKSwgIi4uLicpIik7CiAgICAgfQogCi0gICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoZ2xvYmFs
RGF0YS0+cHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbWVzc2Fn
ZSkpOworICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5w
cm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBtZXNzYWdlKSk7CiB9
CiAKIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9u
KENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
T2JqZWMKICAgICBmb3IgKFNjb3BlQ2hhaW5Ob2RlKiBub2RlID0gc2NvcGVDaGFpbjsgOyBub2Rl
ID0gbm9kZS0+bmV4dCkgewogICAgICAgICBBU1NFUlQobm9kZSk7CiAgICAgICAgIGlmIChub2Rl
LT5vYmplY3QtPmlzVmFyaWFibGVPYmplY3QoKSkgewotICAgICAgICAgICAgdmFyaWFibGVPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4obm9kZS0+b2JqZWN0KTsKKyAgICAg
ICAgICAgIHZhcmlhYmxlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KG5v
ZGUtPm9iamVjdC5nZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0K
QEAgLTExMDAsNyArMTEwMCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4
ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjCiAgICAgICAgICAg
ICBwdXNoZWRTY29wZSA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gU2NvcGUgZm9yIEJh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyCi0gICAgICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1p
emVyIG9wdGltaXplcih2YXJpYWJsZU9iamVjdCk7CisgICAgICAgIEJhdGNoZWRUcmFuc2l0aW9u
T3B0aW1pemVyIG9wdGltaXplcihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgdmFyaWFibGVPYmpl
Y3QpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsr
aSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPnZh
cmlhYmxlKGkpOwpAQCAtMTM3MSw3ICsxMzcxLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJw
cmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKgog
ICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBp
dCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQg
YXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBpZiAoYmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlz
RGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFy
eU9iamVjdCgpOworICAgICAgICAgICAgYmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmpl
Y3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgb2Zmc2V0ID0gYmFzZU9i
amVjdC0+c3RydWN0dXJlKCktPmdldChwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9CiAKQEAgLTI0
MDgsNyArMjQwOCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1
dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgICAgICBBU1NF
UlQoaXRlciAhPSBlbmQpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVCgoKml0ZXIpLT5pc1Zh
cmlhYmxlT2JqZWN0KCkpOwotICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0KiBzY29wZSA9IHN0YXRp
Y19jYXN0PEpTVmFyaWFibGVPYmplY3QqPigqaXRlcik7CisgICAgICAgIEpTVmFyaWFibGVPYmpl
Y3QqIHNjb3BlID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KGl0ZXItPmdldCgpKTsK
ICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBzY29wZS0+cmVnaXN0ZXJBdChp
bmRleCk7CiAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUtPnIoZHN0KS5qc1ZhbHVlKCkpOwogICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfc2NvcGVkX3Zhcik7CkBAIC0yNDM5LDcg
KzI0MzksNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25G
bGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICB9CiAKICAgICAgICAg
QVNTRVJUKCgqaXRlciktPmlzVmFyaWFibGVPYmplY3QoKSk7Ci0gICAgICAgIEpTVmFyaWFibGVP
YmplY3QqIHNjb3BlID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KCppdGVyKTsKKyAg
ICAgICAgSlNWYXJpYWJsZU9iamVjdCogc2NvcGUgPSBzdGF0aWNfY2FzdDxKU1ZhcmlhYmxlT2Jq
ZWN0Kj4oaXRlci0+Z2V0KCkpOwogICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5yKHZhbHVlKS5q
c1ZhbHVlKCkpOwogICAgICAgICBzY29wZS0+cmVnaXN0ZXJBdChpbmRleCkgPSBKU1ZhbHVlKGNh
bGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5H
VEgob3BfcHV0X3Njb3BlZF92YXIpOwpAQCAtMzA4MCw3ICszMDgwLDcgQEAgc2tpcF9pZF9jdXN0
b21fc2VsZjoKICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSB2UENbM10udS5vcGVyYW5kOwog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHZQQ1s3XS51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJhc2VPYmpl
Y3QtPmdldERpcmVjdExvY2F0aW9uKGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVy
YW5kKSkpID09IG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0
T2Zmc2V0KG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOworICAgICAgICAg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KSwgb2Zmc2V0LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAKICAgICAgICAgICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbik7CiAgICAg
ICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMzExNSw3ICszMTE1LDcgQEAgc2tp
cF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENb
NV0udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFTU0VSVChi
YXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlv
bihjb2RlQmxvY2stPmlkZW50aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOwot
ICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChvZmZzZXQsIGNhbGxG
cmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1l
LT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogCiAgICAgICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9M
RU5HVEgob3BfcHV0X2J5X2lkX3JlcGxhY2UpOwogICAgICAgICAgICAgICAgIE5FWFRfSU5TVFJV
Q1RJT04oKTsKQEAgLTMzMDksNyArMzMwOSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAg
ICAgICAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsKICAgICAgICAg
ICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAg
ICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKLSAgICAgICAgICAgICAgICAgICAg
anNBcnJheS0+c2V0SW5kZXgoaSwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOworICAg
ICAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleCgqZ2xvYmFsRGF0YSwgaSwgY2FsbEZy
YW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAganNBcnJheS0+SlNBcnJheTo6cHV0KGNhbGxGcmFtZSwgaSwgY2FsbEZyYW1l
LT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0ZUFy
cmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2Fu
QWNjZXNzSW5kZXgoaSkpIHsKQEAgLTQxMDMsNyArNDEwMyw3IEBAIHNraXBfaWRfY3VzdG9tX3Nl
bGY6CiAKICAgICAgICAgICAgIGlmIChKU1ZhbHVlIGFyZ3VtZW50c1ZhbHVlID0gY2FsbEZyYW1l
LT5yKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHMpKS5qc1ZhbHVlKCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlKS0+c2V0QWN0aXZhdGlvbihh
c0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGFzQXJn
dW1lbnRzKGFyZ3VtZW50c1ZhbHVlKS0+c2V0QWN0aXZhdGlvbigqZ2xvYmFsRGF0YSwgYXNBY3Rp
dmF0aW9uKGFjdGl2YXRpb25WYWx1ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
aWYgKEpTVmFsdWUgYXJndW1lbnRzVmFsdWUgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKGFyZ3VtZW50cykpLmpzVmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKCFj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUmVnaXN0ZXIuaAppbmRleCAzOTQ0NjQyNjgwNjM2OTQ1ODQ5MTBhZTI3Y2I2NmNiMDgx
ZDRkYWZjLi44NTk3ZWZiNTYwYzgxNmU0NjU2NGMyOTk0NDc0Yjg5MzdhNzA3NDM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaApAQCAtNTQsNiArNTQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXIoY29uc3QgSlNWYWx1ZSYpOwog
ICAgICAgICBSZWdpc3RlciYgb3BlcmF0b3I9KGNvbnN0IEpTVmFsdWUmKTsKICAgICAgICAgSlNW
YWx1ZSBqc1ZhbHVlKCkgY29uc3Q7CisgICAgICAgIEpTVmFsdWUqIGpzVmFsdWVTbG90KCk7CiAg
ICAgICAgIAogICAgICAgICBSZWdpc3RlciYgb3BlcmF0b3I9KEpTQWN0aXZhdGlvbiopOwogICAg
ICAgICBSZWdpc3RlciYgb3BlcmF0b3I9KENhbGxGcmFtZSopOwpAQCAtMTI4LDYgKzEyOSwxNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUo
dS52YWx1ZSk7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogUmVnaXN0
ZXI6OmpzVmFsdWVTbG90KCkKKyAgICB7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIEpT
VmFsdWUqIGpzVmFsdWVTbG90OworICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUqIGVuY29kZWRW
YWx1ZVNsb3Q7CisgICAgICAgIH0gY2FzdGVyOworICAgICAgICBjYXN0ZXIuZW5jb2RlZFZhbHVl
U2xvdCA9ICZ1LnZhbHVlOworICAgICAgICByZXR1cm4gY2FzdGVyLmpzVmFsdWVTbG90OworICAg
IH0KIAogICAgIC8vIEludGVycHJldGVyIGZ1bmN0aW9ucwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCmluZGV4IGY1MjFhYTUzNDdlZjRiNDFkNjMyYjk4ZDk0YjBhMDI5OTk3
OTdhMDguLmQ1M2Y0MWI0YTk0ZTQ0MmQ0Y2Q0MjlmY2VhMzYyMTIxZDRmYWNhNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC04NDUsNyArODQ1LDcgQEAgTkVWRVJf
SU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENvZGVCbG9jayogY28KICAgICAgICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJv
dG90eXBlIGluIGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQKICAgICAgICAgLy8gc2hv
dWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KICAgICAgICAgaWYgKHNsb3RCYXNl
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAgIHNsb3RC
YXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCgpOworICAgICAgICAgICAgc2xvdEJh
c2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
KTsKICAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0
KHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xNDY2LDcgKzE0NjYsNyBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX21ldGhv
ZF9jaGVjaykKICAgICAgICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGlu
IGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQKICAgICAgICAgLy8gc2hvdWxkIG5vdCBi
ZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KICAgICAgICAgaWYgKHNsb3RCYXNlT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgICAgICBzbG90QmFzZU9iamVjdC0+
ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoKTsKKyAgICAgICAgICAgIHNsb3RCYXNlT2JqZWN0LT5m
bGF0dGVuRGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSk7CiAKICAgICAg
ICAgLy8gVGhlIHJlc3VsdCBmZXRjaGVkIHNob3VsZCBhbHdheXMgYmUgdGhlIGNhbGxlZSEKICAg
ICAgICAgQVNTRVJUKHJlc3VsdCA9PSBKU1ZhbHVlKGNhbGxlZSkpOwpAQCAtMTY1Niw3ICsxNjU2
LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9w
cm90b19saXN0KQogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUg
aW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAvLyBzaG91bGQgbm90
IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBpZiAoc2xvdEJhc2VPYmplY3Qt
PnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgc2xvdEJhc2VPYmpl
Y3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KCk7CisgICAgICAgICAgICBzbG90QmFzZU9iamVj
dC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwogICAg
ICAgICAgICAgb2Zmc2V0ID0gc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQocHJvcGVy
dHlOYW1lKTsKICAgICAgICAgfQogCkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTih2b2lkLCBvcF90ZWFyX29mZl9hY3RpdmF0aW9uKQogICAgIGFjdGl2YXRpb24tPmNv
cHlSZWdpc3RlcnMoKTsKICAgICBpZiAoSlNWYWx1ZSB2ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpz
VmFsdWUoKSkgewogICAgICAgICBpZiAoIXN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+c2V0QWN0aXZh
dGlvbihhY3RpdmF0aW9uKTsKKyAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT5zZXRBY3RpdmF0
aW9uKCpzdGFja0ZyYW1lLmdsb2JhbERhdGEsIGFjdGl2YXRpb24pOwogICAgIH0KIH0KIApAQCAt
MjIwNCw3ICsyMjA0LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9w
X3Jlc29sdmUpCiAKICAgICBJZGVudGlmaWVyJiBpZGVudCA9IHN0YWNrRnJhbWUuYXJnc1swXS5p
ZGVudGlmaWVyKCk7CiAgICAgZG8gewotICAgICAgICBKU09iamVjdCogbyA9ICppdGVyOworICAg
ICAgICBKU09iamVjdCogbyA9IGl0ZXItPmdldCgpOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChvKTsKICAgICAgICAgaWYgKG8tPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlkZW50LCBz
bG90KSkgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxG
cmFtZSwgaWRlbnQpOwpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCwgb3BfcHV0X2J5X3ZhbCkKICAgICAgICAgaWYgKGlzSlNBcnJheShnbG9iYWxEYXRhLCBi
YXNlVmFsdWUpKSB7CiAgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNl
VmFsdWUpOwogICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQotICAgICAg
ICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBq
c0FycmF5LT5zZXRJbmRleCgqZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGpzQXJyYXktPkpTQXJyYXk6OnB1dChjYWxsRnJhbWUsIGksIHZh
bHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VW
YWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKQEAg
LTI2NDUsNyArMjY0NSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBv
cF9yZXNvbHZlX3NraXApCiAgICAgfQogICAgIElkZW50aWZpZXImIGlkZW50ID0gc3RhY2tGcmFt
ZS5hcmdzWzBdLmlkZW50aWZpZXIoKTsKICAgICBkbyB7Ci0gICAgICAgIEpTT2JqZWN0KiBvID0g
Kml0ZXI7CisgICAgICAgIEpTT2JqZWN0KiBvID0gaXRlci0+Z2V0KCk7CiAgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KG8pOwogICAgICAgICBpZiAoby0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFt
ZSwgaWRlbnQsIHNsb3QpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0
VmFsdWUoY2FsbEZyYW1lLCBpZGVudCk7CkBAIC0yOTc0LDcgKzI5NzQsNyBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZV93aXRoX2Jhc2UpCiAgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaWRlbnRpZmllcigpOwogICAgIEpT
T2JqZWN0KiBiYXNlOwogICAgIGRvIHsKLSAgICAgICAgYmFzZSA9ICppdGVyOworICAgICAgICBi
YXNlID0gaXRlci0+Z2V0KCk7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UpOwogICAg
ICAgICBpZiAoYmFzZS0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7
CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBp
ZGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGRkNGI2NzdhNDEzZTY5Y2QxZjM2NDI1Zjdh
ZDljZTA4YmJlMmU0NDMuLjkxMmI1MWE4MDgzZTZjMjZjNzlhN2YzMWFjMGM2YWI0NjYxMzViOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgR2xvYmFsT2JqZWN0OjpH
bG9iYWxPYmplY3QoY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpCiAgICAgSlNPYmpl
Y3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICBhcnJheS0+
cHV0KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0p
KTsKLSAgICBwdXREaXJlY3QoSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwg
YXJyYXkpOworICAgIHB1dERpcmVjdChnbG9iYWxFeGVjKCktPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggMzk4ODZhODY5NTgw
ZWQyN2E3ZDM2NGE4MWQ1ZTMzN2UwNDE0OTBkZi4uMjJiNTZmZTdmZGI2NGY3MGE1M2MzZTUzMzE2
NjRkYmU0NTU1MjE0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuY3BwCkBAIC01NSwxMCArNTUsMTAgQEAgdm9pZCBBcmd1bWVudHM6Om1hcmtDaGlsZHJlbihN
YXJrU3RhY2smIG1hcmtTdGFjaykKICAgICAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhyZWlu
dGVycHJldF9jYXN0PEpTVmFsdWUqPihkLT5leHRyYUFyZ3VtZW50cyksIG51bUV4dHJhQXJndW1l
bnRzKTsKICAgICB9CiAKLSAgICBtYXJrU3RhY2suYXBwZW5kKGQtPmNhbGxlZSk7CisgICAgbWFy
a1N0YWNrLmFwcGVuZChkLT5jYWxsZWUuc2xvdCgpKTsKIAogICAgIGlmIChkLT5hY3RpdmF0aW9u
KQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKGQtPmFjdGl2YXRpb24pOworICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKGQtPmFjdGl2YXRpb24uc2xvdCgpKTsKIH0KIAogdm9pZCBBcmd1bWVudHM6
OmNvcHlUb1JlZ2lzdGVycyhFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyKiBidWZmZXIsIHVpbnQz
Ml90IG1heFNpemUpCkBAIC0xOTcsNyArMTk3LDcgQEAgYm9vbCBBcmd1bWVudHM6OmdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmEK
IAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSAm
JiBMSUtFTFkoIWQtPm92ZXJyb2RlQ2FsbGVlKSkgewogICAgICAgICBpZiAoIWQtPmlzU3RyaWN0
TW9kZSkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShkLT5jYWxsZWUpOworICAgICAgICAg
ICAgc2xvdC5zZXRWYWx1ZShkLT5jYWxsZWUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICAgICAgY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5
KGV4ZWMpOwpAQCAtMjI4LDcgKzIyOCw3IEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wCiAgICAg
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlICYm
IExJS0VMWSghZC0+b3ZlcnJvZGVDYWxsZWUpKSB7CiAgICAgICAgIGlmICghZC0+aXNTdHJpY3RN
b2RlKSB7Ci0gICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoZC0+Y2FsbGVlLCBE
b250RW51bSk7CisgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoZC0+Y2FsbGVl
LmdldCgpLCBEb250RW51bSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgICAgICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoZXhlYyk7CkBAIC0yODAs
MTQgKzI4MCwxNCBAQCB2b2lkIEFyZ3VtZW50czo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbAogCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoICYmICFkLT5vdmVycm9kZUxlbmd0
aCkgewogICAgICAgICBkLT5vdmVycm9kZUxlbmd0aCA9IHRydWU7Ci0gICAgICAgIHB1dERpcmVj
dChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBEb250RW51bSk7CisgICAgICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIERvbnRFbnVtKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNhbGxlZSAmJiAhZC0+b3ZlcnJvZGVDYWxsZWUpIHsKICAgICAgICAgaWYgKCFkLT5p
c1N0cmljdE1vZGUpIHsKICAgICAgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHB1dERpcmVjdChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBEb250RW51bSk7CisgICAg
ICAgICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBEb250RW51bSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgY3Jl
YXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAppbmRleCBmZTkwMGEyNzg5YTY5NTdiZmEzZmUzZGVkMGZm
OGNmZDRmNjA1YTkzLi5hM2Q3ZmU0NTc5NGMzMmM5MmIxNzg0ZDExOThhMTA0M2Q4M2ZmOThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJndW1l
bnRzRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAg
QXJndW1lbnRzRGF0YSgpIHsgfQotICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb247Cisg
ICAgICAgIFdyaXRlQmFycmllcjxKU0FjdGl2YXRpb24+IGFjdGl2YXRpb247CiAKICAgICAgICAg
dW5zaWduZWQgbnVtUGFyYW1ldGVyczsKICAgICAgICAgcHRyZGlmZl90IGZpcnN0UGFyYW1ldGVy
SW5kZXg7CkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25BcnJh
eVB0cjxib29sPiBkZWxldGVkQXJndW1lbnRzOwogICAgICAgICBSZWdpc3RlciBleHRyYUFyZ3Vt
ZW50c0ZpeGVkQnVmZmVyWzRdOwogCi0gICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZTsKKyAgICAg
ICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKICAgICAgICAgYm9vbCBvdmVycm9k
ZUxlbmd0aCA6IDE7CiAgICAgICAgIGJvb2wgb3ZlcnJvZGVDYWxsZWUgOiAxOwogICAgICAgICBi
b29sIG92ZXJyb2RlQ2FsbGVyIDogMTsKQEAgLTg2LDkgKzg2LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgY29weVRvUmVnaXN0ZXJzKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIq
IGJ1ZmZlciwgdWludDMyX3QgbWF4U2l6ZSk7CiAgICAgICAgIHZvaWQgY29weVJlZ2lzdGVycygp
OwogICAgICAgICBib29sIGlzVG9ybk9mZigpIGNvbnN0IHsgcmV0dXJuIGQtPnJlZ2lzdGVyQXJy
YXk7IH0KLSAgICAgICAgdm9pZCBzZXRBY3RpdmF0aW9uKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlv
bikKKyAgICAgICAgdm9pZCBzZXRBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBkLT5hY3Rp
dmF0aW9uID0gYWN0aXZhdGlvbjsKKyAgICAgICAgICAgIGQtPmFjdGl2YXRpb24uc2V0KGdsb2Jh
bERhdGEsIHRoaXMsIGFjdGl2YXRpb24pOwogICAgICAgICAgICAgZC0+cmVnaXN0ZXJzID0gJmFj
dGl2YXRpb24tPnJlZ2lzdGVyQXQoMCk7CiAgICAgICAgIH0KIApAQCAtMTU4LDcgKzE1OCw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBkLT5maXJzdFBhcmFtZXRlckluZGV4ID0gZmlyc3RQ
YXJhbWV0ZXJJbmRleDsKICAgICAgICAgZC0+bnVtQXJndW1lbnRzID0gbnVtQXJndW1lbnRzOwog
Ci0gICAgICAgIGQtPmFjdGl2YXRpb24gPSAwOwogICAgICAgICBkLT5yZWdpc3RlcnMgPSBjYWxs
RnJhbWUtPnJlZ2lzdGVycygpOwogCiAgICAgICAgIFJlZ2lzdGVyKiBleHRyYUFyZ3VtZW50czsK
QEAgLTE3Niw3ICsxNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBkLT5leHRyYUFy
Z3VtZW50cyA9IGV4dHJhQXJndW1lbnRzOwogCi0gICAgICAgIGQtPmNhbGxlZSA9IGNhbGxlZTsK
KyAgICAgICAgZC0+Y2FsbGVlLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgdGhpcywgY2Fs
bGVlKTsKICAgICAgICAgZC0+b3ZlcnJvZGVMZW5ndGggPSBmYWxzZTsKICAgICAgICAgZC0+b3Zl
cnJvZGVDYWxsZWUgPSBmYWxzZTsKICAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZXIgPSBmYWxzZTsK
QEAgLTE5NSw3ICsxOTQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBkLT5udW1QYXJh
bWV0ZXJzID0gMDsKICAgICAgICAgZC0+bnVtQXJndW1lbnRzID0gbnVtQXJndW1lbnRzOwotICAg
ICAgICBkLT5hY3RpdmF0aW9uID0gMDsKIAogICAgICAgICBSZWdpc3RlciogZXh0cmFBcmd1bWVu
dHM7CiAgICAgICAgIGlmIChudW1Bcmd1bWVudHMgPiBzaXplb2YoZC0+ZXh0cmFBcmd1bWVudHNG
aXhlZEJ1ZmZlcikgLyBzaXplb2YoUmVnaXN0ZXIpKQpAQCAtMjA5LDcgKzIwNyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIGQtPmV4dHJhQXJndW1lbnRzID0gZXh0cmFBcmd1bWVudHM7
CiAKLSAgICAgICAgZC0+Y2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsK
KyAgICAgICAgZC0+Y2FsbGVlLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgdGhpcywgYXNG
dW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKSk7CiAgICAgICAgIGQtPm92ZXJyb2RlTGVuZ3Ro
ID0gZmFsc2U7CiAgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gZmFsc2U7CiAgICAgICAgIGQt
Pm92ZXJyb2RlQ2FsbGVyID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmluZGV4IDYzMmQ0NjZlMjI5ZjQyYmQxYjM5YjJm
YjA5NmQ0ZDc1MWNjYzFkOGYuLjVkMGFkYmRhNjBhY2Q3ODYyMDVkYjY5ZmNhNWU2YWE4YmMxZTA2
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCkBAIC00MiwxMCArNDIsMTAgQEAgQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAg
ICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgYXJyYXlQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5j
bGFzc05hbWUpKQogewogICAgIC8vIEVDTUEgMTUuNC4zLjEgQXJyYXkucHJvdG90eXBlCi0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgYXJyYXlQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGFycmF5UHJvdG90eXBlLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSk7CiAKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1
Y3RvcgotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51
bSB8IERvbnREZWxldGUpOwogCiAgICAgLy8gRVM1CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVj
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuaXNBcnJheSwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXkpLCBEb250RW51bSk7
CkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEFycmF5
V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpCiAgICAgfQogCiAgICAg
Ly8gb3RoZXJ3aXNlIHRoZSBhcnJheSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBhcmd1bWVudHMg
aW4gaXQKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwgYXJncyk7CisgICAgcmV0dXJuIG5ldyAoZXhlYykg
SlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
YXJyYXlTdHJ1Y3R1cmUoKSwgYXJncyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApp
bmRleCA3NjE1ZmZjYTQ1ZTZmOWRmYjJhNzExOGFiMzgwYWQ2ODhmYWIyMDg5Li4yNzNkNDUwN2Ni
ZmY2MDEyMDdiNDdlYzExNWJkMTIyNzkzNGI5YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC01NDUsOSArNTQ1LDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICBKU0FycmF5KiByZXNPYmogPSBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpLCBkZWxldGVDb3VudCwgQ3Jl
YXRlQ29tcGFjdCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSByZXNPYmo7Ci0KKyAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBrID0gMDsgayA8IGRlbGV0ZUNvdW50OyBrKyspCi0gICAgICAgIHJlc09iai0+dW5jaGVja2Vk
U2V0SW5kZXgoaywgZ2V0UHJvcGVydHkoZXhlYywgdGhpc09iaiwgayArIGJlZ2luKSk7CisgICAg
ICAgIHJlc09iai0+dW5jaGVja2VkU2V0SW5kZXgoZ2xvYmFsRGF0YSwgaywgZ2V0UHJvcGVydHko
ZXhlYywgdGhpc09iaiwgayArIGJlZ2luKSk7CiAKICAgICByZXNPYmotPnNldExlbmd0aChkZWxl
dGVDb3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oCmluZGV4IGRiMmQxZDdjYzFiZGY3YmU2MzVk
MTk2MDEzM2MwOTM0M2U3MzMwYjkuLjBmNmE2NDY1NGQ4ZDNiMmMwZTMxYWQyMWFkYTdmMjgyNDM4
MGYzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaApAQCAtMzQsOCArMzQsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyKTsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyKEpTT2JqZWN0KiBvYmplY3Qp
Ci0gICAgICAgICAgICA6IG1fb2JqZWN0KG9iamVjdCkKKyAgICAgICAgQmF0Y2hlZFRyYW5zaXRp
b25PcHRpbWl6ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogb2JqZWN0KQor
ICAgICAgICAgICAgOiBtX2dsb2JhbERhdGEoJmdsb2JhbERhdGEpCisgICAgICAgICAgICAsIG1f
b2JqZWN0KG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX29iamVjdC0+c3Ry
dWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5zZXRT
dHJ1Y3R1cmUoU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKG1fb2Jq
ZWN0LT5zdHJ1Y3R1cmUoKSkpOwpAQCAtNDMsMTAgKzQ0LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIH5CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcigpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG1fb2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCgpOworICAgICAgICAgICAg
bV9vYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KCptX2dsb2JhbERhdGEpOwogICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsK
ICAgICAgICAgSlNPYmplY3QqIG1fb2JqZWN0OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCmluZGV4IDAxNjdl
MDM3ZTczOTE5NTZlYWIyNzhhMzcxZTNjYWI2YzJlNTBhMDAuLmMzNmJlODJiMmE4OGI4NTJiZDYz
OTI2YTljNjU2NTEyYTdjM2ZiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcApAQCAtMzEsMTcgKzMxLDE3IEBAIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoQm9vbGVhbkNvbnN0cnVjdG9yKTsKIEJvb2xlYW5Db25zdHJ1
Y3Rvcjo6Qm9vbGVhbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEJv
b2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
KCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVy
KGV4ZWMsIGJvb2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewotICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUsIGJvb2xlYW5Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGJvb2xlYW5Qcm90b3R5cGUsIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNv
bnN0cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSk7CiB9CiAKIC8vIEVDTUEgMTUuNi4yCiBKU09iamVjdCogY29u
c3RydWN0Qm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAg
ICAgQm9vbGVhbk9iamVjdCogb2JqID0gbmV3IChleGVjKSBCb29sZWFuT2JqZWN0KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSgpKTsKLSAgICBvYmot
PnNldEludGVybmFsVmFsdWUoanNCb29sZWFuKGFyZ3MuYXQoMCkudG9Cb29sZWFuKGV4ZWMpKSk7
CisgICAgb2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNCb29sZWFu
KGFyZ3MuYXQoMCkudG9Cb29sZWFuKGV4ZWMpKSk7CiAgICAgcmV0dXJuIG9iajsKIH0KIApAQCAt
NzIsNyArNzIsNyBAQCBDYWxsVHlwZSBCb29sZWFuQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKENh
bGxEYXRhJiBjYWxsRGF0YSkKIEpTT2JqZWN0KiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0
ZUJvb2xlYW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGltbWVkaWF0ZUJvb2xlYW5WYWx1ZSkK
IHsKICAgICBCb29sZWFuT2JqZWN0KiBvYmogPSBuZXcgKGV4ZWMpIEJvb2xlYW5PYmplY3QoZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5ib29sZWFuT2JqZWN0U3RydWN0dXJlKCkpOwotICAg
IG9iai0+c2V0SW50ZXJuYWxWYWx1ZShpbW1lZGlhdGVCb29sZWFuVmFsdWUpOworICAgIG9iai0+
c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGltbWVkaWF0ZUJvb2xlYW5WYWx1
ZSk7CiAgICAgcmV0dXJuIG9iajsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRleCA3ZmZkMDk1ODhhMzMxOTQ2Nzk5MzQ2
NWE3ZDY4ZDBhNjRiZmQ1NzgyLi43MzE0NTZlZTFiODI0MDU2ZWVjODM4ZWJiNmY1ZGQxNDFkZDQ2
YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKIEJvb2xlYW5Qcm90
b3R5cGU6OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSkKICAgICA6IEJvb2xlYW5PYmplY3Qo
c3RydWN0dXJlKQogewotICAgIHNldEludGVybmFsVmFsdWUoanNCb29sZWFuKGZhbHNlKSk7Cisg
ICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzQm9vbGVhbihmYWxzZSkp
OwogCiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGJvb2xl
YW5Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4
ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZiksIERvbnRFbnVt
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNlcnZhdGl2
ZVNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmgK
aW5kZXggMjc2YmU4OWEyNWM0ZmFkODdlMzFhYzFiYzBmNTYwNzIxYzY1YjljZi4uZmVhZTE2OGU2
OGI5YzhjOTU4ZjcyZGFjMzM0Y2I5NjEzZWM0Nzc3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmgKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5l
IENvbnNlcnZhdGl2ZVNldDo6fkNvbnNlcnZhdGl2ZVNldCgpCiBpbmxpbmUgdm9pZCBDb25zZXJ2
YXRpdmVTZXQ6Om1hcmsoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX3NldFtp
XSk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fc2V0W2ldKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcAppbmRleCBkY2JlMTJkYTIzNjE3Njc0YTc3MjhjMTc3OTI4M2FjYTc0M2RmYTY0
Li5mMWYzOTU2YTgzZDU2Y2EzZjlmMGVkZTM5MzMzMjU3ZjM4ZDcwZTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTYxLDEz
ICs2MSwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlVVRDKEV4
ZWNTdGF0ZSopOwogRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwg
RGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4
ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhl
YywgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7Ci0gICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBk
YXRlUHJvdG90eXBlLCBEb250RW51bXxEb250RGVsZXRlfFJlYWRPbmx5KTsKKyAgICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgZGF0ZVByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOwogCiAgICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wYXJz
ZSwgZGF0ZVBhcnNlKSwgRG9udEVudW0pOwogICAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCA3LCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuVVRDLCBkYXRlVVRDKSwgRG9udEVudW0pOwogICAgICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBl
cihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubm93LCBkYXRlTm93KSwgRG9udEVudW0pOwogCi0gICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoLCBqc051bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxl
dGUpOwogfQogCiAvLyBFQ01BIDE1LjkuMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVJbnN0YW5jZS5jcHAKaW5kZXggODU2MmUyZDQ2Mzc2NmI2OWVkNGRhODI2NDEwNjZm
NzJjNDk3YzcyNy4uODAzOGFmNTM4N2I5N2I5ZTgyODYxOTI1OWMyODg4NGVjZTA3ZGMzMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCkBAIC0z
NCwyMiArMzQsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBEYXRlSW5z
dGFuY2U6OmluZm8gPSB7IkRhdGUiLCAwLCAwLCAwfTsKIAotRGF0ZUluc3RhbmNlOjpEYXRlSW5z
dGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUp
CitEYXRlSW5zdGFuY2U6OkRhdGVJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVj
dHVyZSkKIHsKLSAgICBzZXRJbnRlcm5hbFZhbHVlKGpzTmFOKCkpOworICAgIHNldEludGVybmFs
VmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc05hTigpKTsKIH0KIAotRGF0ZUluc3RhbmNlOjpE
YXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIGRvdWJsZSB0aW1lKQorRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRl
KiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgZG91YmxlIHRp
bWUpCiAgICAgOiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAgIHNldEludGVybmFs
VmFsdWUoanNOdW1iZXIodGltZUNsaXAodGltZSkpKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVlKGV4
ZWMtPmdsb2JhbERhdGEoKSwganNOdW1iZXIodGltZUNsaXAodGltZSkpKTsKIH0KIAogRGF0ZUlu
c3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgdGltZSkKICAgICA6
IEpTV3JhcHBlck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmRhdGVTdHJ1Y3R1
cmUoKSkKIHsKLSAgICBzZXRJbnRlcm5hbFZhbHVlKGpzTnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7
CisgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVtYmVyKHRpbWVD
bGlwKHRpbWUpKSk7CiB9CiAKIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBEYXRlSW5zdGFuY2U6
OmNhbGN1bGF0ZUdyZWdvcmlhbkRhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggMDg1
Y2IzM2MxNTQ2ODVkNTFlZDI2NjM1N2JhY2UzMWFiNTJlMjViZi4uOTRiNjlhODVkNGIyY2UyNGI5
YmE5ZjgxNzEzMzNlZTk1OGExOGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTg0NSw3ICs4NDUsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgIGRvdWJsZSBtaWxsaSA9IHRpbWVDbGlwKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4
ZWMpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKG1pbGxpKTsKLSAgICB0aGlzRGF0
ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQpOworICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRl
cm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAgLTg2MCw3ICs4NjAsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVt
QXJnc1RvVXNlLAogICAgIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpIHx8IGlzbmFu
KG1pbGxpKSkgewogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTmFOKCk7Ci0gICAgICAgIHRo
aXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7CisgICAgICAgIHRoaXNEYXRlT2Jq
LT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KICAgICAgCkBAIC04NzcsMTIg
Kzg3NywxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3Mo
RXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAgIGdyZWdvcmlhbkRhdGVUaW1l
LmNvcHlGcm9tKCpvdGhlcik7CiAgICAgaWYgKCFmaWxsU3RydWN0dXJlc1VzaW5nVGltZUFyZ3Mo
ZXhlYywgbnVtQXJnc1RvVXNlLCAmbXMsICZncmVnb3JpYW5EYXRlVGltZSkpIHsKICAgICAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc05hTigpOwotICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJu
YWxWYWx1ZShyZXN1bHQpOworICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShl
eGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKICAgICB9IAogICAgIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lLCBtcywgaW5wdXRJ
c1VUQykpOwotICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7CisgICAg
dGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtODk1LDcgKzg5
NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhFeGVj
U3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0
ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dENvdW50KCkpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc05hTigpOwotICAgICAgICB0
aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQpOworICAgICAgICB0aGlzRGF0ZU9i
ai0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9ICAgICAgCiAgICAgCkBAIC05
MTcsMTIgKzkxNywxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tRGF0
ZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAgIAogICAgIGlmICgh
ZmlsbFN0cnVjdHVyZXNVc2luZ0RhdGVBcmdzKGV4ZWMsIG51bUFyZ3NUb1VzZSwgJm1zLCAmZ3Jl
Z29yaWFuRGF0ZVRpbWUpKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOYU4oKTsKLSAg
ICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKKyAgICAgICAgdGhp
c0RhdGVPYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfSAKICAgICAgICAg
ICAgCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihncmVnb3JpYW5EYXRlVGltZVRvTVMo
ZXhlYywgZ3JlZ29yaWFuRGF0ZVRpbWUsIG1zLCBpbnB1dElzVVRDKSk7Ci0gICAgdGhpc0RhdGVP
YmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKKyAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJu
YWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQogCkBAIC0xMDE5LDcgKzEwMTksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsg
ICAgIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7IAogICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTmFOKCk7Ci0gICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVl
KHJlc3VsdCk7CisgICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmds
b2JhbERhdGEoKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogICAgIH0KICAgICAKQEAgLTEwNDEsMTMgKzEwNDEsMTMgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ZG91YmxlIHllYXIgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVj
KTsKICAgICBpZiAoIWlzZmluaXRlKHllYXIpKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOYU4oKTsKLSAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsK
KyAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCByZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAg
fQogICAgICAgICAgICAgCiAgICAgZ3JlZ29yaWFuRGF0ZVRpbWUueWVhciA9IHRvSW50MzIoKHll
YXIgPiA5OSB8fCB5ZWFyIDwgMCkgPyB5ZWFyIC0gMTkwMCA6IHllYXIpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRh
dGVUaW1lLCBtcywgZmFsc2UpKTsKLSAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShy
ZXN1bHQpOworICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggNDMyNmE0ZGYyMzM4YmNjZTk0YTA1MTZkNGI1NGM4M2YwZjEzNGJkMy4uMmU1M2I5
NTQwMGU3MmNhZWExMzgwZWNlODFiNWQ1NWZhZDgyOTVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTMzLDggKzMzLDgg
QEAgRXJyb3JDb25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywg
ZXJyb3JQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewogICAgIC8vIEVDTUEg
MTUuMTEuMy4xIEVycm9yLnByb3RvdHlwZQotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGVycm9yUHJvdG90eXBlLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGVycm9y
UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOwogfQogCiAvLyBFQ01BIDE1LjkuMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCAwZjMxNTNjNTA2ZDk4YTllMDhiMGJhMGFiZTM0
ZGIxNjk2OThhYjZkLi5hNjIwOGQ1MjY4OWEzZmU5NzYxMGEzY2JjZTc2ZjBhMDY1YzFlMGExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApA
QCAtMjksMTQgKzI5LDE0IEBAIEVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1CiAgICAgOiBKU09iamVj
dChzdHJ1Y3R1cmUpCiAgICAgLCBtX2FwcGVuZFNvdXJjZVRvTWVzc2FnZShmYWxzZSkKIHsKLSAg
ICBwdXREaXJlY3QoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmco
Z2xvYmFsRGF0YSwgIiIpKTsKKyAgICBwdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsICIiKSk7CiB9CiAK
IEVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVz
c2FnZSkKICAgICA6IEpTT2JqZWN0KHN0cnVjdHVyZSkKICAgICAsIG1fYXBwZW5kU291cmNlVG9N
ZXNzYWdlKGZhbHNlKQogewotICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT5tZXNzYWdlLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBtZXNzYWdlKSk7CisgICAgcHV0RGlyZWN0
KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmlu
ZyhnbG9iYWxEYXRhLCBtZXNzYWdlKSk7CiB9CiAKIEVycm9ySW5zdGFuY2UqIEVycm9ySW5zdGFu
Y2U6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IGQ4ZmM4Mjlk
Nzk4N2E3ZDgwYWIxN2YyOTk5NGZkM2I4MGRmNTBmYWEuLmI0ZTBhN2NlNmNkMDVlMzg5MDAwN2Q1
NjVmOGM5NGFkNWZkNDMzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvclByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgRXJyb3JQcm90b3R5cGU6OkVy
cm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm8KIHsKICAgICAvLyBUaGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciBpbiBF
cnJvckNvbnN0cnVjdG9yJ3MgY29uc3RydWN0b3IKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhl
YywgIkVycm9yIiksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgIkVycm9yIiksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyksIERvbnRF
bnVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCA0NWI0ODAyM2Y4MGViZDZkYTcyMTQ1MmQ4ODhhYjI2
N2RmN2Q0ZmM0Li45MzNiMTFmOTljNGI2YjNkNGVlZTQyODI5NWVjZjZmZTJmZmExNWNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRnVu
Y3Rpb25Db25zdHJ1Y3Rvcik7CiBGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5j
dGlvblByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEo
KSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZnVuY3Rpb25Qcm90
b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGZ1bmN0aW9uUHJvdG90
eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBmdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpOwogCiAgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKLSAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
LCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERv
bnRFbnVtKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0V2l0aEZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGNk
NzczOWQxOWNmN2I4ODc2ZmNlNzEyYzAxNjIwODdmMDlkYmY1M2MuLmU2NTE1MzgxMTEwMzE4ZDNh
ZDc4NjU5OWFkNTY5YTZjYWM0NGY0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKEV4ZWNT
dGF0ZSopOwogRnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVs
bElkZW50aWZpZXIpCiB7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6
OmFkZEZ1bmN0aW9uUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIE5hdGl2
ZUZ1bmN0aW9uV3JhcHBlcioqIGNhbGxGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKiog
YXBwbHlGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dldHRlclNldHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuY3BwCmluZGV4IDdlNTQwNTNmOTZjY2U3M2I1NTYwYTgyZTVlODEwZTFlNWQyODBmNmMu
LjVhZGQ3ZmQ4ZjM4Y2I2ODZiZDdiNzAwOWMzMmM1ZjcyYTYwOTAzMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtMzMsOSArMzMsOSBA
QCB2b2lkIEdldHRlclNldHRlcjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQog
ICAgIEpTQ2VsbDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAKICAgICBpZiAobV9nZXR0ZXIp
Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9nZXR0ZXIpOworICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKG1fZ2V0dGVyLnNsb3QoKSk7CiAgICAgaWYgKG1fc2V0dGVyKQotICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKG1fc2V0dGVyKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX3NldHRl
ci5zbG90KCkpOwogfQogCiBib29sIEdldHRlclNldHRlcjo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCBl
N2IxOTM4Y2U5NmJjMGI1MmYxNjRlOWQzYmEzNzI3NTlhODYzYWQ4Li5mZmFiOTRkZmIyNWZiZjg0
MDBhYjBlOWY4NmIxOGViZjI0M2Y4YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtMzgsMTcgKzM4LDE1IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHB1YmxpYzoKICAgICAgICAgR2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKS5nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUu
Z2V0KCkpCi0gICAgICAgICAgICAsIG1fZ2V0dGVyKDApCi0gICAgICAgICAgICAsIG1fc2V0dGVy
KDApCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hp
bGRyZW4oTWFya1N0YWNrJik7CiAKLSAgICAgICAgSlNPYmplY3QqIGdldHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZ2V0dGVyOyB9Ci0gICAgICAgIHZvaWQgc2V0R2V0dGVyKEpTT2JqZWN0KiBnZXR0
ZXIpIHsgbV9nZXR0ZXIgPSBnZXR0ZXI7IH0KLSAgICAgICAgSlNPYmplY3QqIHNldHRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fc2V0dGVyOyB9Ci0gICAgICAgIHZvaWQgc2V0U2V0dGVyKEpTT2JqZWN0
KiBzZXR0ZXIpIHsgbV9zZXR0ZXIgPSBzZXR0ZXI7IH0KKyAgICAgICAgSlNPYmplY3QqIGdldHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0R2V0
dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGdldHRlcikgeyBtX2dldHRl
ci5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2V0dGVyKTsgfQorICAgICAgICBKU09iamVjdCogc2V0
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0ZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRT
ZXR0ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogc2V0dGVyKSB7IG1fc2V0
dGVyLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzZXR0ZXIpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUocHJvdG90eXBlLCBU
eXBlSW5mbyhHZXR0ZXJTZXR0ZXJUeXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pLCBBbm9ueW1v
dXNTbG90Q291bnQpOwpAQCAtNTYsOCArNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKIAotICAg
ICAgICBKU09iamVjdCogbV9nZXR0ZXI7Ci0gICAgICAgIEpTT2JqZWN0KiBtX3NldHRlcjsgIAor
ICAgICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fZ2V0dGVyOworICAgICAgICBXcml0ZUJh
cnJpZXI8SlNPYmplY3Q+IG1fc2V0dGVyOyAgCiAgICAgfTsKIAogICAgIEdldHRlclNldHRlciog
YXNHZXR0ZXJTZXR0ZXIoSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcAppbmRleCAzYWQ0NjQ0NWQ1NzZlZTUzZjVj
NGIyNzhkNzdiOTJlY2NkZTdhZmE3Li45NTU5ZjVkMWZlNTc5Y2EyMzQzNzJiNmVhYTlhZTlmODJl
NjBkYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxF
dmFsRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2Jh
bEV2YWxGdW5jdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChHbG9iYWxFdmFsRnVuY3Rpb24pOwogCiBHbG9iYWxFdmFsRnVuY3Rpb246Okdsb2JhbEV2
YWxGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBpbnQgbGVuLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSlNHbG9iYWxPYmplY3Qq
IGNhY2hlZEdsb2JhbE9iamVjdCkKICAgICA6IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBsZW4sIG5hbWUsIGZ1bmN0aW9uKQotICAgICwgbV9jYWNoZWRH
bG9iYWxPYmplY3QoY2FjaGVkR2xvYmFsT2JqZWN0KQorICAgICwgbV9jYWNoZWRHbG9iYWxPYmpl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBjYWNoZWRHbG9iYWxPYmplY3QpCiB7CiAgICAg
QVNTRVJUX0FSRyhjYWNoZWRHbG9iYWxPYmplY3QsIGNhY2hlZEdsb2JhbE9iamVjdCk7CiB9CkBA
IC00Miw3ICs0Miw3IEBAIEdsb2JhbEV2YWxGdW5jdGlvbjo6R2xvYmFsRXZhbEZ1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB2b2lkIEdsb2JhbEV2YWxG
dW5jdGlvbjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIFByb3Rv
dHlwZUZ1bmN0aW9uOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYXBw
ZW5kKG1fY2FjaGVkR2xvYmFsT2JqZWN0KTsKKyAgICBtYXJrU3RhY2suYXBwZW5kKG1fY2FjaGVk
R2xvYmFsT2JqZWN0LnNsb3QoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaAppbmRleCBi
ODg5Y2E5OGE5YzU1OTFmNGM5OTBhMjllNDI5NjMwOTUyNjEzNWExLi4xM2YwOTQ2ZmEzMTBhNjM0
NjhiZTA4YTIyODBhNjMyNmZiYzZiMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBHbG9iYWxFdmFsRnVuY3Rpb24gOiBwdWJsaWMgUHJvdG90eXBl
RnVuY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgR2xvYmFsRXZhbEZ1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50
IGxlbiwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9uLCBKU0dsb2JhbE9iamVjdCog
ZXhwZWN0ZWRUaGlzT2JqZWN0KTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGNhY2hlZEdsb2Jh
bE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkR2xvYmFsT2JqZWN0OyB9CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBjYWNoZWRHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEdsb2JhbE9iamVjdC5nZXQoKTsgfQogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAK
QEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKIAotICAgICAgICBKU0dsb2Jh
bE9iamVjdCogbV9jYWNoZWRHbG9iYWxPYmplY3Q7CisgICAgICAgIFdyaXRlQmFycmllcjxKU0ds
b2JhbE9iamVjdD4gbV9jYWNoZWRHbG9iYWxPYmplY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCmluZGV4IDllYzM3OTli
MDRjYjBhNWRhYmM0ZjU5NGEwN2QzMDM4MTRmOWU5NTYuLjJmYWQxNWQyOTYzMGU2ZDgzYmE2MDhj
YWE0YWFlODc1M2JkYzRmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3Bw
CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBIZWFwOjptYXJrUHJvdGVjdGVkT2JqZWN0cyhNYXJr
U3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBQcm90ZWN0Q291bnRTZXQ6Oml0ZXJhdG9yIGVuZCA9
IG1fcHJvdGVjdGVkVmFsdWVzLmVuZCgpOwogICAgIGZvciAoUHJvdGVjdENvdW50U2V0OjppdGVy
YXRvciBpdCA9IG1fcHJvdGVjdGVkVmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZChpdC0+Zmlyc3QpOworICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKCZpdC0+Zmlyc3QpOwogfQogCiB2b2lkIEhlYXA6OnB1c2hUZW1wU29ydFZlY3RvcihWZWN0
b3I8VmFsdWVTdHJpbmdQYWlyPiogdGVtcFZlY3RvcikKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lk
IEhlYXA6Om1hcmtUZW1wU29ydFZlY3RvcnMoTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgICAg
IFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+OjppdGVyYXRvciB2ZWN0b3JFbmQgPSB0ZW1wU29ydGlu
Z1ZlY3Rvci0+ZW5kKCk7CiAgICAgICAgIGZvciAoVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj46Oml0
ZXJhdG9yIHZlY3Rvckl0ID0gdGVtcFNvcnRpbmdWZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9
IHZlY3RvckVuZDsgKyt2ZWN0b3JJdCkgewogICAgICAgICAgICAgaWYgKHZlY3Rvckl0LT5maXJz
dCkKLSAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHZlY3Rvckl0LT5maXJzdCk7Cisg
ICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdmVjdG9ySXQtPmZpcnN0KTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygp
CiAgICAgaWYgKG1fbWFya0xpc3RTZXQgJiYgbV9tYXJrTGlzdFNldC0+c2l6ZSgpKQogICAgICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6bWFya0xpc3RzKG1hcmtTdGFjaywgKm1fbWFya0xpc3RT
ZXQpOwogICAgIGlmIChtX2dsb2JhbERhdGEtPmV4Y2VwdGlvbikKLSAgICAgICAgbWFya1N0YWNr
LmFwcGVuZChtX2dsb2JhbERhdGEtPmV4Y2VwdGlvbik7CisgICAgICAgIG1hcmtTdGFjay5hcHBl
bmQoJm1fZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKTsKICAgICBpZiAobV9nbG9iYWxEYXRhLT5maXJz
dFN0cmluZ2lmaWVyVG9NYXJrKQogICAgICAgICBKU09OT2JqZWN0OjptYXJrU3RyaW5naWZpZXJz
KG1hcmtTdGFjaywgbV9nbG9iYWxEYXRhLT5maXJzdFN0cmluZ2lmaWVyVG9NYXJrKTsKICAgICBt
YXJrU3RhY2suZHJhaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMGE4ZDlkZWZjZDRjZmEzZTJhMWJmNTNmNDcxYTVj
OTgyYzlhMDZjNy4uZjE5YWUwZDhhYjBiOWEzNTM2YmYwYmVlOGM3MTk1Y2Q1YThhZTBiOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKIEludGVybmFsRnVuY3Rpb246
OkludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YS0+cHJv
cGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbmFtZS5pc051bGwoKSA/ICIi
IDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cisg
ICAgcHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc1N0cmluZyhnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmco
KSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAogY29uc3QgVVN0cmlu
ZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAppbmRleCAxMGRlZDRj
ZDQ0MThiZDliY2Q4ZjNjMTBjNTdkOWJhZTUwZjZmODFmLi5hMTEzZTkxOTg2NGQ1ODUyMTJlMzc1
MWVmODA4NThiNzYxOWUyOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgSlNBUElWYWx1ZVdyYXBwZXIgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAg
ZnJpZW5kIEpTVmFsdWUganNBUElWYWx1ZVdyYXBwZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAg
ICAgcHVibGljOgotICAgICAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQorICAgICAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQo
KTsgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHByaXZhdGU6CiAgICAgICAgIEpTQVBJVmFsdWVXcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKS5hcGlX
cmFwcGVyU3RydWN0dXJlLmdldCgpKQotICAgICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAg
ICAgICB7CisgICAgICAgICAgICBtX3ZhbHVlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IHZhbHVlKTsKICAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkpOwogICAgICAgICB9
CiAKLSAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93
bj4gbV92YWx1ZTsKICAgICB9OwogCiAgICAgaW5saW5lIEpTVmFsdWUganNBUElWYWx1ZVdyYXBw
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNDI4NDAzZDI1OGY1NWE5Zjg4NGM2
YzYyZWU3ODFmMjAxMTE5ZWRmOC4uY2EzZWZlOWRhMTYwOTg4MzY2ZTVjMTdjYjliMGU4ZGM5Yjhk
YmZkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
Y3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBKU0FjdGl2YXRpb246OmdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnQKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit2b2lkIEpTQWN0aXZhdGlvbjo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVl
KSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKIApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgSlNBY3Rp
dmF0aW9uOjpwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlCiAgICAgLy8gcHJvcGVydGllcyBhcmUgbm9uLXN0YW5kYXJkIGV4dGVuc2lv
bnMgdGhhdCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZG8gbm90CiAgICAgLy8gZXhwb3NlIGluIHRo
ZSBhY3RpdmF0aW9uIG9iamVjdC4KICAgICBBU1NFUlQoIWhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSk7Ci0gICAgcHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHRydWUsIHNsb3Qp
OworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUs
IDAsIHRydWUsIHNsb3QpOwogfQogCiAvLyBGSVhNRTogTWFrZSB0aGlzIGZ1bmN0aW9uIGhvbm9y
IFJlYWRPbmx5IChjb25zdCkgYW5kIERvbnRFbnVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCmluZGV4IDU1NjYwM2JkY2RjN2MxMDFkNjU3YTNjZDY5NjgxOWEwNWQx
ODY3MzMuLmNlMjVmN2IzZTMyZjI5YTNmZGY4ZWE2ZmFjMzRlZTViZDAzZWMzZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xODgsOSArMTg4LDkgQEAg
SlNBcnJheTo6SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
dW5zaWduZWQgaW5pdGlhbExlbmd0aCwKICNlbmRpZgogICAgICAgICBtX3N0b3JhZ2UtPm1fbGVu
Z3RoID0gaW5pdGlhbExlbmd0aDsKICAgICAgICAgbV9zdG9yYWdlLT5tX251bVZhbHVlc0luVmVj
dG9yID0gMDsKLSAgICAgICAgSlNWYWx1ZSogdmVjdG9yID0gbV9zdG9yYWdlLT5tX3ZlY3RvcjsK
KyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVj
dG9yOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluaXRpYWxDYXBhY2l0eTsgKytp
KQotICAgICAgICAgICAgdmVjdG9yW2ldID0gSlNWYWx1ZSgpOworICAgICAgICAgICAgdmVjdG9y
W2ldLmNsZWFyKCk7CiAgICAgfQogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtMTk4LDcg
KzE5OCw3IEBAIEpTQXJyYXk6OkpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgsCiAgICAgSGVhcDo6aGVhcCh0aGlzKS0+
cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHN0b3JhZ2VTaXplKGluaXRpYWxDYXBhY2l0eSkpOwogfQog
Ci1KU0FycmF5OjpKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBjb25zdCBBcmdMaXN0JiBsaXN0KQorSlNBcnJheTo6SlNBcnJheShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBB
cmdMaXN0JiBsaXN0KQogICAgIDogSlNPYmplY3Qoc3RydWN0dXJlKQogewogICAgIHVuc2lnbmVk
IGluaXRpYWxDYXBhY2l0eSA9IGxpc3Quc2l6ZSgpOwpAQCAtMjI1LDEyICsyMjUsMTIgQEAgSlNB
cnJheTo6SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29u
c3QgQXJnTGlzdCYgbGlzdCkKICNlbmRpZgogCiAgICAgc2l6ZV90IGkgPSAwOwotICAgIEpTVmFs
dWUqIHZlY3RvciA9IG1fc3RvcmFnZS0+bV92ZWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+KiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9yOwogICAgIEFyZ0xpc3Q6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGxpc3QuZW5kKCk7CiAgICAgZm9yIChBcmdMaXN0Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGxpc3QuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0LCArK2kpCi0gICAgICAgIHZlY3Rv
cltpXSA9ICppdDsKKyAgICAgICAgdmVjdG9yW2ldLnNldChnbG9iYWxEYXRhLCB0aGlzLCAqaXQp
OwogICAgIGZvciAoOyBpIDwgaW5pdGlhbFN0b3JhZ2U7IGkrKykKLSAgICAgICAgdmVjdG9yW2ld
ID0gSlNWYWx1ZSgpOworICAgICAgICB2ZWN0b3JbaV0uY2xlYXIoKTsKIAogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIApAQCAtMjU3LDE2ICsyNTcsMTYgQEAgYm9vbCBKU0FycmF5OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBQcm9wZXJ0eVNsb3QmIHNs
b3QKICAgICB9CiAKICAgICBpZiAoaSA8IG1fdmVjdG9yTGVuZ3RoKSB7Ci0gICAgICAgIEpTVmFs
dWUmIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4mIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOwogICAgICAgICBp
ZiAodmFsdWVTbG90KSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlU2xvdCgmdmFsdWVTbG90
KTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHZhbHVlU2xvdC5zbG90KCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKFNwYXJzZUFy
cmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXApIHsKICAgICAgICAg
aWYgKGkgPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkgewogICAgICAgICAgICAgU3BhcnNlQXJy
YXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmZpbmQoaSk7CiAgICAgICAgICAgICBpZiAo
aXQgIT0gbWFwLT5lbmQoKSkgewotICAgICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KCZp
dC0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICBzbG90LnNldFZhbHVlU2xvdChpdC0+c2Vjb25k
LnNsb3QoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTMwNSwxNiArMzA1LDE2IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVyCiAg
ICAgICAgIGlmIChpID49IHN0b3JhZ2UtPm1fbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBpZiAoaSA8IG1fdmVjdG9yTGVuZ3RoKSB7Ci0gICAgICAgICAgICBKU1Zh
bHVlJiB2YWx1ZSA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgICAgICAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+JiB2YWx1ZSA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOwogICAgICAgICAgICAg
aWYgKHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHZh
bHVlLCAwKTsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IodmFsdWUu
Z2V0KCksIDApOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1f
c3BhcnNlVmFsdWVNYXApIHsKICAgICAgICAgICAgIGlmIChpID49IE1JTl9TUEFSU0VfQVJSQVlf
SU5ERVgpIHsKICAgICAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciBp
dCA9IG1hcC0+ZmluZChpKTsKICAgICAgICAgICAgICAgICBpZiAoaXQgIT0gbWFwLT5lbmQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoaXQtPnNlY29u
ZCwgMCk7CisgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihpdC0+
c2Vjb25kLmdldCgpLCAwKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzU5LDEzICszNTksMTMgQEAgdm9pZCBK
U0FycmF5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQog
ICAgIH0KIAogICAgIGlmIChpIDwgbV92ZWN0b3JMZW5ndGgpIHsKLSAgICAgICAgSlNWYWx1ZSYg
dmFsdWVTbG90ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CisgICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiYgdmFsdWVTbG90ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAgIGlmICh2
YWx1ZVNsb3QpIHsKLSAgICAgICAgICAgIHZhbHVlU2xvdCA9IHZhbHVlOworICAgICAgICAgICAg
dmFsdWVTbG90LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKICAgICAgICAg
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICB2YWx1ZVNsb3QgPSB2YWx1ZTsKKyAgICAgICAgdmFsdWVTbG90LnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVl
c0luVmVjdG9yOwogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTM5NSwxMSArMzk1LDExIEBAIE5FVkVSX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1dFNsb3dD
YXNlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1CiAgICAgICAgICAg
ICAgICAgc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCA9IG1hcDsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgcGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbWFwLT5hZGQoaSwgdmFsdWUpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25k
KSB7IC8vIHByZS1leGlzdGluZyBlbnRyeQotICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kID0gdmFsdWU7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gdGVtcDsK
KyAgICAgICAgICAgIHBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJl
c3VsdCA9IG1hcC0+YWRkKGksIHRlbXApOworICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNv
bmQuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOworICAgICAgICAgICAgaWYg
KCFyZXN1bHQuc2Vjb25kKSAvLyBwcmUtZXhpc3RpbmcgZW50cnkKICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHNpemVfdCBjYXBhY2l0eSA9IG1h
cC0+Y2FwYWNpdHkoKTsKICAgICAgICAgICAgIGlmIChjYXBhY2l0eSAhPSBzdG9yYWdlLT5yZXBv
cnRlZE1hcENhcGFjaXR5KSB7CkBAIC00MTUsNyArNDE1LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SlNBcnJheTo6cHV0U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IHZhbHUKICAgICBpZiAoIW1hcCB8fCBtYXAtPmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoaW5j
cmVhc2VWZWN0b3JMZW5ndGgoaSArIDEpKSB7CiAgICAgICAgICAgICBzdG9yYWdlID0gbV9zdG9y
YWdlOwotICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0gPSB2YWx1ZTsKKyAgICAgICAg
ICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHZh
bHVlKTsKICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAg
ICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgfSBlbHNlCkBAIC00NTcsMTggKzQ1
NywxOSBAQCBORVZFUl9JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXRTbG93Q2FzZShFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdQogICAgIHN0b3JhZ2UgPSBtX3N0b3JhZ2U7
CiAgICAgCiAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gbV92ZWN0b3JMZW5ndGg7Ci0gICAg
SlNWYWx1ZSogdmVjdG9yID0gc3RvcmFnZS0+bV92ZWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiB2ZWN0b3IgPSBzdG9yYWdlLT5tX3ZlY3RvcjsKIAogICAgIGlmIChuZXdOdW1WYWx1
ZXNJblZlY3RvciA9PSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yICsgMSkgewogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSB2ZWN0b3JMZW5ndGg7IGogPCBuZXdWZWN0b3JMZW5ndGg7ICsr
aikKLSAgICAgICAgICAgIHZlY3RvcltqXSA9IEpTVmFsdWUoKTsKKyAgICAgICAgICAgIHZlY3Rv
cltqXS5jbGVhcigpOwogICAgICAgICBpZiAoaSA+IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCiAg
ICAgICAgICAgICBtYXAtPnJlbW92ZShpKTsKICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKHVu
c2lnbmVkIGogPSB2ZWN0b3JMZW5ndGg7IGogPCBtYXgodmVjdG9yTGVuZ3RoLCBNSU5fU1BBUlNF
X0FSUkFZX0lOREVYKTsgKytqKQotICAgICAgICAgICAgdmVjdG9yW2pdID0gSlNWYWx1ZSgpOwor
ICAgICAgICAgICAgdmVjdG9yW2pdLmNsZWFyKCk7CisgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0g
bWF4KHZlY3Rvckxlbmd0aCwgTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCk7IGogPCBuZXdWZWN0b3JM
ZW5ndGg7ICsraikKLSAgICAgICAgICAgIHZlY3RvcltqXSA9IG1hcC0+dGFrZShqKTsKKyAgICAg
ICAgICAgIHZlY3RvcltqXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgbWFwLT50YWtlKGopLmdldCgp
KTsKICAgICB9CiAKICAgICBBU1NFUlQoaSA8IG5ld1ZlY3Rvckxlbmd0aCk7CkBAIC00NzYsNyAr
NDc3LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSlNBcnJheTo6cHV0U2xvd0Nhc2UoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHUKICAgICBtX3ZlY3Rvckxlbmd0aCA9IG5l
d1ZlY3Rvckxlbmd0aDsKICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yID0gbmV3TnVt
VmFsdWVzSW5WZWN0b3I7CiAKLSAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IHZhbHVlOworICAg
IHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHZhbHVl
KTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtNTAzLDEyICs1MDQsMTIgQEAgYm9v
bCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGkpCiAg
ICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwogICAgIAogICAgIGlmIChpIDwg
bV92ZWN0b3JMZW5ndGgpIHsKLSAgICAgICAgSlNWYWx1ZSYgdmFsdWVTbG90ID0gc3RvcmFnZS0+
bV92ZWN0b3JbaV07CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdmFsdWVTbG90ID0g
c3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAgIGlmICghdmFsdWVTbG90KSB7CiAgICAgICAg
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KLSAgICAgICAgdmFsdWVTbG90ID0gSlNWYWx1ZSgpOworICAgICAgICB2YWx1ZVNsb3Qu
Y2xlYXIoKTsKICAgICAgICAgLS1zdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjA1LDkgKzYw
Niw5IEBAIGJvb2wgSlNBcnJheTo6aW5jcmVhc2VWZWN0b3JMZW5ndGgodW5zaWduZWQgbmV3TGVu
Z3RoKQogICAgIHN0b3JhZ2UgPSBtX3N0b3JhZ2UgPSByZWludGVycHJldF9jYXN0X3B0cjxBcnJh
eVN0b3JhZ2UqPihzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZVN0b3JhZ2UpICsgbV9pbmRleEJpYXMg
KiBzaXplb2YoSlNWYWx1ZSkpOwogICAgIG1fc3RvcmFnZS0+bV9hbGxvY0Jhc2UgPSBiYXNlU3Rv
cmFnZTsKIAotICAgIEpTVmFsdWUqIHZlY3RvciA9IHN0b3JhZ2UtPm1fdmVjdG9yOworICAgIFdy
aXRlQmFycmllcjxVbmtub3duPiogdmVjdG9yID0gc3RvcmFnZS0+bV92ZWN0b3I7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gdmVjdG9yTGVuZ3RoOyBpIDwgbmV3VmVjdG9yTGVuZ3RoOyArK2kpCi0g
ICAgICAgIHZlY3RvcltpXSA9IEpTVmFsdWUoKTsKKyAgICAgICAgdmVjdG9yW2ldLmNsZWFyKCk7
CiAKICAgICBtX3ZlY3Rvckxlbmd0aCA9IG5ld1ZlY3Rvckxlbmd0aDsKICAgICAKQEAgLTY2Niw5
ICs2NjcsOSBAQCB2b2lkIEpTQXJyYXk6OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW5ndGgpCiAg
ICAgaWYgKG5ld0xlbmd0aCA8IGxlbmd0aCkgewogICAgICAgICB1bnNpZ25lZCB1c2VkVmVjdG9y
TGVuZ3RoID0gbWluKGxlbmd0aCwgbV92ZWN0b3JMZW5ndGgpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBuZXdMZW5ndGg7IGkgPCB1c2VkVmVjdG9yTGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIEpTVmFsdWUmIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgICAgICAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZVNsb3QgPSBzdG9yYWdlLT5tX3ZlY3Rvcltp
XTsKICAgICAgICAgICAgIGJvb2wgaGFkVmFsdWUgPSB2YWx1ZVNsb3Q7Ci0gICAgICAgICAgICB2
YWx1ZVNsb3QgPSBKU1ZhbHVlKCk7CisgICAgICAgICAgICB2YWx1ZVNsb3QuY2xlYXIoKTsKICAg
ICAgICAgICAgIHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgLT0gaGFkVmFsdWU7CiAgICAg
ICAgIH0KIApAQCAtNzA2LDExICs3MDcsMTEgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoKQogICAg
IEpTVmFsdWUgcmVzdWx0OwogCiAgICAgaWYgKGxlbmd0aCA8IG1fdmVjdG9yTGVuZ3RoKSB7Ci0g
ICAgICAgIEpTVmFsdWUmIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2xlbmd0aF07Cisg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdmFsdWVTbG90ID0gc3RvcmFnZS0+bV92ZWN0
b3JbbGVuZ3RoXTsKICAgICAgICAgaWYgKHZhbHVlU2xvdCkgewogICAgICAgICAgICAgLS1zdG9y
YWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwotICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWVTbG90
OwotICAgICAgICAgICAgdmFsdWVTbG90ID0gSlNWYWx1ZSgpOworICAgICAgICAgICAgcmVzdWx0
ID0gdmFsdWVTbG90LmdldCgpOworICAgICAgICAgICAgdmFsdWVTbG90LmNsZWFyKCk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKICAgICB9IGVs
c2UgewpAQCAtNzE4LDcgKzcxOSw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKCkKICAgICAgICAg
aWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXAp
IHsKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5m
aW5kKGxlbmd0aCk7CiAgICAgICAgICAgICBpZiAoaXQgIT0gbWFwLT5lbmQoKSkgewotICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
aXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgICAgICBtYXAtPnJlbW92ZShpdCk7CiAgICAg
ICAgICAgICAgICAgaWYgKG1hcC0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRl
bGV0ZSBtYXA7CkBAIC03NDIsNyArNzQzLDcgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBtX3N0
b3JhZ2U7CiAKICAgICBpZiAoc3RvcmFnZS0+bV9sZW5ndGggPCBtX3ZlY3Rvckxlbmd0aCkgewot
ICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltzdG9yYWdlLT5tX2xlbmd0aF0gPSB2YWx1ZTsKKyAg
ICAgICAgc3RvcmFnZS0+bV92ZWN0b3Jbc3RvcmFnZS0+bV9sZW5ndGhdLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0lu
VmVjdG9yOwogICAgICAgICArK3N0b3JhZ2UtPm1fbGVuZ3RoOwogICAgICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CkBAIC03NTQsNyArNzU1LDcgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgaWYgKCFtYXAgfHwgbWFwLT5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGlmIChpbmNyZWFzZVZlY3Rvckxlbmd0aChzdG9yYWdlLT5tX2xl
bmd0aCArIDEpKSB7CiAgICAgICAgICAgICAgICAgc3RvcmFnZSA9IG1fc3RvcmFnZTsKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltzdG9yYWdlLT5tX2xlbmd0aF0gPSB2YWx1ZTsK
KyAgICAgICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltzdG9yYWdlLT5tX2xlbmd0aF0uc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgICAgICsrc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgICAgICAgICArK3N0b3JhZ2UtPm1f
bGVuZ3RoOwogICAgICAgICAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTg1Nyw5ICs4
NTgsOSBAQCB2b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMsIGludCBj
b3VudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEpTVmFsdWUqIHZlY3RvciA9IG1f
c3RvcmFnZS0+bV92ZWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3IgPSBt
X3N0b3JhZ2UtPm1fdmVjdG9yOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
LSAgICAgICAgdmVjdG9yW2ldID0gSlNWYWx1ZSgpOworICAgICAgICB2ZWN0b3JbaV0uY2xlYXIo
KTsKIH0KIAogdm9pZCBKU0FycmF5OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2sp
CkBAIC05NDEsNyArOTQyLDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBIZWFwOjpoZWFwKHRoaXMpLT5wdXNoVGVtcFNvcnRWZWN0b3IoJnZhbHVlcyk7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aE5vdEluY2x1ZGluZ1VuZGVmaW5lZDsgaSsr
KSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldLmdldCgpOwogICAgICAgICBB
U1NFUlQoIXZhbHVlLmlzVW5kZWZpbmVkKCkpOwogICAgICAgICB2YWx1ZXNbaV0uZmlyc3QgPSB2
YWx1ZTsKICAgICB9CkBAIC05NzQsOSArOTc1LDEwIEBAIHZvaWQgSlNBcnJheTo6c29ydChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIGluY3JlYXNlVmVjdG9yTGVuZ3RoKGxlbmd0aE5vdEluY2x1
ZGluZ1VuZGVmaW5lZCk7CiAgICAgaWYgKHN0b3JhZ2UtPm1fbGVuZ3RoIDwgbGVuZ3RoTm90SW5j
bHVkaW5nVW5kZWZpbmVkKQogICAgICAgICBzdG9yYWdlLT5tX2xlbmd0aCA9IGxlbmd0aE5vdElu
Y2x1ZGluZ1VuZGVmaW5lZDsKLSAgICAgICAgCisKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7IGkrKykKLSAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3Jb
aV0gPSB2YWx1ZXNbaV0uZmlyc3Q7CisgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldChn
bG9iYWxEYXRhLCB0aGlzLCB2YWx1ZXNbaV0uZmlyc3QpOwogCiAgICAgSGVhcDo6aGVhcCh0aGlz
KS0+cG9wVGVtcFNvcnRWZWN0b3IoJnZhbHVlcyk7CiAgICAgCkBAIC0xMTA1LDE0ICsxMTA3LDE0
IEBAIHZvaWQgSlNBcnJheTo6c29ydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFyZUZ1
bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgYXJy
YXksIGlnbm9yaW5nIG1pc3NpbmcgdmFsdWVzLCBjb3VudGluZyB1bmRlZmluZWQgb25lcywgYW5k
IGluc2VydGluZyBhbGwgb3RoZXIgb25lcyBpbnRvIHRoZSB0cmVlLgogICAgIGZvciAoOyBudW1E
ZWZpbmVkIDwgdXNlZFZlY3Rvckxlbmd0aDsgKytudW1EZWZpbmVkKSB7Ci0gICAgICAgIEpTVmFs
dWUgdiA9IHN0b3JhZ2UtPm1fdmVjdG9yW251bURlZmluZWRdOworICAgICAgICBKU1ZhbHVlIHYg
PSBzdG9yYWdlLT5tX3ZlY3RvcltudW1EZWZpbmVkXS5nZXQoKTsKICAgICAgICAgaWYgKCF2IHx8
IHYuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB0cmVlLmFic3Ry
YWN0b3IoKS5tX25vZGVzW251bURlZmluZWRdLnZhbHVlID0gdjsKICAgICAgICAgdHJlZS5pbnNl
cnQobnVtRGVmaW5lZCk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7
IGkgPCB1c2VkVmVjdG9yTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSB2ID0gc3RvcmFn
ZS0+bV92ZWN0b3JbaV07CisgICAgICAgIEpTVmFsdWUgdiA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ld
LmdldCgpOwogICAgICAgICBpZiAodikgewogICAgICAgICAgICAgaWYgKHYuaXNVbmRlZmluZWQo
KSkKICAgICAgICAgICAgICAgICArK251bVVuZGVmaW5lZDsKQEAgLTExNDAsNyArMTE0Miw3IEBA
IHZvaWQgSlNBcnJheTo6c29ydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFyZUZ1bmN0
aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwKIAogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjpp
dGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwogICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVN
YXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgICAgIHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNbbnVtRGVmaW5lZF0udmFsdWUgPSBpdC0+
c2Vjb25kOworICAgICAgICAgICAgdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rlc1tudW1EZWZpbmVk
XS52YWx1ZSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgICAgICB0cmVlLmluc2VydChudW1E
ZWZpbmVkKTsKICAgICAgICAgICAgICsrbnVtRGVmaW5lZDsKICAgICAgICAgfQpAQCAtMTE1Nywx
OCArMTE1OSwxOSBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsCiAgICAgLy8gQ29weSB0aGUgdmFs
dWVzIGJhY2sgaW50byBtX3N0b3JhZ2UuCiAgICAgQVZMVHJlZTxBVkxUcmVlQWJzdHJhY3RvckZv
ckFycmF5Q29tcGFyZSwgNDQ+OjpJdGVyYXRvciBpdGVyOwogICAgIGl0ZXIuc3RhcnRfaXRlcl9s
ZWFzdCh0cmVlKTsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxE
YXRhKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bURlZmluZWQ7ICsraSkgewot
ICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNb
Kml0ZXJdLnZhbHVlOworICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQoZ2xvYmFsRGF0
YSwgdGhpcywgdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rlc1sqaXRlcl0udmFsdWUpOwogICAgICAg
ICArK2l0ZXI7CiAgICAgfQogCiAgICAgLy8gUHV0IHVuZGVmaW5lZCB2YWx1ZXMgYmFjayBpbi4K
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1EZWZpbmVkOyBpIDwgbmV3VXNlZFZlY3Rvckxlbmd0
aDsgKytpKQotICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IGpzVW5kZWZpbmVkKCk7Cisg
ICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldFVuZGVmaW5lZCgpOwogCiAgICAgLy8gRW5z
dXJlIHRoYXQgdW51c2VkIHZhbHVlcyBpbiB0aGUgdmVjdG9yIGFyZSB6ZXJvZWQgb3V0LgogICAg
IGZvciAodW5zaWduZWQgaSA9IG5ld1VzZWRWZWN0b3JMZW5ndGg7IGkgPCB1c2VkVmVjdG9yTGVu
Z3RoOyArK2kpCi0gICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldID0gSlNWYWx1ZSgpOworICAg
ICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5jbGVhcigpOwogCiAgICAgc3RvcmFnZS0+bV9udW1W
YWx1ZXNJblZlY3RvciA9IG5ld1VzZWRWZWN0b3JMZW5ndGg7CiAKQEAgLTExNzksMTQgKzExODIs
MTQgQEAgdm9pZCBKU0FycmF5OjpmaWxsQXJnTGlzdChFeGVjU3RhdGUqIGV4ZWMsIE1hcmtlZEFy
Z3VtZW50QnVmZmVyJiBhcmdzKQogewogICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IG1fc3Rv
cmFnZTsKIAotICAgIEpTVmFsdWUqIHZlY3RvciA9IHN0b3JhZ2UtPm1fdmVjdG9yOworICAgIFdy
aXRlQmFycmllcjxVbmtub3duPiogdmVjdG9yID0gc3RvcmFnZS0+bV92ZWN0b3I7CiAgICAgdW5z
aWduZWQgdmVjdG9yRW5kID0gbWluKHN0b3JhZ2UtPm1fbGVuZ3RoLCBtX3ZlY3Rvckxlbmd0aCk7
CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkgPCB2ZWN0b3JFbmQ7ICsraSkgewot
ICAgICAgICBKU1ZhbHVlJiB2ID0gdmVjdG9yW2ldOworICAgICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4mIHYgPSB2ZWN0b3JbaV07CiAgICAgICAgIGlmICghdikKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBhcmdzLmFwcGVuZCh2KTsKKyAgICAgICAgYXJncy5hcHBlbmQodi5nZXQoKSk7
CiAgICAgfQogCiAgICAgZm9yICg7IGkgPCBzdG9yYWdlLT5tX2xlbmd0aDsgKytpKQpAQCAtMTE5
NywxNCArMTIwMCwxNCBAQCB2b2lkIEpTQXJyYXk6OmNvcHlUb1JlZ2lzdGVycyhFeGVjU3RhdGUq
IGV4ZWMsIFJlZ2lzdGVyKiBidWZmZXIsIHVpbnQzMl90IG1heFNpegogewogICAgIEFTU0VSVCht
X3N0b3JhZ2UtPm1fbGVuZ3RoID49IG1heFNpemUpOwogICAgIFVOVVNFRF9QQVJBTShtYXhTaXpl
KTsKLSAgICBKU1ZhbHVlKiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9yOworICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiogdmVjdG9yID0gbV9zdG9yYWdlLT5tX3ZlY3RvcjsKICAgICB1bnNp
Z25lZCB2ZWN0b3JFbmQgPSBtaW4obWF4U2l6ZSwgbV92ZWN0b3JMZW5ndGgpOwogICAgIHVuc2ln
bmVkIGkgPSAwOwogICAgIGZvciAoOyBpIDwgdmVjdG9yRW5kOyArK2kpIHsKLSAgICAgICAgSlNW
YWx1ZSYgdiA9IHZlY3RvcltpXTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2ID0g
dmVjdG9yW2ldOwogICAgICAgICBpZiAoIXYpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
YnVmZmVyW2ldID0gdjsKKyAgICAgICAgYnVmZmVyW2ldID0gdi5nZXQoKTsKICAgICB9CiAKICAg
ICBmb3IgKDsgaSA8IG1heFNpemU7ICsraSkKQEAgLTEyMjMsMTcgKzEyMjYsMTggQEAgdW5zaWdu
ZWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcoKQogICAgIHVuc2lnbmVkIG51bVVuZGVmaW5l
ZCA9IDA7CiAKICAgICBmb3IgKDsgbnVtRGVmaW5lZCA8IHVzZWRWZWN0b3JMZW5ndGg7ICsrbnVt
RGVmaW5lZCkgewotICAgICAgICBKU1ZhbHVlIHYgPSBzdG9yYWdlLT5tX3ZlY3RvcltudW1EZWZp
bmVkXTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gc3RvcmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5lZF0u
Z2V0KCk7CiAgICAgICAgIGlmICghdiB8fCB2LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICBi
cmVhazsKICAgICB9CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1EZWZpbmVkOyBpIDwgdXNl
ZFZlY3Rvckxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgdiA9IHN0b3JhZ2UtPm1fdmVj
dG9yW2ldOworICAgICAgICBKU1ZhbHVlIHYgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXS5nZXQoKTsK
ICAgICAgICAgaWYgKHYpIHsKICAgICAgICAgICAgIGlmICh2LmlzVW5kZWZpbmVkKCkpCiAgICAg
ICAgICAgICAgICAgKytudW1VbmRlZmluZWQ7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5lZCsrXSA9IHY7CisgICAgICAgICAgICAg
ICAgc3RvcmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVy
KHYpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjUyLDE2ICsxMjU2LDE2IEBAIHVuc2lnbmVk
IEpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKCkKIAogICAgICAgICBTcGFyc2VBcnJheVZhbHVl
TWFwOjppdGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwogICAgICAgICBmb3IgKFNwYXJzZUFycmF5
VmFsdWVNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0g
ICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltudW1EZWZpbmVkKytdID0gaXQtPnNlY29uZDsK
KyAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW251bURlZmluZWQrK10uc2V0V2l0aG91dFdy
aXRlQmFycmllcihpdC0+c2Vjb25kLmdldCgpKTsKIAogICAgICAgICBkZWxldGUgbWFwOwogICAg
ICAgICBzdG9yYWdlLT5tX3NwYXJzZVZhbHVlTWFwID0gMDsKICAgICB9CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBudW1EZWZpbmVkOyBpIDwgbmV3VXNlZFZlY3Rvckxlbmd0aDsgKytpKQotICAg
ICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IGpzVW5kZWZpbmVkKCk7CisgICAgICAgIHN0b3Jh
Z2UtPm1fdmVjdG9yW2ldLnNldFVuZGVmaW5lZCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG5l
d1VzZWRWZWN0b3JMZW5ndGg7IGkgPCB1c2VkVmVjdG9yTGVuZ3RoOyArK2kpCi0gICAgICAgIHN0
b3JhZ2UtPm1fdmVjdG9yW2ldID0gSlNWYWx1ZSgpOworICAgICAgICBzdG9yYWdlLT5tX3ZlY3Rv
cltpXS5jbGVhcigpOwogCiAgICAgc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciA9IG5ld1Vz
ZWRWZWN0b3JMZW5ndGg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApp
bmRleCBkZTI4YjY1YmI4M2RmMWU3NDcxYzY5Mjk0OGJmY2QzNTdjZmE0OTE2Li45OTIzNDMyYzI2
YmEzNjkzYzA5Y2VkYzIyMjVjYTM5YTBjNzdmYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0g
ICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBKU1ZhbHVlPiBTcGFyc2VBcnJheVZhbHVlTWFw
OworICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgV3JpdGVCYXJyaWVyPFVua25vd24+ID4g
U3BhcnNlQXJyYXlWYWx1ZU1hcDsKIAogICAgIC8vIFRoaXMgc3RydWN0IGhvbGRzIHRoZSBhY3R1
YWwgZGF0YSB2YWx1ZXMgb2YgYW4gYXJyYXkuICBBIEpTQXJyYXkgb2JqZWN0IHBvaW50cyB0byBp
dCdzIGNvbnRhaW5lZCBBcnJheVN0b3JhZ2UKICAgICAvLyBzdHJ1Y3QgYnkgcG9pbnRpbmcgdG8g
bV92ZWN0b3IuICBUbyBhY2Nlc3MgdGhlIGNvbnRhaW5lZCBBcnJheVN0b3JhZ2Ugc3RydWN0LCB1
c2UgdGhlIGdldFN0b3JhZ2UoKSBhbmQgCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2lmIENIRUNLX0FSUkFZX0NPTlNJU1RFTkNZCiAgICAgICAgIGJvb2wgbV9pbkNvbXBhY3RJ
bml0aWFsaXphdGlvbjsKICNlbmRpZgotICAgICAgICBKU1ZhbHVlIG1fdmVjdG9yWzFdOworICAg
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV92ZWN0b3JbMV07CiAgICAgfTsKIAogICAgIC8v
IFRoZSBDcmVhdGVDb21wYWN0IGNyZWF0aW9uIG1vZGUgaXMgdXNlZCBmb3IgZmFzdCBjb25zdHJ1
Y3Rpb24gb2YgYXJyYXlzCkBAIC02Nyw3ICs2Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIGV4cGxpY2l0IEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAgICAg
ICAgIEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgdW5zaWduZWQgaW5pdGlh
bExlbmd0aCwgQXJyYXlDcmVhdGlvbk1vZGUpOwotICAgICAgICBKU0FycmF5KE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IEFyZ0xpc3QmIGluaXRpYWxWYWx1ZXMpOworICAgICAg
ICBKU0FycmF5KEpTR2xvYmFsRGF0YSYsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNv
bnN0IEFyZ0xpc3QmIGluaXRpYWxWYWx1ZXMpOwogICAgICAgICB2aXJ0dWFsIH5KU0FycmF5KCk7
CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpAQCAtOTQsMzIg
Kzk0LDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGdldEluZGV4KHVuc2ln
bmVkIGkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChjYW5HZXRJbmRleChpKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9zdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICAgICAgICAgIHJl
dHVybiBtX3N0b3JhZ2UtPm1fdmVjdG9yW2ldLmdldCgpOwogICAgICAgICB9CiAKICAgICAgICAg
Ym9vbCBjYW5TZXRJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV92ZWN0b3JMZW5ndGg7
IH0KLSAgICAgICAgdm9pZCBzZXRJbmRleCh1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCisgICAgICAg
IHZvaWQgc2V0SW5kZXgoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBpLCBKU1Zh
bHVlIHYpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChjYW5TZXRJbmRleChpKSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIEpTVmFsdWUmIHggPSBtX3N0b3JhZ2UtPm1fdmVjdG9y
W2ldOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB4ID0gbV9zdG9yYWdlLT5t
X3ZlY3RvcltpXTsKICAgICAgICAgICAgIGlmICgheCkgewogICAgICAgICAgICAgICAgIEFycmF5
U3RvcmFnZSAqc3RvcmFnZSA9IG1fc3RvcmFnZTsKICAgICAgICAgICAgICAgICArK3N0b3JhZ2Ut
Pm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgICAgICAgICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+
bV9sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UtPm1fbGVuZ3RoID0gaSArIDE7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB4ID0gdjsKKyAgICAgICAgICAgIHguc2V0KGds
b2JhbERhdGEsIHRoaXMsIHYpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHVu
Y2hlY2tlZFNldEluZGV4KHVuc2lnbmVkIGksIEpTVmFsdWUgdikKKyAgICAgICAgdm9pZCB1bmNo
ZWNrZWRTZXRJbmRleChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIGksIEpTVmFs
dWUgdikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNhblNldEluZGV4KGkpKTsKICAg
ICAgICAgICAgIEFycmF5U3RvcmFnZSAqc3RvcmFnZSA9IG1fc3RvcmFnZTsKICNpZiBDSEVDS19B
UlJBWV9DT05TSVNURU5DWQogICAgICAgICAgICAgQVNTRVJUKHN0b3JhZ2UtPm1faW5Db21wYWN0
SW5pdGlhbGl6YXRpb24pOwogI2VuZGlmCi0gICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3Rvcltp
XSA9IHY7CisgICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQoZ2xvYmFsRGF0YSwg
dGhpcywgdik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGZpbGxBcmdMaXN0KEV4ZWNTdGF0
ZSosIE1hcmtlZEFyZ3VtZW50QnVmZmVyJik7CkBAIC0xODksMTIgKzE4OSwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwogCiAg
ICAgICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSBzdGQ6Om1pbihzdG9yYWdlLT5tX2xl
bmd0aCwgbV92ZWN0b3JMZW5ndGgpOwotICAgICAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKHN0
b3JhZ2UtPm1fdmVjdG9yLCB1c2VkVmVjdG9yTGVuZ3RoLCBNYXlDb250YWluTnVsbFZhbHVlcyk7
CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoc3RvcmFnZS0+bV92ZWN0b3JbMF0uc2xv
dCgpLCB1c2VkVmVjdG9yTGVuZ3RoLCBNYXlDb250YWluTnVsbFZhbHVlcyk7CiAKICAgICAgICAg
aWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXAp
IHsKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC0+
ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGl0
ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgbWFya1N0
YWNrLmFwcGVuZChpdC0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5k
KGl0LT5zZWNvbmQuc2xvdCgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCmluZGV4IDZhZjlkNzVmMTM0ZWI5NTlm
YzBiNzk4OGM0ZDJlZTdjYjhjZDFjOWMuLjNmN2Q4MDZhYzhjN2IzNjQ4YmMxYzJmZmU4YzczMjdh
NzE1MDUxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0
ZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJh
eS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KEV4ZWNTdGF0
ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUKICAgICAsIG1f
c3RvcmFnZShzdG9yYWdlKQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZvKQogewotICAgIHB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250
RGVsZXRlKTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKaW5kZXggZjdlODgxMDUxMmMyOTM5MjI1ZmMyYjNmMWJjZTAwYWQ2YWQ3
OThmZi4uODZhYzkzYmNjZWUxZDkyMTc1ZTcwZTQ3Yjk2OGQyZGIxNjU2ZjNkNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTMzNiw4ICszMzYsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgewogICAgICAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+dG9U
aGlzT2JqZWN0KGV4ZWMpIDogdG9UaGlzT2JqZWN0U2xvd0Nhc2UoZXhlYyk7CiAgICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTQ2VsbCogY2VsbCkKKyAg
ICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoSlNDZWxsKiogc2xv
dCkKKyAgICB7CisgICAgICAgIGFwcGVuZENlbGwoKnNsb3QpOworICAgIH0KKyAgICAKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBlbmRDZWxsKEpTQ2VsbCogY2VsbCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghbV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24p
OwogICAgICAgICBBU1NFUlQoY2VsbCk7CkBAIC0zNDYsMTIgKzM1MSwxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA+
PSBDb21wb3VuZFR5cGUpCiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQoY2VsbCk7CiAgICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTVmFsdWUgdmFs
dWUpCisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTVmFs
dWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICAgICAgaWYgKHZh
bHVlLmlzQ2VsbCgpKQotICAgICAgICAgICAgYXBwZW5kKHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAg
ICAgaWYgKHZhbHVlLT5pc0NlbGwoKSkKKyAgICAgICAgICAgIGFwcGVuZENlbGwodmFsdWUtPmFz
Q2VsbCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSGVhcCogSGVhcDo6aGVhcChKU1ZhbHVlIHYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDk5
ZjhlNmY5NTNhZTc3MzllZDA0YjE1YTNhM2ZiNWE1ZmQxNTA3OGQuLjRmZjU5ZTM5ZmVkMzVlMzJh
MGUyZjUzNzk4Y2Y4YWIyNjIyYTJjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC03MSw4ICs3MSw4IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxs
UGFzCiAgICAgLCBtX2V4ZWN1dGFibGUodGh1bmspCiAgICAgLCBtX3Njb3BlQ2hhaW4oZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgp
ID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIo
bGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5n
dGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAjZW5kaWYKIApAQCAt
ODMsOSArODMsOSBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhcwogI2VuZGlmCiAgICAgLCBtX3Nj
b3BlQ2hhaW4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7Ci0gICAgcHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVj
LCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5p
c051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7CiAgICAgVU5V
U0VEX1BBUkFNKGZ1bmMpOwpAQCAtOTksNyArOTksNyBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBl
eAogICAgICwgbV9zY29wZUNoYWluKHNjb3BlQ2hhaW5Ob2RlKQogewogICAgIGNvbnN0IElkZW50
aWZpZXImIG5hbWUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihtX2V4ZWN1dGFi
bGUuZ2V0KCkpLT5uYW1lKCk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1l
LnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
cy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5n
KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIEpTRnVuY3Rpb246
On5KU0Z1bmN0aW9uKCkKQEAgLTIwNyw4ICsyMDcsOCBAQCBib29sIEpTRnVuY3Rpb246OmdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TgogCiAgICAgICAgIGlmICghbG9jYXRpb24pIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUgPSBuZXcgKGV4ZWMpIEpTT2JqZWN0KHNjb3BlKCkuZ2xvYmFsT2JqZWN0KCktPmVtcHR5
T2JqZWN0U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3QoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzLCBEb250RW51bSk7Ci0gICAgICAg
ICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBl
LCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IHRoaXMsIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0
ZSB8IERvbnRFbnVtKTsKICAgICAgICAgICAgIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24o
cHJvcGVydHlOYW1lKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOWI2N2RiYjczNGY1MGZhMjkwMTJmNzZk
N2RlNDI5NTM1NWY2MmI2Yy4uYmQyYmYwN2E2YmZlODliYjhjZGU2MWUwNDA0NzgyOGQ0NGY1OWEx
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtODAsMTYgKzgwLDE2IEBAIHN0YXRpYyBjb25zdCBpbnQgaW5pdGlhbFRpY2tDb3Vu
dFRocmVzaG9sZCA9IDI1NTsKIC8vIFByZWZlcnJlZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJl
dHdlZW4gZWFjaCB0aW1lb3V0IGNoZWNrCiBzdGF0aWMgY29uc3QgaW50IHByZWZlcnJlZFNjcmlw
dENoZWNrVGltZUludGVydmFsID0gMTAwMDsKIAotc3RhdGljIGlubGluZSB2b2lkIG1hcmtJZk5l
ZWRlZChNYXJrU3RhY2smIG1hcmtTdGFjaywgSlNWYWx1ZSB2KQorc3RhdGljIGlubGluZSB2b2lk
IG1hcmtJZk5lZWRlZChNYXJrU3RhY2smIG1hcmtTdGFjaywgSlNDZWxsKiogdikKIHsKLSAgICBp
ZiAodikKKyAgICBpZiAoKnYpCiAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQodik7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgdm9pZCBtYXJrSWZOZWVkZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIGNvbnN0
IFJlZlB0cjxTdHJ1Y3R1cmU+JiBzKQogewotICAgIGlmIChzKQotICAgICAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBzLT5zdG9yZWRQcm90b3R5cGUoKSk7CisgICAgaWYgKHMgJiYgcy0+c3Rv
cmVkUHJvdG90eXBlKCkpCisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQocy0+c3RvcmVkUHJvdG90
eXBlU2xvdCgpKTsKIH0KIAogSlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCgpCkBAIC0y
MDIsMTE3ICsyMDIsMTE3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJv
dG90eXBlKQogCiAgICAgLy8gUHJvdG90eXBlcwogCi0gICAgZCgpLT5mdW5jdGlvblByb3RvdHlw
ZSA9IG5ldyAoZXhlYykgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgdGhpcywgRnVuY3Rpb25Qcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpOyAvLyBUaGUgcmVhbCBwcm90b3R5cGUg
d2lsbCBiZSBzZXQgb25jZSBPYmplY3RQcm90b3R5cGUgaXMgY3JlYXRlZC4KLSAgICBkKCktPnBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlID0gUHJvdG90eXBlRnVuY3Rpb246OmNyZWF0ZVN0cnVj
dHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKTsKLSAgICBkKCktPmludGVybmFsRnVuY3Rpb25T
dHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlv
blByb3RvdHlwZSk7CisgICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEZ1bmN0aW9uUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEZ1
bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKSk7IC8vIFRoZSByZWFs
IHByb3RvdHlwZSB3aWxsIGJlIHNldCBvbmNlIE9iamVjdFByb3RvdHlwZSBpcyBjcmVhdGVkLgor
ICAgIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUgPSBQcm90b3R5cGVGdW5jdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIGQoKS0+
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVj
dHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBOYXRpdmVGdW5jdGlvbldy
YXBwZXIqIGNhbGxGdW5jdGlvbiA9IDA7CiAgICAgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKiBhcHBs
eUZ1bmN0aW9uID0gMDsKICAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblBy
b3BlcnRpZXMoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQo
KSwgJmNhbGxGdW5jdGlvbiwgJmFwcGx5RnVuY3Rpb24pOwotICAgIGQoKS0+Y2FsbEZ1bmN0aW9u
ID0gY2FsbEZ1bmN0aW9uOwotICAgIGQoKS0+YXBwbHlGdW5jdGlvbiA9IGFwcGx5RnVuY3Rpb247
Ci0gICAgZCgpLT5vYmplY3RQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE9iamVjdFByb3RvdHlwZShl
eGVjLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSksIGQo
KS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIGQoKS0+ZnVuY3Rpb25Q
cm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihkKCkt
Pm9iamVjdFByb3RvdHlwZSk7CisgICAgZCgpLT5jYWxsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKKyAgICBkKCktPmFwcGx5RnVuY3Rpb24uc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CisgICAgZCgpLT5vYmpl
Y3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBPYmpl
Y3RQcm90b3R5cGUoZXhlYywgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
anNOdWxsKCkpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CisgICAg
ZCgpLT5mdW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRU
cmFuc2l0aW9uKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIAogICAgIGQoKS0+ZW1wdHlP
YmplY3RTdHJ1Y3R1cmUgPSBkKCktPm9iamVjdFByb3RvdHlwZS0+aW5oZXJpdG9ySUQoKTsKIAot
ICAgIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUgPSBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgZCgpLT5jYWxsYmFja0Z1bmN0aW9uU3RydWN0
dXJlID0gSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblBy
b3RvdHlwZSk7Ci0gICAgZCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUgPSBBcmd1bWVudHM6OmNyZWF0
ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSk7Ci0gICAgZCgpLT5jYWxsYmFja0NvbnN0
cnVjdG9yU3RydWN0dXJlID0gSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5vYmplY3RQcm90b3R5cGUpOwotICAgIGQoKS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUg
PSBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD46OmNyZWF0ZVN0cnVj
dHVyZShkKCktPm9iamVjdFByb3RvdHlwZSk7CisgICAgZCgpLT5mdW5jdGlvblN0cnVjdHVyZSA9
IEpTRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgp
KTsKKyAgICBkKCktPmNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrRnVuY3Rp
b246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBk
KCktPmFyZ3VtZW50c1N0cnVjdHVyZSA9IEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+
b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPmNhbGxiYWNrQ29uc3RydWN0b3JTdHJ1
Y3R1cmUgPSBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVj
dFByb3RvdHlwZS5nZXQoKSk7CisgICAgZCgpLT5jYWxsYmFja09iamVjdFN0cnVjdHVyZSA9IEpT
Q2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJl
KGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+YXJyYXlQcm90b3R5cGUg
PSBuZXcgKGV4ZWMpIEFycmF5UHJvdG90eXBlKHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpKTsKLSAgICBkKCktPmFycmF5U3RydWN0dXJl
ID0gSlNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+YXJyYXlQcm90b3R5cGUpOwotICAgIGQo
KS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlID0gUmVnRXhwTWF0Y2hlc0FycmF5OjpjcmVh
dGVTdHJ1Y3R1cmUoZCgpLT5hcnJheVByb3RvdHlwZSk7CisgICAgZCgpLT5hcnJheVByb3RvdHlw
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEFycmF5UHJvdG90eXBl
KHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5
cGUuZ2V0KCkpKSk7CisgICAgZCgpLT5hcnJheVN0cnVjdHVyZSA9IEpTQXJyYXk6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPmFycmF5UHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPnJlZ0V4cE1hdGNo
ZXNBcnJheVN0cnVjdHVyZSA9IFJlZ0V4cE1hdGNoZXNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+YXJyYXlQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5zdHJpbmdQcm90b3R5cGUgPSBu
ZXcgKGV4ZWMpIFN0cmluZ1Byb3RvdHlwZShleGVjLCB0aGlzLCBTdHJpbmdQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSkpOwotICAgIGQoKS0+c3RyaW5nT2Jq
ZWN0U3RydWN0dXJlID0gU3RyaW5nT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5zdHJpbmdQ
cm90b3R5cGUpOworICAgIGQoKS0+c3RyaW5nUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIG5ldyAoZXhlYykgU3RyaW5nUHJvdG90eXBlKGV4ZWMsIHRoaXMsIFN0cmluZ1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwor
ICAgIGQoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlID0gU3RyaW5nT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUoZCgpLT5zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5ib29sZWFuUHJv
dG90eXBlID0gbmV3IChleGVjKSBCb29sZWFuUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEJvb2xlYW5Q
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSksIGQoKS0+cHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIGQoKS0+Ym9vbGVhbk9iamVjdFN0
cnVjdHVyZSA9IEJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmJvb2xlYW5Qcm90
b3R5cGUpOworICAgIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBuZXcgKGV4ZWMpIEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgdGhpcywgQm9vbGVhblBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgp
LT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOworICAgIGQoKS0+Ym9vbGVhbk9i
amVjdFN0cnVjdHVyZSA9IEJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmJvb2xl
YW5Qcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5udW1iZXJQcm90b3R5cGUgPSBuZXcgKGV4
ZWMpIE51bWJlclByb3RvdHlwZShleGVjLCB0aGlzLCBOdW1iZXJQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCkpOwotICAgIGQoKS0+bnVtYmVyT2JqZWN0U3RydWN0dXJlID0gTnVtYmVyT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5udW1iZXJQcm90b3R5cGUpOworICAgIGQoKS0+bnVt
YmVyUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTnVt
YmVyUHJvdG90eXBlKGV4ZWMsIHRoaXMsIE51bWJlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVj
dHVyZS5nZXQoKSkpOworICAgIGQoKS0+bnVtYmVyT2JqZWN0U3RydWN0dXJlID0gTnVtYmVyT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5udW1iZXJQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAg
ZCgpLT5kYXRlUHJvdG90eXBlID0gbmV3IChleGVjKSBEYXRlUHJvdG90eXBlKGV4ZWMsIHRoaXMs
IERhdGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSkpOwot
ICAgIGQoKS0+ZGF0ZVN0cnVjdHVyZSA9IERhdGVJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+ZGF0ZVByb3RvdHlwZSk7CisgICAgZCgpLT5kYXRlUHJvdG90eXBlLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgRGF0ZVByb3RvdHlwZShleGVjLCB0aGlzLCBEYXRl
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7
CisgICAgZCgpLT5kYXRlU3RydWN0dXJlID0gRGF0ZUluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5kYXRlUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+cmVnRXhwUHJvdG90eXBlID0g
bmV3IChleGVjKSBSZWdFeHBQcm90b3R5cGUoZXhlYywgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpLCBkKCktPnByb3RvdHlwZUZ1bmN0
aW9uU3RydWN0dXJlLmdldCgpKTsKLSAgICBkKCktPnJlZ0V4cFN0cnVjdHVyZSA9IFJlZ0V4cE9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+cmVnRXhwUHJvdG90eXBlKTsKKyAgICBkKCktPnJl
Z0V4cFByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJl
Z0V4cFByb3RvdHlwZShleGVjLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCkpKTsKKyAgICBkKCktPnJlZ0V4cFN0cnVjdHVyZSA9IFJlZ0V4cE9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKGQoKS0+cmVnRXhwUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+
bWV0aG9kQ2FsbER1bW15ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgZCgpLT5t
ZXRob2RDYWxsRHVtbXkuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYykpOwogCi0gICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlID0g
bmV3IChleGVjKSBFcnJvclByb3RvdHlwZShleGVjLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSk7CisgICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlID0g
bmV3IChleGVjKSBFcnJvclByb3RvdHlwZShleGVjLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7CiAgICAgZCgpLT5lcnJvclN0cnVjdHVyZSA9IEVycm9y
SW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShlcnJvclByb3RvdHlwZSk7CiAKICAgICAvLyBDb25z
dHJ1Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE9i
amVjdENvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSksIGQoKS0+b2JqZWN0UHJvdG90eXBlLCBkKCkt
PnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKLSAgICBKU0NlbGwqIGZ1bmN0aW9u
Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgdGhpcywg
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5
cGUpLCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlKTsKLSAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0
b3IgPSBuZXcgKGV4ZWMpIEFycmF5Q29uc3RydWN0b3IoZXhlYywgdGhpcywgQXJyYXlDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPmFycmF5
UHJvdG90eXBlLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKLSAgICBK
U0NlbGwqIHN0cmluZ0NvbnN0cnVjdG9yID0gbmV3IChleGVjKSBTdHJpbmdDb25zdHJ1Y3Rvcihl
eGVjLCB0aGlzLCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rp
b25Qcm90b3R5cGUpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCBkKCkt
PnN0cmluZ1Byb3RvdHlwZSk7Ci0gICAgSlNDZWxsKiBib29sZWFuQ29uc3RydWN0b3IgPSBuZXcg
KGV4ZWMpIEJvb2xlYW5Db25zdHJ1Y3RvcihleGVjLCB0aGlzLCBCb29sZWFuQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKSwgZCgpLT5ib29sZWFuUHJv
dG90eXBlKTsKLSAgICBKU0NlbGwqIG51bWJlckNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBOdW1i
ZXJDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPm51bWJlclByb3RvdHlwZSk7Ci0gICAg
SlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIERhdGVDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJv
dG90eXBlKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgZCgpLT5kYXRl
UHJvdG90eXBlKTsKKyAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gbmV3IChleGVjKSBP
YmplY3RDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBkKCktPm9iamVjdFByb3RvdHlw
ZS5nZXQoKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7CisgICAgSlND
ZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBGdW5jdGlvbkNvbnN0cnVjdG9y
KGV4ZWMsIHRoaXMsIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBBcnJheUNvbnN0cnVjdG9y
KGV4ZWMsIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5hcnJheVByb3RvdHlwZS5nZXQoKSwgZCgpLT5wcm90
b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7CisgICAgSlNDZWxsKiBzdHJpbmdDb25zdHJ1
Y3RvciA9IG5ldyAoZXhlYykgU3RyaW5nQ29uc3RydWN0b3IoZXhlYywgdGhpcywgU3RyaW5nQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
ZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgZCgpLT5zdHJpbmdQcm90b3R5
cGUuZ2V0KCkpOworICAgIEpTQ2VsbCogYm9vbGVhbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBC
b29sZWFuQ29uc3RydWN0b3IoZXhlYywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+Ym9vbGVhblByb3Rv
dHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBudW1iZXJDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykg
TnVtYmVyQ29uc3RydWN0b3IoZXhlYywgdGhpcywgTnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5udW1iZXJQcm90b3R5
cGUuZ2V0KCkpOworICAgIEpTQ2VsbCogZGF0ZUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBEYXRl
Q29uc3RydWN0b3IoZXhlYywgdGhpcywgRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCksIGQoKS0+ZGF0ZVByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICBkKCktPnJlZ0V4
cENvbnN0cnVjdG9yID0gbmV3IChleGVjKSBSZWdFeHBDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBS
ZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUp
LCBkKCktPnJlZ0V4cFByb3RvdHlwZSk7CisgICAgZCgpLT5yZWdFeHBDb25zdHJ1Y3Rvci5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJlZ0V4cENvbnN0cnVjdG9yKGV4
ZWMsIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIGQoKS0+cmVnRXhwUHJvdG90eXBlLmdldCgpKSk7CiAKLSAgICBk
KCktPmVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEVycm9yQ29uc3RydWN0b3IoZXhlYywg
dGhpcywgRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90
b3R5cGUpLCBlcnJvclByb3RvdHlwZSk7CisgICAgZCgpLT5lcnJvckNvbnN0cnVjdG9yLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgRXJyb3JDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIGVycm9yUHJvdG90eXBlKSk7CiAKICAgICBSZWZQdHI8U3RydWN0dXJl
PiBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoZXJyb3JQcm90b3R5cGUpOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5h
dGl2ZUVycm9yU3RydWN0dXJlID0gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpOwotICAgIGQoKS0+ZXZhbEVycm9yQ29uc3RydWN0
b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZl
RXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiRXZhbEVycm9y
Iik7Ci0gICAgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVy
cm9yUHJvdG90eXBlU3RydWN0dXJlLCAiUmFuZ2VFcnJvciIpOwotICAgIGQoKS0+cmVmZXJlbmNl
RXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1
cmUsICJSZWZlcmVuY2VFcnJvciIpOwotICAgIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvciA9
IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJv
clN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJTeW50YXhFcnJvciIp
OwotICAgIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9y
UHJvdG90eXBlU3RydWN0dXJlLCAiVHlwZUVycm9yIik7Ci0gICAgZCgpLT5VUklFcnJvckNvbnN0
cnVjdG9yID0gbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5h
dGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVy
cm9yIik7Ci0KLSAgICBkKCktPm9iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG9iamVjdENv
bnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZS0+cHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBkKCktPmFycmF5UHJv
dG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIGQo
KS0+Ym9vbGVhblByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGJvb2xlYW5Db25zdHJ1Y3RvciwgRG9u
dEVudW0pOwotICAgIGQoKS0+c3RyaW5nUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwgc3RyaW5nQ29u
c3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBkKCktPm51bWJlclByb3RvdHlwZS0+cHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIG51bWJlckNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5kYXRlUHJvdG90eXBl
LT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5yZWdF
eHBQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBkKCktPnJlZ0V4cENvbnN0cnVjdG9yLCBEb250RW51
bSk7Ci0gICAgZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBkKCktPmVycm9yQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiBuYXRpdmVFcnJvclN0cnVjdHVy
ZSA9IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9u
UHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPmV2YWxFcnJvckNvbnN0cnVjdG9yLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcihl
eGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1
Y3R1cmUsICJFdmFsRXJyb3IiKSk7CisgICAgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3Iuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSwgIlJhbmdlRXJyb3IiKSk7CisgICAgZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0
cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJy
b3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIpKTsKKyAgICBkKCktPnN5bnRh
eEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVj
KSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlN5bnRheEVycm9yIikpOworICAgIGQo
KS0+dHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3
IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlR5cGVFcnJvciIpKTsKKyAg
ICBkKCktPlVSSUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
bmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9y
U3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVycm9yIikpOwor
CisgICAgZCgpLT5vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgZCgpLT5mdW5jdGlvblByb3Rv
dHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3Rv
ciwgRG9udEVudW0pOworICAgIGQoKS0+YXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuY29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBkKCktPmJv
b2xlYW5Qcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGJvb2xlYW5D
b25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIGQoKS0+c3RyaW5nUHJvdG90eXBlLT5wdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBzdHJpbmdDb25zdHJ1Y3RvciwgRG9udEVudW0pOwor
ICAgIGQoKS0+bnVtYmVyUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCBudW1iZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIGQoKS0+ZGF0ZVByb3RvdHlwZS0+
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51
bSk7CisgICAgZCgpLT5yZWdFeHBQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBlcnJv
clByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZCgpLT5lcnJvckNv
bnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAKICAgICAvLyBTZXQgZ2xvYmFsIGNvbnN0cnVj
dG9ycwogCiAgICAgLy8gRklYTUU6IFRoZXNlIHByb3BlcnRpZXMgY291bGQgYmUgaGFuZGxlZCBi
eSBhIHN0YXRpYyBoYXNoIHRhYmxlLgogCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSwgb2JqZWN0Q29uc3RydWN0b3IsIERv
bnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZp
ZXIoZXhlYywgIkZ1bmN0aW9uIiksIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkFy
cmF5IiksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkJvb2xlYW4iKSwgYm9vbGVhbkNv
bnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihJZGVudGlmaWVyKGV4ZWMsICJTdHJpbmciKSwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRF
bnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIo
ZXhlYywgIk51bWJlciIpLCBudW1iZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiRGF0ZSIpLCBk
YXRlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlJlZ0V4cCIpLCBkKCktPnJlZ0V4cENvbnN0cnVj
dG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJ
ZGVudGlmaWVyKGV4ZWMsICJFcnJvciIpLCBkKCktPmVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVt
KTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhl
YywgIkV2YWxFcnJvciIpLCBkKCktPmV2YWxFcnJvckNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0g
ICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJS
YW5nZUVycm9yIiksIGQoKS0+cmFuZ2VFcnJvckNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJSZWZl
cmVuY2VFcnJvciIpLCBkKCktPnJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywg
IlN5bnRheEVycm9yIiksIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOwot
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAi
VHlwZUVycm9yIiksIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlVSSUVy
cm9yIiksIGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJPYmplY3QiKSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCAiRnVuY3Rpb24iKSwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJBcnJheSIpLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZXhlYywgIkJvb2xlYW4iKSwgYm9vbGVhbkNvbnN0cnVjdG9yLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlN0cmluZyIpLCBzdHJpbmdDb25zdHJ1Y3Rvciwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJOdW1iZXIiKSwgbnVtYmVyQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRGF0ZSIpLCBkYXRlQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVnRXhwIiksIGQoKS0+cmVnRXhw
Q29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRXJyb3Ii
KSwgZCgpLT5lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
ZXhlYywgIkV2YWxFcnJvciIpLCBkKCktPmV2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlJhbmdlRXJyb3IiKSwgZCgpLT5yYW5nZUVycm9y
Q29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVmZXJl
bmNlRXJyb3IiKSwgZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51
bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIElkZW50aWZpZXIoZXhlYywgIlN5bnRheEVycm9yIiksIGQoKS0+c3ludGF4RXJyb3JD
b25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJUeXBlRXJy
b3IiKSwgZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJVUklFcnJvciIpLCBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCks
IERvbnRFbnVtKTsKIAogICAgIC8vIFNldCBnbG9iYWwgdmFsdWVzLgogICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJ
ZGVudGlmaWVyKGV4ZWMsICJNYXRoIiksIG5ldyAoZXhlYykgTWF0aE9iamVjdChleGVjLCB0aGlz
LCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlKSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZp
ZXIoZXhlYywgIk1hdGgiKSwgbmV3IChleGVjKSBNYXRoT2JqZWN0KGV4ZWMsIHRoaXMsIE1hdGhP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250
RW51bSB8IERvbnREZWxldGUpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmll
cihleGVjLCAiTmFOIiksIGpzTmFOKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIkluZmluaXR5
IiksIGpzTnVtYmVyKEluZiksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgInVuZGVmaW5lZCIpLCBq
c1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJKU09OIiksIG5ldyAoZXhlYykg
SlNPTk9iamVjdCh0aGlzLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQ
cm90b3R5cGUpKSwgRG9udEVudW0gfCBEb250RGVsZXRlKQorICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8oSWRlbnRpZmllcihleGVjLCAiSlNPTiIpLCBuZXcgKGV4ZWMpIEpTT05PYmplY3QodGhp
cywgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgp
KSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSkKICAgICB9OwogCiAgICAgYWRkU3RhdGljR2xvYmFs
cyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKIAogICAg
IC8vIFNldCBnbG9iYWwgZnVuY3Rpb25zLgogCi0gICAgZCgpLT5ldmFsRnVuY3Rpb24gPSBuZXcg
KGV4ZWMpIEdsb2JhbEV2YWxGdW5jdGlvbihleGVjLCB0aGlzLCBHbG9iYWxFdmFsRnVuY3Rpb246
OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKSwgMSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmV2YWwsIGdsb2JhbEZ1bmNFdmFsLCB0aGlzKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIGQoKS0+ZXZhbEZ1bmN0aW9uLCBEb250RW51bSk7
CisgICAgZCgpLT5ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3
IChleGVjKSBHbG9iYWxFdmFsRnVuY3Rpb24oZXhlYywgdGhpcywgR2xvYmFsRXZhbEZ1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIDEsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5ldmFsLCBnbG9iYWxGdW5jRXZhbCwgdGhpcykpOworICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgZCgpLT5ldmFsRnVuY3Rpb24uZ2V0
KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDIsIElkZW50aWZpZXIoZXhlYywgInBhcnNl
SW50IiksIGdsb2JhbEZ1bmNQYXJzZUludCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEs
IElkZW50aWZpZXIoZXhlYywgInBhcnNlRmxvYXQiKSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQpLCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBu
ZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCB0aGlzLCBkKCktPnByb3RvdHlw
ZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJpc05hTiIpLCBn
bG9iYWxGdW5jSXNOYU4pLCBEb250RW51bSk7CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgc2V0UHJv
dG90eXBlKHByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCogb2xkTGFzdEluUHJvdG90eXBlQ2hh
aW4gPSBsYXN0SW5Qcm90b3R5cGVDaGFpbih0aGlzKTsKLSAgICBKU09iamVjdCogb2JqZWN0UHJv
dG90eXBlID0gZCgpLT5vYmplY3RQcm90b3R5cGU7CisgICAgSlNPYmplY3QqIG9iamVjdFByb3Rv
dHlwZSA9IGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpOwogICAgIGlmIChvbGRMYXN0SW5Qcm90
b3R5cGVDaGFpbiAhPSBvYmplY3RQcm90b3R5cGUpCiAgICAgICAgIG9sZExhc3RJblByb3RvdHlw
ZUNoYWluLT5zZXRQcm90b3R5cGUob2JqZWN0UHJvdG90eXBlKTsKIH0KQEAgLTM0OSwyOSArMzQ5
LDI5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtT
dGFjaykKICAgICBmb3IgKEhhc2hTZXQ8R2xvYmFsQ29kZUJsb2NrKj46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gY29kZUJsb2NrcygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgKCpp
dCktPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKIAotICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
IGQoKS0+ZXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgp
LT5ldmFsRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgp
LT5yYW5nZUVycm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQo
KS0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgZCgpLT5zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCBkKCktPnR5cGVFcnJvckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IpOwotCi0gICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgZCgpLT5ldmFsRnVuY3Rpb24pOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQo
KS0+Y2FsbEZ1bmN0aW9uKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPmFwcGx5
RnVuY3Rpb24pOwotCi0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5vYmplY3RQcm90
b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZnVuY3Rpb25Qcm90b3R5
cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+YXJyYXlQcm90b3R5cGUpOwot
ICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+Ym9vbGVhblByb3RvdHlwZSk7Ci0gICAg
bWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5zdHJpbmdQcm90b3R5cGUpOwotICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+bnVtYmVyUHJvdG90eXBlKTsKLSAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBkKCktPmRhdGVQcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssIGQoKS0+cmVnRXhwUHJvdG90eXBlKTsKLQotICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssIGQoKS0+bWV0aG9kQ2FsbER1bW15KTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBk
KCktPnJlZ0V4cENvbnN0cnVjdG9yLnNsb3QoKSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgZCgpLT5lcnJvckNvbnN0cnVjdG9yLnNsb3QoKSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgZCgpLT5ldmFsRXJyb3JDb25zdHJ1Y3Rvci5zbG90KCkpOworICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssIGQoKS0+cmFuZ2VFcnJvckNvbnN0cnVjdG9yLnNsb3QoKSk7CisgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLnNsb3Qo
KSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5zeW50YXhFcnJvckNvbnN0cnVj
dG9yLnNsb3QoKSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT50eXBlRXJyb3JD
b25zdHJ1Y3Rvci5zbG90KCkpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+VVJJ
RXJyb3JDb25zdHJ1Y3Rvci5zbG90KCkpOworCisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywg
ZCgpLT5ldmFsRnVuY3Rpb24uc2xvdCgpKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBk
KCktPmNhbGxGdW5jdGlvbi5zbG90KCkpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQo
KS0+YXBwbHlGdW5jdGlvbi5zbG90KCkpOworCisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywg
ZCgpLT5vYmplY3RQcm90b3R5cGUuc2xvdCgpKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNr
LCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLnNsb3QoKSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgZCgpLT5hcnJheVByb3RvdHlwZS5zbG90KCkpOworICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5zbG90KCkpOworICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssIGQoKS0+c3RyaW5nUHJvdG90eXBlLnNsb3QoKSk7CisgICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgZCgpLT5udW1iZXJQcm90b3R5cGUuc2xvdCgpKTsKKyAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBkKCktPmRhdGVQcm90b3R5cGUuc2xvdCgpKTsKKyAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBkKCktPnJlZ0V4cFByb3RvdHlwZS5zbG90KCkpOworCisgICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgZCgpLT5tZXRob2RDYWxsRHVtbXkuc2xvdCgpKTsKIAogICAgIG1h
cmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZXJyb3JTdHJ1Y3R1cmUpOwogICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssIGQoKS0+YXJndW1lbnRzU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDI0YmMyZjg4YjcxYzIz
ZjVjZTBhYTA5YTlmMWZlZGZhOTUzM2Y1ODAuLjJjMmQzNzljYjczMzk4MGU4NDMwZmZmODE5NTc5
ZTBmMzAwODliM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaApAQCAtNzMsMjYgKzczLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgLCBkZXN0cnVjdG9yKGRlc3RydWN0b3IpCiAgICAgICAgICAgICAgICAgLCByZWdpc3Rl
ckFycmF5U2l6ZSgwKQogICAgICAgICAgICAgICAgICwgZ2xvYmFsU2NvcGVDaGFpbihOb1Njb3Bl
Q2hhaW4oKSkKLSAgICAgICAgICAgICAgICAsIHJlZ0V4cENvbnN0cnVjdG9yKDApCi0gICAgICAg
ICAgICAgICAgLCBlcnJvckNvbnN0cnVjdG9yKDApCi0gICAgICAgICAgICAgICAgLCBldmFsRXJy
b3JDb25zdHJ1Y3RvcigwKQotICAgICAgICAgICAgICAgICwgcmFuZ2VFcnJvckNvbnN0cnVjdG9y
KDApCi0gICAgICAgICAgICAgICAgLCByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKDApCi0gICAg
ICAgICAgICAgICAgLCBzeW50YXhFcnJvckNvbnN0cnVjdG9yKDApCi0gICAgICAgICAgICAgICAg
LCB0eXBlRXJyb3JDb25zdHJ1Y3RvcigwKQotICAgICAgICAgICAgICAgICwgVVJJRXJyb3JDb25z
dHJ1Y3RvcigwKQotICAgICAgICAgICAgICAgICwgZXZhbEZ1bmN0aW9uKDApCi0gICAgICAgICAg
ICAgICAgLCBjYWxsRnVuY3Rpb24oMCkKLSAgICAgICAgICAgICAgICAsIGFwcGx5RnVuY3Rpb24o
MCkKLSAgICAgICAgICAgICAgICAsIG9iamVjdFByb3RvdHlwZSgwKQotICAgICAgICAgICAgICAg
ICwgZnVuY3Rpb25Qcm90b3R5cGUoMCkKLSAgICAgICAgICAgICAgICAsIGFycmF5UHJvdG90eXBl
KDApCi0gICAgICAgICAgICAgICAgLCBib29sZWFuUHJvdG90eXBlKDApCi0gICAgICAgICAgICAg
ICAgLCBzdHJpbmdQcm90b3R5cGUoMCkKLSAgICAgICAgICAgICAgICAsIG51bWJlclByb3RvdHlw
ZSgwKQotICAgICAgICAgICAgICAgICwgZGF0ZVByb3RvdHlwZSgwKQotICAgICAgICAgICAgICAg
ICwgcmVnRXhwUHJvdG90eXBlKDApCi0gICAgICAgICAgICAgICAgLCBtZXRob2RDYWxsRHVtbXko
MCkKICAgICAgICAgICAgICAgICAsIHdlYWtSYW5kb20oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJh
bmRvbU51bWJlcigpICogKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSArIDEu
MCkpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgfQpAQCAtMTA5LDI5ICs4OSwyOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFNjb3BlQ2hhaW4gZ2xvYmFsU2NvcGVDaGFpbjsK
ICAgICAgICAgICAgIFJlZ2lzdGVyIGdsb2JhbENhbGxGcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxG
cmFtZUhlYWRlclNpemVdOwogCi0gICAgICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhw
Q29uc3RydWN0b3I7Ci0gICAgICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVj
dG9yOwotICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3Ry
dWN0b3I7Ci0gICAgICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29u
c3RydWN0b3I7Ci0gICAgICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VF
cnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciogc3lu
dGF4RXJyb3JDb25zdHJ1Y3RvcjsKLSAgICAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IHR5cGVFcnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciogVVJJRXJyb3JDb25zdHJ1Y3RvcjsKLQotICAgICAgICAgICAgR2xvYmFsRXZhbEZ1bmN0aW9u
KiBldmFsRnVuY3Rpb247Ci0gICAgICAgICAgICBOYXRpdmVGdW5jdGlvbldyYXBwZXIqIGNhbGxG
dW5jdGlvbjsKLSAgICAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciogYXBwbHlGdW5jdGlv
bjsKLQotICAgICAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGU7Ci0gICAg
ICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGU7Ci0gICAgICAgICAg
ICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGU7Ci0gICAgICAgICAgICBCb29sZWFuUHJv
dG90eXBlKiBib29sZWFuUHJvdG90eXBlOwotICAgICAgICAgICAgU3RyaW5nUHJvdG90eXBlKiBz
dHJpbmdQcm90b3R5cGU7Ci0gICAgICAgICAgICBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3Rv
dHlwZTsKLSAgICAgICAgICAgIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGU7Ci0gICAgICAg
ICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZTsKLQotICAgICAgICAgICAgSlNP
YmplY3QqIG1ldGhvZENhbGxEdW1teTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxSZWdFeHBD
b25zdHJ1Y3Rvcj4gcmVnRXhwQ29uc3RydWN0b3I7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8
RXJyb3JDb25zdHJ1Y3Rvcj4gZXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIFdyaXRlQmFy
cmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBldmFsRXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAg
ICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiByYW5nZUVycm9yQ29u
c3RydWN0b3I7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cj4gcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxO
YXRpdmVFcnJvckNvbnN0cnVjdG9yPiBzeW50YXhFcnJvckNvbnN0cnVjdG9yOworICAgICAgICAg
ICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IHR5cGVFcnJvckNvbnN0cnVj
dG9yOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IFVS
SUVycm9yQ29uc3RydWN0b3I7CisKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxHbG9iYWxFdmFs
RnVuY3Rpb24+IGV2YWxGdW5jdGlvbjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVG
dW5jdGlvbldyYXBwZXI+IGNhbGxGdW5jdGlvbjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxO
YXRpdmVGdW5jdGlvbldyYXBwZXI+IGFwcGx5RnVuY3Rpb247CisKKyAgICAgICAgICAgIFdyaXRl
QmFycmllcjxPYmplY3RQcm90b3R5cGU+IG9iamVjdFByb3RvdHlwZTsKKyAgICAgICAgICAgIFdy
aXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4gZnVuY3Rpb25Qcm90b3R5cGU7CisgICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IGFycmF5UHJvdG90eXBlOworICAgICAg
ICAgICAgV3JpdGVCYXJyaWVyPEJvb2xlYW5Qcm90b3R5cGU+IGJvb2xlYW5Qcm90b3R5cGU7Cisg
ICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3RyaW5nUHJvdG90eXBlPiBzdHJpbmdQcm90b3R5cGU7
CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8TnVtYmVyUHJvdG90eXBlPiBudW1iZXJQcm90b3R5
cGU7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8RGF0ZVByb3RvdHlwZT4gZGF0ZVByb3RvdHlw
ZTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IHJlZ0V4cFByb3Rv
dHlwZTsKKworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtZXRob2RDYWxsRHVt
bXk7CiAKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGFyZ3VtZW50c1N0cnVjdHVyZTsK
ICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGFycmF5U3RydWN0dXJlOwpAQCAtMjA5LDI4
ICsxODksMjggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYWNj
ZXNzb3JzIHJldHVybiBwcmlzdGluZSB2YWx1ZXMsIGV2ZW4gaWYgYSBzY3JpcHQgCiAgICAgICAg
IC8vIHJlcGxhY2VzIHRoZSBnbG9iYWwgb2JqZWN0J3MgYXNzb2NpYXRlZCBwcm9wZXJ0eS4KIAot
ICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBkKCktPnJlZ0V4cENvbnN0cnVjdG9yOyB9CisgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9y
KiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cmVnRXhwQ29uc3RydWN0
b3IuZ2V0KCk7IH0KIAotICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gZCgpLT5lcnJvckNvbnN0cnVjdG9yOyB9Ci0gICAgICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
ZCgpLT5ldmFsRXJyb3JDb25zdHJ1Y3RvcjsgfQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnJhbmdlRXJy
b3JDb25zdHJ1Y3RvcjsgfQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVu
Y2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5yZWZlcmVuY2VFcnJvckNv
bnN0cnVjdG9yOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHN5bnRheEVycm9y
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3I7
IH0KLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdHlwZUVycm9yQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBkKCktPnR5cGVFcnJvckNvbnN0cnVjdG9yOyB9Ci0gICAgICAgIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IqIFVSSUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBkKCktPlVSSUVycm9yQ29uc3RydWN0b3I7IH0KKyAgICAgICAgRXJyb3JDb25zdHJ1Y3Rvciog
ZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXJyb3JDb25zdHJ1Y3Rvci5n
ZXQoKTsgfQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0K
KyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICAg
ICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIGQoKS0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAg
ICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBzeW50YXhFcnJvckNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gZCgpLT5zeW50YXhFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgICAg
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHR5cGVFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgp
LT5VUklFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAKLSAgICAgICAgR2xvYmFsRXZhbEZ1bmN0
aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBkKCktPmV2YWxGdW5jdGlvbjsgfQor
ICAgICAgICBHbG9iYWxFdmFsRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGQoKS0+ZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAKLSAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBv
YmplY3RQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPm9iamVjdFByb3RvdHlwZTsgfQot
ICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBkKCktPmZ1bmN0aW9uUHJvdG90eXBlOyB9Ci0gICAgICAgIEFycmF5UHJvdG90eXBlKiBh
cnJheVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+YXJyYXlQcm90b3R5cGU7IH0KLSAg
ICAgICAgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IGQoKS0+Ym9vbGVhblByb3RvdHlwZTsgfQotICAgICAgICBTdHJpbmdQcm90b3R5cGUqIHN0cmlu
Z1Byb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+c3RyaW5nUHJvdG90eXBlOyB9Ci0gICAg
ICAgIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgp
LT5udW1iZXJQcm90b3R5cGU7IH0KLSAgICAgICAgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZGF0ZVByb3RvdHlwZTsgfQotICAgICAgICBSZWdFeHBQ
cm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cmVnRXhwUHJv
dG90eXBlOyB9CisgICAgICAgIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgRnVuY3Rp
b25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5mdW5j
dGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgICAgICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmFycmF5UHJvdG90eXBlLmdldCgpOyB9CisgICAg
ICAgIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBk
KCktPmJvb2xlYW5Qcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgU3RyaW5nUHJvdG90eXBlKiBz
dHJpbmdQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPnN0cmluZ1Byb3RvdHlwZS5nZXQo
KTsgfQorICAgICAgICBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIGQoKS0+bnVtYmVyUHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIERhdGVQcm90b3R5
cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmRhdGVQcm90b3R5cGUuZ2V0
KCk7IH0KKyAgICAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBkKCktPnJlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogCi0gICAgICAgIEpTT2JqZWN0
KiBtZXRob2RDYWxsRHVtbXkoKSBjb25zdCB7IHJldHVybiBkKCktPm1ldGhvZENhbGxEdW1teTsg
fQorICAgICAgICBKU09iamVjdCogbWV0aG9kQ2FsbER1bW15KCkgY29uc3QgeyByZXR1cm4gZCgp
LT5tZXRob2RDYWxsRHVtbXkuZ2V0KCk7IH0KIAogICAgICAgICBTdHJ1Y3R1cmUqIGFyZ3VtZW50
c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+YXJndW1lbnRzU3RydWN0dXJlLmdldCgp
OyB9CiAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBk
KCktPmFycmF5U3RydWN0dXJlLmdldCgpOyB9CkBAIC00NTcsMTIgKzQzNywxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHZhbHVlczsKICAg
ICAgICAgdmFsdWVzLmFwcGVuZChzaW5nbGVJdGVtVmFsdWUpOwotICAgICAgICByZXR1cm4gbmV3
IChleGVjKSBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1
cmUoKSwgdmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUo
KSwgdmFsdWVzKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJyYXko
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJy
YXlTdHJ1Y3R1cmUoKSwgdmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJh
eShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlT
dHJ1Y3R1cmUoKSwgdmFsdWVzKTsKICAgICB9CiAKICAgICBjbGFzcyBEeW5hbWljR2xvYmFsT2Jq
ZWN0U2NvcGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cAppbmRleCA1YTgyNTBmMDc3YzYzZWRmMDM3NThkMWU1ZDNlYTUwMWM1NDVhOGFlLi5lYmVhZDdi
OTFkNDFhYWZiZjcwMTQ3MDc4NGI0NjdlNjRmZWMxMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtODQsMTIgKzg0LDEzIEBAIHByaXZhdGU6
CiAgICAgcHVibGljOgogICAgICAgICBIb2xkZXIoSlNPYmplY3QqKTsKIAotICAgICAgICBKU09i
amVjdCogb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KKyAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0LmdldCgpOyB9CisgICAgICAgIEpT
Q2VsbCoqIG9iamVjdFNsb3QoKSB7IHJldHVybiBtX29iamVjdC5zbG90KCk7IH0KIAogICAgICAg
ICBib29sIGFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmllciYsIFVTdHJpbmdCdWlsZGVyJik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU09iamVjdCogY29uc3QgbV9vYmplY3Q7CisgICAg
ICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IG1fb2JqZWN0OwogICAgICAgICBjb25zdCBib29s
IG1faXNBcnJheTsKICAgICAgICAgYm9vbCBtX2lzSlNBcnJheTsKICAgICAgICAgdW5zaWduZWQg
bV9pbmRleDsKQEAgLTI1OCw3ICsyNTksNyBAQCB2b2lkIFN0cmluZ2lmaWVyOjptYXJrQWdncmVn
YXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgIGZvciAoU3RyaW5naWZpZXIqIHN0cmluZ2lm
aWVyID0gdGhpczsgc3RyaW5naWZpZXI7IHN0cmluZ2lmaWVyID0gc3RyaW5naWZpZXItPm1fbmV4
dFN0cmluZ2lmaWVyVG9NYXJrKSB7CiAgICAgICAgIHNpemVfdCBzaXplID0gbV9ob2xkZXJTdGFj
ay5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX2hvbGRlclN0YWNrW2ldLm9iamVjdCgpKTsKKyAg
ICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9ob2xkZXJTdGFja1tpXS5vYmplY3RTbG90KCkp
OwogICAgIH0KIH0KIApAQCAtMjY5LDcgKzI3MCw3IEBAIEpTVmFsdWUgU3RyaW5naWZpZXI6OnN0
cmluZ2lmeShKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBQ
cm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwgZW1wdHlQcm9wZXJ0eU5hbWUobV9leGVjLT5nbG9i
YWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKLSAgICBvYmplY3QtPnB1
dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZp
ZXIsIHZhbHVlKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKSwg
bV9leGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCB2YWx1
ZSk7CiAKICAgICBVU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgaWYgKGFwcGVuZFN0cmluZ2lm
aWVkVmFsdWUocmVzdWx0LCB2YWx1ZSwgb2JqZWN0LCBlbXB0eVByb3BlcnR5TmFtZSkgIT0gU3Ry
aW5naWZ5U3VjY2VlZGVkKQpAQCAtNDk5LDcgKzUwMCw3IEBAIGJvb2wgU3RyaW5naWZpZXI6Okhv
bGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0cmlu
Z0J1CiAgICAgLy8gRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplLgogICAgIGlmICghbV9p
bmRleCkgewogICAgICAgICBpZiAobV9pc0FycmF5KSB7Ci0gICAgICAgICAgICBtX2lzSlNBcnJh
eSA9IGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdCk7CisgICAgICAgICAg
ICBtX2lzSlNBcnJheSA9IGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdC5n
ZXQoKSk7CiAgICAgICAgICAgICBtX3NpemUgPSBtX29iamVjdC0+Z2V0KGV4ZWMsIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTUzMiwxMCAr
NTMzLDEwIEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0
cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0cmluZ0J1CiAgICAgaWYgKG1faXNBcnJheSkgewog
ICAgICAgICAvLyBHZXQgdGhlIHZhbHVlLgogICAgICAgICBKU1ZhbHVlIHZhbHVlOwotICAgICAg
ICBpZiAobV9pc0pTQXJyYXkgJiYgYXNBcnJheShtX29iamVjdCktPmNhbkdldEluZGV4KGluZGV4
KSkKLSAgICAgICAgICAgIHZhbHVlID0gYXNBcnJheShtX29iamVjdCktPmdldEluZGV4KGluZGV4
KTsKKyAgICAgICAgaWYgKG1faXNKU0FycmF5ICYmIGFzQXJyYXkobV9vYmplY3QuZ2V0KCkpLT5j
YW5HZXRJbmRleChpbmRleCkpCisgICAgICAgICAgICB2YWx1ZSA9IGFzQXJyYXkobV9vYmplY3Qu
Z2V0KCkpLT5nZXRJbmRleChpbmRleCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QobV9vYmplY3QpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qo
bV9vYmplY3QuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFtX29iamVjdC0+Z2V0T3duUHJvcGVy
dHlTbG90KGV4ZWMsIGluZGV4LCBzbG90KSkKICAgICAgICAgICAgICAgICBzbG90LnNldFVuZGVm
aW5lZCgpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNTQ5LDEw
ICs1NTAsMTAgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVydHko
U3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBVU3RyaW5nQnUKICAgICAgICAgc3RyaW5naWZpZXIu
c3RhcnROZXdMaW5lKGJ1aWxkZXIpOwogCiAgICAgICAgIC8vIEFwcGVuZCB0aGUgc3RyaW5naWZp
ZWQgdmFsdWUuCi0gICAgICAgIHN0cmluZ2lmeVJlc3VsdCA9IHN0cmluZ2lmaWVyLmFwcGVuZFN0
cmluZ2lmaWVkVmFsdWUoYnVpbGRlciwgdmFsdWUsIG1fb2JqZWN0LCBpbmRleCk7CisgICAgICAg
IHN0cmluZ2lmeVJlc3VsdCA9IHN0cmluZ2lmaWVyLmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoYnVp
bGRlciwgdmFsdWUsIG1fb2JqZWN0LmdldCgpLCBpbmRleCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gR2V0IHRoZSB2YWx1ZS4KLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QobV9vYmplY3Qp
OworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChtX29iamVjdC5nZXQoKSk7CiAgICAgICAgIElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSA9IG1fcHJvcGVydHlOYW1lcy0+cHJvcGVydHlOYW1lVmVj
dG9yKClbaW5kZXhdOwogICAgICAgICBpZiAoIW1fb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3Qo
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
NTc0LDcgKzU3NSw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3Bl
cnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0cmluZ0J1CiAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOwogCiAgICAgICAgIC8vIEFwcGVuZCB0aGUgc3RyaW5naWZpZWQgdmFs
dWUuCi0gICAgICAgIHN0cmluZ2lmeVJlc3VsdCA9IHN0cmluZ2lmaWVyLmFwcGVuZFN0cmluZ2lm
aWVkVmFsdWUoYnVpbGRlciwgdmFsdWUsIG1fb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBzdHJpbmdpZnlSZXN1bHQgPSBzdHJpbmdpZmllci5hcHBlbmRTdHJpbmdpZmllZFZhbHVlKGJ1
aWxkZXIsIHZhbHVlLCBtX29iamVjdC5nZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICB9CiAKICAg
ICAvLyBGcm9tIHRoaXMgcG9pbnQgb24sIG5vIGFjY2VzcyB0byB0aGUgdGhpcyBwb2ludGVyIG9y
IHRvIGFueSBtZW1iZXJzLCBiZWNhdXNlIHRoZQpAQCAtNjQxLDEzICs2NDIsMTMgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIEpTVmFsdWUgYXJnc1tdID0geyBwcm9wZXJ0eSwgdW5maWx0ZXJl
ZCB9OwogICAgICAgICBBcmdMaXN0IGFyZ0xpc3QoYXJncywgMik7Ci0gICAgICAgIHJldHVybiBj
YWxsKG1fZXhlYywgbV9mdW5jdGlvbiwgbV9jYWxsVHlwZSwgbV9jYWxsRGF0YSwgdGhpc09iaiwg
YXJnTGlzdCk7CisgICAgICAgIHJldHVybiBjYWxsKG1fZXhlYywgbV9mdW5jdGlvbi5nZXQoKSwg
bV9jYWxsVHlwZSwgbV9jYWxsRGF0YSwgdGhpc09iaiwgYXJnTGlzdCk7CiAgICAgfQogCiAgICAg
ZnJpZW5kIGNsYXNzIEhvbGRlcjsKIAogICAgIEV4ZWNTdGF0ZSogbV9leGVjOwotICAgIEpTT2Jq
ZWN0KiBtX2Z1bmN0aW9uOworICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IG1fZnVuY3Rpb247
CiAgICAgQ2FsbFR5cGUgbV9jYWxsVHlwZTsKICAgICBDYWxsRGF0YSBtX2NhbGxEYXRhOwogfTsK
QEAgLTcyNiw3ICs3MjcsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNW
YWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgICAgICBhcnJheS0+ZGVsZXRlUHJvcGVy
dHkobV9leGVjLCBpbmRleFN0YWNrLmxhc3QoKSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBh
cnJheSkgJiYgYXJyYXktPmNhblNldEluZGV4KGluZGV4U3RhY2subGFzdCgpKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFycmF5LT5zZXRJbmRleChpbmRleFN0YWNrLmxhc3QoKSwgZmlsdGVy
ZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS0+c2V0SW5kZXgobV9leGVj
LT5nbG9iYWxEYXRhKCksIGluZGV4U3RhY2subGFzdCgpLCBmaWx0ZXJlZFZhbHVlKTsKICAgICAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXktPnB1dCht
X2V4ZWMsIGluZGV4U3RhY2subGFzdCgpLCBmaWx0ZXJlZFZhbHVlKTsKICAgICAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggNmVj
YzczZjhjN2JkZGMwYWU2ODM1MTJjYTU2MjY5YjdjZjZkNzQ5Yi4uN2ExZTdlMTA1Yzg4MzkyNzZi
ZTI2YTUxZTdjYmFkZmNkMmQ1NmVmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgSlNPYmplY3Q6OmRlZmluZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNP
CiAgICAgSlNWYWx1ZSBvYmplY3QgPSBnZXREaXJlY3QocHJvcGVydHlOYW1lKTsKICAgICBpZiAo
b2JqZWN0ICYmIG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7CiAgICAgICAgIEFTU0VSVChtX3N0
cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICAgICAgYXNHZXR0ZXJT
ZXR0ZXIob2JqZWN0KS0+c2V0R2V0dGVyKGdldHRlckZ1bmN0aW9uKTsKKyAgICAgICAgYXNHZXR0
ZXJTZXR0ZXIob2JqZWN0KS0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2V0dGVyRnVu
Y3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9p
ZCBKU09iamVjdDo6ZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU08KICAgICB9CiAKICAgICBtX3N0cnVjdHVyZS0+c2V0SGFzR2V0
dGVyU2V0dGVyUHJvcGVydGllcyh0cnVlKTsKLSAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihn
ZXR0ZXJGdW5jdGlvbik7CisgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBnZXR0ZXJGdW5jdGlvbik7CiB9CiAKIHZvaWQgSlNPYmplY3Q6OmRlZmluZVNldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmpl
Y3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAtMzM5LDcgKzMzOSw3
IEBAIHZvaWQgSlNPYmplY3Q6OmRlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPCiAgICAgSlNWYWx1ZSBvYmplY3QgPSBnZXREaXJl
Y3QocHJvcGVydHlOYW1lKTsKICAgICBpZiAob2JqZWN0ICYmIG9iamVjdC5pc0dldHRlclNldHRl
cigpKSB7CiAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllcygpKTsKLSAgICAgICAgYXNHZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0U2V0dGVyKHNldHRl
ckZ1bmN0aW9uKTsKKyAgICAgICAgYXNHZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0U2V0dGVyKGV4
ZWMtPmdsb2JhbERhdGEoKSwgc2V0dGVyRnVuY3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBKU09iamVjdDo6ZGVmaW5lU2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU08KICAgICB9CiAK
ICAgICBtX3N0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyh0cnVlKTsKLSAg
ICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihzZXR0ZXJGdW5jdGlvbik7CisgICAgZ2V0dGVyU2V0
dGVyLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzZXR0ZXJGdW5jdGlvbik7CiB9CiAK
IEpTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCkBAIC01MTIsMzQgKzUxMiwzNCBAQCB2b2lkIEpTT2JqZWN0Ojpy
ZW1vdmVEaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIGlmIChtX3N0
cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBt
X3N0cnVjdHVyZS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihwcm9wZXJ0eU5hbWUp
OwogICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgICAgICBwdXRE
aXJlY3RPZmZzZXQob2Zmc2V0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIHB1dFVuZGVm
aW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbihtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwogICAgIHNldFN0
cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90
Rm91bmQpCi0gICAgICAgIHB1dERpcmVjdE9mZnNldChvZmZzZXQsIGpzVW5kZWZpbmVkKCkpOwor
ICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwogfQogCiB2b2lkIEpT
T2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEludGVybmFsRnVuY3Rp
b24qIGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uKElk
ZW50aWZpZXIoZXhlYywgZnVuY3Rpb24tPm5hbWUoZXhlYykpLCBmdW5jdGlvbiwgYXR0cik7Cisg
ICAgcHV0RGlyZWN0RnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMs
IGZ1bmN0aW9uLT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOwogfQogCiB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uLCB1bnNpZ25lZCBhdHRyKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uKElkZW50aWZpZXIo
ZXhlYywgZnVuY3Rpb24tPm5hbWUoZXhlYykpLCBmdW5jdGlvbiwgYXR0cik7CisgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9u
LT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJuYWxG
dW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMp
KSwgZnVuY3Rpb24sIGF0dHIpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4
ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogZnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHIpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0
dHIpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24s
IGF0dHIpOwogfQogCiBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3Bl
cnR5U2xvdChQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUqIGxvY2F0aW9uKQpAQCAtNTk1LDEx
ICs1OTUsMTEgQEAgc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0YXJnZXQsIGNvbnN0IElkZW50aWZpZXImIHAKICAgICAgICAgICAgIEdldHRlclNl
dHRlciogYWNjZXNzb3IgPSBuZXcgKGV4ZWMpIEdldHRlclNldHRlcihleGVjKTsKICAgICAgICAg
ICAgIGlmIChvbGREZXNjcmlwdG9yLmdldHRlcigpKSB7CiAgICAgICAgICAgICAgICAgYXR0cmli
dXRlcyB8PSBHZXR0ZXI7Ci0gICAgICAgICAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcihhc09i
amVjdChvbGREZXNjcmlwdG9yLmdldHRlcigpKSk7CisgICAgICAgICAgICAgICAgYWNjZXNzb3It
PnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KG9sZERlc2NyaXB0b3IuZ2V0
dGVyKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvbGREZXNjcmlwdG9yLnNl
dHRlcigpKSB7CiAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBTZXR0ZXI7Ci0gICAgICAg
ICAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcihhc09iamVjdChvbGREZXNjcmlwdG9yLnNldHRl
cigpKSk7CisgICAgICAgICAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5nbG9iYWxE
YXRhKCksIGFzT2JqZWN0KG9sZERlc2NyaXB0b3Iuc2V0dGVyKCkpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHRhcmdldC0+cHV0V2l0aEF0dHJpYnV0ZXMoZXhlYywgcHJvcGVydHlOYW1l
LCBhY2Nlc3NvciwgYXR0cmlidXRlcyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTcy
MCw5ICs3MjAsOSBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZQogICAgIEdldHRlclNldHRlciog
Z2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYWNjZXNzb3IpOwogICAgIGlmIChjdXJyZW50
LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSkgewogICAgICAgICBpZiAoZGVzY3JpcHRvci5z
ZXR0ZXIoKSkKLSAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGFzT2JqZWN0KGRl
c2NyaXB0b3Iuc2V0dGVyKCkpKTsKKyAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVy
KGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3QoZGVzY3JpcHRvci5zZXR0ZXIoKSkpOwogICAg
ICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXIoKSkKLSAgICAgICAgICAgIGdldHRlclNldHRlci0+
c2V0R2V0dGVyKGFzT2JqZWN0KGRlc2NyaXB0b3IuZ2V0dGVyKCkpKTsKKyAgICAgICAgICAgIGdl
dHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3QoZGVzY3Jp
cHRvci5nZXR0ZXIoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgZGVsZXRl
UHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKTsKQEAgLTczMSw3ICs3MzEsNyBAQCBib29sIEpT
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZQogICAgICAgICBhdHRycyB8PSBTZXR0ZXI7CiAgICAgaWYgKGRlc2Ny
aXB0b3IuZ2V0dGVyKCkpCiAgICAgICAgIGF0dHJzIHw9IEdldHRlcjsKLSAgICBwdXREaXJlY3Qo
cHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cnMpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApp
bmRleCA4MDNhYmZkNzNiNGM0OWJlZWEzNWRlMWExMWM4ODMyYmEwNWU5NzRlLi43OWI4MGYxMmFk
MWFiYzU5MWJjYjA4YjBiYWZmZmYyZGFkMDEyMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKQEAgLTcwLDggKzcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFNldHRlciAgICAgICA9IDEgPDwgNiAgIC8vIHByb3BlcnR5IGlzIGEgc2V0dGVyCiAgICAg
fTsKIAotICAgIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUqIFByb3BlcnR5U3RvcmFnZTsKLSAgICB0
eXBlZGVmIGNvbnN0IEVuY29kZWRKU1ZhbHVlKiBDb25zdFByb3BlcnR5U3RvcmFnZTsKKyAgICB0
eXBlZGVmIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIFByb3BlcnR5U3RvcmFnZTsKKyAgICB0
eXBlZGVmIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIENvbnN0UHJvcGVydHlTdG9y
YWdlOwogCiAgICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOwpAQCAtMTc5LDIzICsxNzksMjQg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsg
cmV0dXJuICFtX3N0cnVjdHVyZS0+aXNFbXB0eSgpOyB9CiAgICAgICAgIGJvb2wgaGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJuIG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKCk7IH0KIAotICAgICAgICBib29sIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tS
ZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3Qo
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyID0gMCk7Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wg
cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAg
IGJvb2wgcHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgdm9pZCBwdXREaXJl
Y3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUs
IHVuc2lnbmVkIGF0dHIgPSAwKTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIs
IGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAgdm9p
ZCBwdXREaXJlY3RGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTQ2VsbCosIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAgICAgICAgdm9pZCBwdXRE
aXJlY3RGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQ2VsbCosIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0ciA9IDApOwogICAgICAg
ICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogZnVu
Y3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAotICAgICAgICB2b2lkIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0ciA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZh
bHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICAgdm9p
ZCBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50
ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICAgdm9p
ZCBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNG
dW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAogICAgICAgICAvLyBGYXN0
IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBvZmZzZXRzLgotICAgICAgICBKU1ZhbHVlIGdldERp
cmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUo
cHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSk7IH0KLSAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZz
ZXQoc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZz
ZXRdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQorICAgICAgICBKU1ZhbHVlIGdldERpcmVj
dE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtv
ZmZzZXRdLmdldCgpOyB9CisgICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0
b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0KKyAgICAgICAg
dm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7IHByb3BlcnR5
U3RvcmFnZSgpW29mZnNldF0uc2V0VW5kZWZpbmVkKCk7IH0KIAogICAgICAgICB2b2lkIGZpbGxH
ZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSogbG9jYXRpb24pOwogCkBA
IC0yMjUsOSArMjI2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUocHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGZs
YXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KCkKKyAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9i
amVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1f
c3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgICAg
IG1fc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShnbG9iYWxEYXRhLCB0aGlz
KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgcHV0QW5vbnltb3VzVmFsdWUodW5zaWduZWQg
aW5kZXgsIEpTVmFsdWUgdmFsdWUpCkBAIC0yNjcsOCArMjY4LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oJnByb3BlcnR5
U3RvcmFnZSgpW29mZnNldF0pOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBwdXREaXJlY3RJ
bnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBK
U0NlbGwqKTsKLSAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAg
Ym9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwg
UHV0UHJvcGVydHlTbG90JiwgSlNDZWxsKik7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJu
YWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgICAgICB2b2lkIHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwog
CiAgICAgICAgIGJvb2wgaW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC0yNzgsNyArMjc5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgUHJv
cGVydHlTdG9yYWdlIG1fZXh0ZXJuYWxTdG9yYWdlOwotICAgICAgICAgICAgRW5jb2RlZEpTVmFs
dWUgbV9pbmxpbmVTdG9yYWdlW2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CisgICAgICAgICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHldOwogICAgICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1faW5oZXJp
dG9ySUQ7CkBAIC00NTAsNyArNDUxLDcgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldChF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVy
bmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qs
IEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbikKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVj
a1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlv
bikKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkg
fHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CkBAIC00NjcsNyArNDY4
LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgaWYgKGNoZWNrUmVhZE9u
bHkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIHB1dERpcmVjdE9mZnNldChvZmZzZXQsIHZhbHVlKTsK
KyAgICAgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsK
ICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZSBvYmplY3RzIHN0cnVjdHVyZSBvbmx5
IGhhcyBhIHNwZWNpZmljIHZhbHVlIHNldCBpZiBwcmV2aW91c2x5IHRoZXJlCiAgICAgICAgICAg
ICAvLyBoYWQgYmVlbiBvbmUgc2V0LCBhbmQgaWYgdGhlIG5ldyB2YWx1ZSBiZWluZyBzcGVjaWZp
ZWQgaXMgdGhlIHNhbWUgKG90aGVyd2lzZSB3ZSB3b3VsZAogICAgICAgICAgICAgLy8gaGF2ZSBk
ZXNwZWNpZmllZCwgYWJvdmUpLiAgU28sIGlmIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uIGlzIG5v
dCBzZXQsIG9yIGlmIHRoZSBuZXcKQEAgLTQ4NSw3ICs0ODYsNyBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlCiAgICAgICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNp
dHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKIAogICAgICAgICBB
U1NFUlQob2Zmc2V0IDwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwot
ICAgICAgICBwdXREaXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1ZSk7CisgICAgICAgIHB1dERpcmVj
dE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gU2VlIGNvbW1l
bnQgb24gc2V0TmV3UHJvcGVydHkgY2FsbCBiZWxvdy4KICAgICAgICAgaWYgKCFzcGVjaWZpY0Z1
bmN0aW9uKQogICAgICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwpA
QCAtNTAwLDcgKzUwMSw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5h
bChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKIAogICAgICAgICBBU1NF
UlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICAg
ICAgc2V0U3RydWN0dXJlKHN0cnVjdHVyZS5yZWxlYXNlKCkpOwotICAgICAgICBwdXREaXJlY3RP
ZmZzZXQob2Zmc2V0LCB2YWx1ZSk7CisgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRh
LCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyBwcm9wZXJ0eTsgdHJh
bnNpdGlvbnMgd2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50bHkgY2FjaGFibGUs
CiAgICAgICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUgc3RhdGUuCiAg
ICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKQEAgLTUyNyw3ICs1MjgsNyBAQCBpbmxpbmUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIGlmIChjdXJyZW50U3BlY2lmaWNGdW5jdGlvbikgewog
ICAgICAgICAgICAgLy8gY2FzZSAoMSkgRG8gdGhlIHB1dCwgdGhlbiByZXR1cm4gbGVhdmluZyB0
aGUgc2xvdCB1bmNhY2hhYmxlLgogICAgICAgICAgICAgaWYgKHNwZWNpZmljRnVuY3Rpb24gPT0g
Y3VycmVudFNwZWNpZmljRnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBwdXREaXJlY3RPZmZz
ZXQob2Zmc2V0LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2Jh
bERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgLy8gY2FzZSAoMikgRGVzcGVjaWZ5LCBmYWxsIHRocm91
Z2ggdG8gKDMpLgpAQCAtNTM2LDcgKzUzNyw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKIAog
ICAgICAgICAvLyBjYXNlICgzKSBzZXQgdGhlIHNsb3QsIGRvIHRoZSBwdXQsIHJldHVybi4KICAg
ICAgICAgc2xvdC5zZXRFeGlzdGluZ1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7Ci0gICAgICAgIHB1
dERpcmVjdE9mZnNldChvZmZzZXQsIHZhbHVlKTsKKyAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGds
b2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTU1Nyw3ICs1NTgsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJu
YWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAKICAgICBBU1NFUlQo
b2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICBzZXRT
dHJ1Y3R1cmUoc3RydWN0dXJlLnJlbGVhc2UoKSk7Ci0gICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNl
dCwgdmFsdWUpOworICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVl
KTsKICAgICAvLyBUaGlzIGlzIGEgbmV3IHByb3BlcnR5OyB0cmFuc2l0aW9ucyB3aXRoIHNwZWNp
ZmljIHZhbHVlcyBhcmUgbm90IGN1cnJlbnRseSBjYWNoYWJsZSwKICAgICAvLyBzbyBsZWF2ZSB0
aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgogICAgIGlmICghc3BlY2lmaWNGdW5jdGlv
bikKQEAgLTU3MCw2MSArNTcxLDYxIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJ
bnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAgICAgQVNT
RVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAo
dmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogCi0gICAgcmV0dXJuIHB1dERpcmVjdEludGVy
bmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3Qs
IGdldEpTRnVuY3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUpKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0
SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgY2hl
Y2tSZWFkT25seSwgc2xvdCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwogfQog
CiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAg
cHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgZmFsc2Us
IHNsb3QsIGdldEpTRnVuY3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUpKTsKKyAgICBwdXREaXJlY3RJ
bnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxz
ZSwgc2xvdCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwogfQogCi1pbmxpbmUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCgh
SGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlz
KSk7CiAKLSAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwg
YXR0cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgMCk7CisgICAgcmV0dXJuIHB1dERpcmVj
dEludGVybmFsKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNo
ZWNrUmVhZE9ubHksIHNsb3QsIDApOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7
Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywg
ZmFsc2UsIHNsb3QsIDApOworICAgIHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBzbG90LCAwKTsKIH0KIAotaW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
LSAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgZmFs
c2UsIHNsb3QsIDApOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBmYWxzZSwgc2xvdCwgMCk7CiB9CiAKLWlubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25s
eSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNr
UmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBwdXREaXJlY3RJbnRlcm5h
bChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCB2
YWx1ZSk7CisgICAgcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgdmFsdWUpOwogfQogCi1pbmxp
bmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyKQoraW5saW5lIHZvaWQgSlNP
YmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyKQog
ewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAgIHB1dERpcmVjdEludGVybmFsKHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHIsIGZhbHNlLCBzbG90LCB2YWx1ZSk7CisgICAgcHV0RGlyZWN0
SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwgZmFsc2UsIHNs
b3QsIHZhbHVlKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAg
ICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCk7CiAgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgMCk7CiAgICAgaWYgKGN1
cnJlbnRDYXBhY2l0eSAhPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkK
ICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgcHV0RGlyZWN0T2Zmc2V0KG9m
ZnNldCwgdmFsdWUpOworICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZh
bHVlKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoraW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCiB7CiAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRk
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHZhbHVl
KTsKICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpKQogICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2Fw
YWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBwdXRE
aXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1ZSk7CisgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERh
dGEsIG9mZnNldCwgdmFsdWUpOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dHJhbnNpdGlv
blRvKFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQpAQCAtNzAzLDcgKzcwNCw3IEBAIGlubGluZSB2
b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1CiBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXREaXJlY3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQoaXNDZWxsKCkgJiYgaXNPYmplY3Qo
KSk7Ci0gICAgaWYgKCFhc09iamVjdChhc0NlbGwoKSktPnB1dERpcmVjdChwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghYXNPYmplY3Qo
YXNDZWxsKCkpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogfQogCkBAIC03
MjUsNyArNzI2LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0OjphbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZUlubGluZShzaXplX3Qgb2xkU2l6ZSwgc2l6ZV8KICAgICBib29sIHdhc0lubGlu
ZSA9IChvbGRTaXplID09IEpTT2JqZWN0OjppbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOwogCiAgICAg
UHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9ICh3YXNJbmxpbmUgPyBtX2lubGlu
ZVN0b3JhZ2UgOiBtX2V4dGVybmFsU3RvcmFnZSk7Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1By
b3BlcnR5U3RvcmFnZSA9IG5ldyBFbmNvZGVkSlNWYWx1ZVtuZXdTaXplXTsKKyAgICBQcm9wZXJ0
eVN0b3JhZ2UgbmV3UHJvcGVydHlTdG9yYWdlID0gbmV3IFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj5bbmV3U2l6ZV07CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2xkU2l6ZTsgKytp
KQogICAgICAgIG5ld1Byb3BlcnR5U3RvcmFnZVtpXSA9IG9sZFByb3BlcnR5U3RvcmFnZVtpXTsK
QEAgLTc0MCw4ICs3NDEsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6Om1hcmtDaGls
ZHJlbkRpcmVjdChNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBKU0NlbGw6Om1hcmtDaGls
ZHJlbihtYXJrU3RhY2spOwogCi0gICAgbWFya1N0YWNrLmFwcGVuZChwcm90b3R5cGUoKSk7Ci0g
ICAgCisgICAgbWFya1N0YWNrLmFwcGVuZChtX3N0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlU2xv
dCgpKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwog
ICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXpl
KCk7CiAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhyZWludGVycHJldF9jYXN0PEpTVmFsdWUq
PihzdG9yYWdlKSwgc3RvcmFnZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAppbmRleCA3YWIxZDFjMTA3NDRmNTAz
YmZhODFkMTc5YTdiM2Y0YjNkYjA2NDQzLi5hNmIxZTIzZGFiNTUzZDNmNWFkOGE5NGRjZjE2MTBi
MThjY2IzNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
YXRpY1Njb3BlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0YXRpY1Njb3BlT2JqZWN0LmNwcApAQCAtMzQsNyArMzQsNyBAQCBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKEpTU3RhdGljU2NvcGVPYmplY3QpOwogdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0
OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNWYXJpYWJsZU9i
amVjdDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0gICAgbWFya1N0YWNrLmFwcGVuZChkKCkt
PnJlZ2lzdGVyU3RvcmUuanNWYWx1ZSgpKTsKKyAgICBtYXJrU3RhY2suYXBwZW5kKGQoKS0+cmVn
aXN0ZXJTdG9yZS5qc1ZhbHVlU2xvdCgpKTsKIH0KIAogSlNPYmplY3QqIEpTU3RhdGljU2NvcGVP
YmplY3Q6OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5kZXggYmEyODEzOWE0Y2FlZDIyMmJjMWNi
YmY4NGI0YWZjM2E3NGI4MmE5YS4uODQ4YzQzMWFjMGM0YjQwZmQ0NmM3Zjc0ODFlNDk3MTM3Mjhk
N2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApAQCAt
MjU1LDcgKzI1NSw3IEBAIFVTdHJpbmcgSlNTdHJpbmc6OnRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKIAogaW5saW5lIFN0cmluZ09iamVjdCogU3RyaW5nT2JqZWN0OjpjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5nKQogewotICAgIHJldHVybiBuZXcgKGV4ZWMp
IFN0cmluZ09iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ09iamVjdFN0
cnVjdHVyZSgpLCBzdHJpbmcpOworICAgIHJldHVybiBuZXcgKGV4ZWMpIFN0cmluZ09iamVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nT2Jq
ZWN0U3RydWN0dXJlKCksIHN0cmluZyk7CiB9CiAKIEpTT2JqZWN0KiBKU1N0cmluZzo6dG9PYmpl
Y3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5oCmluZGV4IGNhZDk2NjI4MWRiN2NkN2IwZTY2N2E2OWI5MGQyZGJjNGQ4ZjdjZTYuLmE2
NGUxMDk1MmNmMzFjZGI5N2UyOTFiMWYzNTllMDYwNjdlZTRjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhbHVlLmgKQEAgLTIzLDYgKzIzLDggQEAKICNpZm5kZWYgSlNWYWx1
ZV9oCiAjZGVmaW5lIEpTVmFsdWVfaAogCisjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCisKICNp
bmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkZGVmLmg+IC8vIGZvciBzaXplX3QKICNpbmNs
dWRlIDxzdGRpbnQuaD4KQEAgLTIxMiw2ICsyMTQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRp
ZgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUoRGVw
cmVjYXRlZFB0cjxUPik7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdyaXRl
QmFycmllcjxUPik7CisKICAgICAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBI
YXNoVGFibGVEZWxldGVkVmFsdWUgfTsKICAgICAgICAgSlNWYWx1ZShIYXNoVGFibGVEZWxldGVk
VmFsdWVUYWcpOwogCkBAIC03NjQsNiArNzY5LDYwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0K
ICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCisgICAgdHlwZWRlZiBlbnVtIHsgfSBVbmtu
b3duOworICAgIAorICAgIHRlbXBsYXRlIDw+IGNsYXNzIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiwgY29uc3Qg
SlNDZWxsKiwgSlNWYWx1ZSB2YWx1ZSkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVl
KTsgfQorICAgICAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIoSlNWYWx1ZSB2YWx1ZSkg
eyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQorICAgICAgICBKU1ZhbHVlIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX3ZhbHVlKTsgfQorICAgICAgICB2
b2lkIGNsZWFyKCkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7IH0KKyAg
ICAgICAgdm9pZCBzZXRVbmRlZmluZWQoKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7IH0KKyAgICAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIGdl
dCgpLmlzTnVtYmVyKCk7IH0KKyAgICAgICAgSlNWYWx1ZSogc2xvdCgpCisgICAgICAgIHsgCisg
ICAgICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUqIHY7Cisg
ICAgICAgICAgICAgICAgSlNWYWx1ZSogc2xvdDsKKyAgICAgICAgICAgIH0gdTsKKyAgICAgICAg
ICAgIHUudiA9ICZtX3ZhbHVlOworICAgICAgICAgICAgcmV0dXJuIHUuc2xvdDsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgdHlwZWRlZiBKU1ZhbHVlIChXcml0ZUJhcnJpZXJCYXNlOjoq
VW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5
cGUqKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZp
ZWRCb29sVHlwZSo+KDEpIDogMDsgfQorICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuICFtX3ZhbHVlOyB9IAorICAgICAgICAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEVu
Y29kZWRKU1ZhbHVlIG1fdmFsdWU7CisgICAgfTsKKworICAgIHRlbXBsYXRlIDw+IGNsYXNzIFdy
aXRlQmFycmllcjxVbmtub3duPiA6IHB1YmxpYyBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IHsK
KyAgICBwdWJsaWM6CisgICAgICAgIFdyaXRlQmFycmllcigpIHsgbV92YWx1ZSA9IEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpOyB9CisgICAgICAgIFdyaXRlQmFycmllcihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IEpTQ2VsbCogb3duZXIsIEpTVmFsdWUgdmFsdWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHNldChnbG9iYWxEYXRhLCBvd25lciwgdmFsdWUpOworICAgICAgICB9
CisgICAgfTsKKworICAgIHRlbXBsYXRlIDw+IGNsYXNzIERlcHJlY2F0ZWRQdHI8VW5rbm93bj4g
eworICAgIHB1YmxpYzoKKyAgICAgICAgRGVwcmVjYXRlZFB0cigpIHsgfQorICAgICAgICBEZXBy
ZWNhdGVkUHRyKEpTVmFsdWUgdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9CisgICAgICAgIGNv
bnN0IEpTVmFsdWUmIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICAgICAgY29u
c3QgSlNWYWx1ZSogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gJm1fdmFsdWU7IH0KKyAgICAg
ICAgY29uc3QgSlNWYWx1ZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZtX3ZhbHVlOyB9
CisgICAgICAgIAorICAgICAgICBKU1ZhbHVlKiBzbG90KCkgeyByZXR1cm4gJm1fdmFsdWU7IH0K
KworICAgICAgICB0eXBlZGVmIEpTVmFsdWUgKERlcHJlY2F0ZWRQdHI6OipVbnNwZWNpZmllZEJv
b2xUeXBlKTsKKyAgICAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlID8gcmVpbnRlcnByZXRfY2FzdDxVbnNwZWNpZmllZEJvb2xUeXBlKj4o
MSkgOiAwOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fdmFs
dWU7IH0KKyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwor
ICAgIH07CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTVmFsdWVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKaW5kZXgg
MmMzOWY1YzIzODQ5ZmVlMmFmZmExOTRkNGM2ZWU1OTM5OWFiYTc0MS4uN2EwNGI2YWZmOWE1Mzlm
YjlkMTI5MTU5YmNkYjAxN2YyMjY5YjAzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwCkBAIC0zMCw3ICszMCw3IEBAIHZvaWQgSlNX
cmFwcGVyT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAg
SlNPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogICAgIGlmIChtX2ludGVybmFsVmFs
dWUpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9pbnRlcm5hbFZhbHVlKTsKKyAgICAgICAg
bWFya1N0YWNrLmFwcGVuZChtX2ludGVybmFsVmFsdWUuc2xvdCgpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dy
YXBwZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9i
amVjdC5oCmluZGV4IGYxOWNkMzBjODUwNDk0MDlhMzM4Y2NlMjdmNjE3ZTg5OWVkZTM0MGIuLjRl
YWYyYzA0MDllMzc4ZjU5ZjQ3OGI3OTdlMzUwOTU3MWFlYTg5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCkBAIC0zMyw4ICszMyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTVmFsdWUg
aW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxWYWx1ZTsgfQotICAgICAg
ICB2b2lkIHNldEludGVybmFsVmFsdWUoSlNWYWx1ZSk7CisgICAgICAgIEpTVmFsdWUgaW50ZXJu
YWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxWYWx1ZS5nZXQoKTsgfQorICAgICAg
ICB2b2lkIHNldEludGVybmFsVmFsdWUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSk7CiAKICAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSBw
cm90b3R5cGUpIAogICAgICAgICB7IApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFj
ayYpOwogICAgICAgICAKLSAgICAgICAgSlNWYWx1ZSBtX2ludGVybmFsVmFsdWU7CisgICAgICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsKIAogICAgIGlu
bGluZSBKU1dyYXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSkKQEAgLTU2LDExICs1NiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgcHV0QW5vbnltb3VzVmFsdWUoMCwganNOdWxsKCkpOwogICAgIH0KIAotICAgIGlu
bGluZSB2b2lkIEpTV3JhcHBlck9iamVjdDo6c2V0SW50ZXJuYWxWYWx1ZShKU1ZhbHVlIHZhbHVl
KQorICAgIGlubGluZSB2b2lkIEpTV3JhcHBlck9iamVjdDo6c2V0SW50ZXJuYWxWYWx1ZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NF
UlQodmFsdWUpOwogICAgICAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkpOwotICAgICAgICBt
X2ludGVybmFsVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgbV9pbnRlcm5hbFZhbHVlLnNldChnbG9i
YWxEYXRhLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgIHB1dEFub255bW91c1ZhbHVlKDAsIHZhbHVl
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xp
dGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBh
cnNlci5jcHAKaW5kZXggZGY4N2U3Zjg2YjU2ZWQwNTcxODkyMGFkMDI2ZTFlNWMyYjY3ZmUyOS4u
YmMyZTczNjI0Njk1ODNiZGJmNWMzNTA0NGUxMGM3ZGQ3YTgxNDY1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTM3Myw3ICszNzMs
NyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0
ZSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRG9QYXJzZU9iamVjdEVuZEV4cHJl
c3Npb246CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXNPYmplY3Qob2JqZWN0U3Rh
Y2subGFzdCgpKS0+cHV0RGlyZWN0KGlkZW50aWZpZXJTdGFjay5sYXN0KCksIGxhc3RWYWx1ZSk7
CisgICAgICAgICAgICAgICAgYXNPYmplY3Qob2JqZWN0U3RhY2subGFzdCgpKS0+cHV0RGlyZWN0
KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyU3RhY2subGFzdCgpLCBsYXN0VmFsdWUp
OwogICAgICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSA9PSBUb2tDb21tYSkKICAg
ICAgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlT2JqZWN0U3RhcnRFeHByZXNzaW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggZGFjMWM5NGRjNWViMzJj
YTYwZDc4ZTc2NmU4N2FiMjgxN2JhZGIyMy4uMTNlYTkyMzAzMDU5ZDVlOTZjNzcxM2RiNmEwNTc2
MGFjYzJiMTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICNlbmRpZgogICAgICAgICAg
ICAgZnVuY3Rpb24gPSBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZW50
cnktPmZ1bmN0aW9uTGVuZ3RoKCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uKCkpOwog
Ci0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEZ1bmN0aW9uKHByb3BlcnR5TmFtZSwgZnVuY3Rp
b24sIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3RGdW5j
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGVudHJ5LT5h
dHRyaWJ1dGVzKCkpOwogICAgICAgICBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERpcmVjdExvY2F0
aW9uKHByb3BlcnR5TmFtZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5oCmluZGV4IDBkNmQ5OGZiNGFjNDQzMzJjMjk2YjE3Y2VkZTEwOGM5YTA2ZTYzYzYuLjQz
MTg0ZTU2ZGNhYWVkNWU1NGEzZGFhYTMxNjVlN2JjNDVmOWEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0zMTIsOSArMzEyLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeyAvLyBmdW5j
dGlvbjogcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5CiAgICAgICAgICAgICBpZiAoTElLRUxZKHZh
bHVlLmlzQ2VsbCgpKSkKLSAgICAgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3RGdW5jdGlv
bihwcm9wZXJ0eU5hbWUsIHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICB0aGlzT2Jq
LT5wdXREaXJlY3RGdW5jdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFs
dWUuYXNDZWxsKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXNPYmot
PnB1dERpcmVjdChwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICB0aGlzT2Jq
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAg
ICAgICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpCiAgICAg
ICAgICAgICBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKShleGVjLCB0aGlzT2JqLCB2YWx1ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKaW5kZXggYzNjYjRmMmQ3
MmE4NGRmZDY1NWRjYzk4YmU1NGE3NjVlZTU4ODllNS4uYzdjMDE1MTc1YWEzZDI4YWZhZWI0NTNh
ZmQ0N2VlMjdmYWI0MTc2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0
YWNrLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgTWFya1N0YWNrX2gKIAogI2luY2x1ZGUg
IkpTVmFsdWUuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL09TQWxs
b2NhdG9yLmg+CkBAIC01MCw4ICs1MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKEpTVmFsdWUpOwot
ICAgICAgICB2b2lkIGFwcGVuZChKU0NlbGwqKTsKKyAgICAgICAgdm9pZCBhcHBlbmQoSlNWYWx1
ZSopOworICAgICAgICB2b2lkIGFwcGVuZChKU0NlbGwqKik7CiAgICAgICAgIAogICAgICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kVmFsdWVzKFJlZ2lzdGVyKiB2YWx1ZXMsIHNpemVfdCBj
b3VudCwgTWFya1NldFByb3BlcnRpZXMgcHJvcGVydGllcyA9IE5vTnVsbFZhbHVlcykKICAgICAg
ICAgewpAQCAtNzQsNiArNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgdm9pZCBhcHBlbmRDZWxsKEpTQ2VsbCopOwogICAgICAgICB2b2lk
IG1hcmtDaGlsZHJlbihKU0NlbGwqKTsKIAogICAgICAgICBzdHJ1Y3QgTWFya1NldCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDA4MGQ3ZDIx
ZTkxNGU0MjhhMzUwYzg0MTIwM2ZjNGExOTg2ZTljMDguLmM3OTMxNmJlYTZjOTUwNzEwNTliZjZh
YzZhYWY5MjdkNTZjNjMzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhPYmplY3QuY3BwCkBAIC04OSwxNCArODksMTQgQEAgY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmpl
Y3Q6OmluZm8gPSB7ICJNYXRoIiwgMCwgMCwgRXhlY1N0YXRlOjptYXRoVGFibGUgfTsKIE1hdGhP
YmplY3Q6Ok1hdGhPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKICAgICA6IEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKLSAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJFIiksIGpzTnVtYmVy
KGV4cCgxLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkxOMiIpLCBqc051bWJlcihs
b2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJMTjEwIiksIGpzTnVtYmVyKGxv
ZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJMT0cyRSIpLCBqc051bWJlcigx
LjAgLyBsb2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJMT0cxMEUiKSwganNO
dW1iZXIoMS4wIC8gbG9nKDEwLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlBJIiks
IGpzTnVtYmVyKHBpRG91YmxlKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwot
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlNRUlQxXzIi
KSwganNOdW1iZXIoc3FydCgwLjUpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlNRUlQy
IiksIGpzTnVtYmVyKHNxcnQoMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElk
ZW50aWZpZXIoZXhlYywgIkUiKSwganNOdW1iZXIoZXhwKDEuMCkpLCBEb250RGVsZXRlIHwgRG9u
dEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJMTjIiKSwganNOdW1iZXIobG9nKDIuMCkp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJMTjEwIiks
IGpzTnVtYmVyKGxvZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgIkxPRzJFIiksIGpzTnVtYmVyKDEuMCAvIGxvZygyLjApKSwgRG9udERlbGV0
ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiTE9HMTBFIiksIGpzTnVtYmVy
KDEuMCAvIGxvZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoZXhlYywgIlBJIiksIGpzTnVtYmVyKHBpRG91YmxlKSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiU1FSVDFfMiIpLCBqc051bWJlcihzcXJ0KDAuNSkp
LCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJTUVJUMiIp
LCBqc051bWJlcihzcXJ0KDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7
CiB9CiAKIC8vIEVDTUEgMTUuOApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBlYjUwOGViZDNhODhhYmVk
ZDYyZWFmOTQzYmYxN2VlNDJhZTAwZDE0Li40MjFlZWNmZDBkYmRjNzlmY2UyZWIwNDA1NWJkODQx
ODEzOWUwMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMzcsOCArMzcsOCBAQCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqCiB7CiAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGVTdHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlLCB0aGlzKTsKIAotICAgIHB1dERpcmVjdChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQotICAgIHB1dERpcmVjdChleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIG1fZXJyb3JTdHJ1Y3R1cmUgPSBF
cnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUocHJvdG90eXBlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3Bw
CmluZGV4IDU0MDIyMGE2MjJjNmI3ZjZkNDRkMmI2YjZlZmRhOWI0YTQ3OTUyZGEuLjRlMTAyNjhl
ZWIyZmUwZTZiNzUwZTBhZGQxNDZmN2NkNzI2ZGJlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKQEAgLTM0LDkg
KzM0LDkgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOYXRpdmVFcnJvclByb3RvdHlwZSk7
CiBOYXRpdmVFcnJvclByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UsIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewotICAgIHB1dERpcmVjdChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubmFtZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCAwKTsKLSAg
ICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UsIGpzU3RyaW5nKGV4ZWMs
IG5hbWVBbmRNZXNzYWdlKSwgMCk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNTdHJpbmcoZXhl
YywgbmFtZUFuZE1lc3NhZ2UpLCAwKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubWVzc2FnZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1l
c3NhZ2UpLCAwKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IDUzNjljYTBjZmRkMmFiMDRiNDA2MDc2OWMyMjJm
MjE2YmYzOGE3MTguLjIzOGRjOTNjMzY2M2U1MzZhOTJiNmY4NDFiNzczYWUwNjhkOWMxZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTU4LDEwICs1OCwxMCBAQCBOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVtYmVyQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIDog
SW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgSWRlbnRpZmllcihleGVjLCBudW1iZXJQcm90b3R5cGUtPmluZm8uY2xhc3NOYW1lKSkK
IHsKICAgICAvLyBOdW1iZXIuUHJvdG90eXBlCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgbnVtYmVyUHJvdG90eXBlLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBudW1iZXJQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAog
ICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSks
IFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiB9CiAK
IGJvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpA
QCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFdpdGhOdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4CiB7CiAgICAgTnVtYmVy
T2JqZWN0KiBvYmplY3QgPSBuZXcgKGV4ZWMpIE51bWJlck9iamVjdChleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPm51bWJlck9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBkb3VibGUgbiA9IGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA/IGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpIDog
MDsKLSAgICBvYmplY3QtPnNldEludGVybmFsVmFsdWUoanNOdW1iZXIobikpOworICAgIG9iamVj
dC0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVtYmVyKG4pKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuY3BwCmluZGV4IDFhN2U0NGNjZWRmZDkyNWVi
MWE1OTQxYTkzZDE3NzVlMjFkMmYyYzkuLjU2OWRiZWRiNjY5ODA4MTM2YzUwNWM2NjIwMDNjMjE3
YTRhOGU0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2Jq
ZWN0LmNwcApAQCAtNDQsNyArNDQsNyBAQCBKU1ZhbHVlIE51bWJlck9iamVjdDo6Z2V0SlNOdW1i
ZXIoKQogTnVtYmVyT2JqZWN0KiBjb25zdHJ1Y3ROdW1iZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIG51bWJlcikKIHsKICAgICBOdW1iZXJPYmplY3QqIG9iamVjdCA9IG5ldyAoZXhlYykgTnVt
YmVyT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bnVtYmVyT2JqZWN0U3RydWN0
dXJlKCkpOwotICAgIG9iamVjdC0+c2V0SW50ZXJuYWxWYWx1ZShudW1iZXIpOworICAgIG9iamVj
dC0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIG51bWJlcik7CiAgICAgcmV0
dXJuIG9iamVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAKaW5kZXggMGI4NmMwMDRhYTBhMDZlODM0Mjk0ZGE2NmZkZmM3ZmNm
ZDU3YWI3ZS4uMzU1MDg5NDcwOWQyOGI3ODA0ODllNWEwNzJjNWU5MjlmNjkyYzZhZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvRnVuY1RvUHJlY2lzaW9uKEV4ZWNTdGF0ZSopOwogTnVtYmVyUHJvdG90eXBlOjpOdW1i
ZXJQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90
b3R5cGVGdW5jdGlvblN0cnVjdHVyZSkKICAgICA6IE51bWJlck9iamVjdChzdHJ1Y3R1cmUpCiB7
Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShqc051bWJlcigwKSk7CisgICAgc2V0SW50ZXJuYWxWYWx1
ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVtYmVyKDApKTsKIAogICAgIC8vIFRoZSBjb25zdHJ1
Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBOdW1iZXJDb25zdHJ1Y3RvciBoYXMgYmVl
biBjb25zdHJ1Y3RlZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggY2EzZGNkN2MyZDUzOTNjYTg4ZTE1ZDQxYjljM2Rl
NGRkYzdmMjJlZS4uZjMxZGE2N2U1ZjE3ZDc1NzJmOWM1MjhlMjIxMzdmYjRmYjkyMjI2OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcApAQCAtNDcsMTAgKzQ3LDEwIEBAIE9iamVjdENvbnN0cnVjdG9yOjpPYmplY3RDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiA6IEludGVy
bmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIpKQogewogICAgIC8vIEVDTUEgMTUuMi4zLjEKLSAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90
eXBlLCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIAogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9y
IGNvbnN0cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250
RGVsZXRlKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiAgICAgCiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVj
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZ2V0UHJvdG90eXBlT2YsIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBl
T2YpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAyLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVz
Y3JpcHRvciksIERvbnRFbnVtKTsKQEAgLTExNywxNSArMTE3LDE1IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlCiAKICAgICBKU09iamVjdCogZGVzY3JpcHRpb24gPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjKTsKICAgICBpZiAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkg
ewotICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52
YWx1ZSwgZGVzY3JpcHRvci52YWx1ZSgpID8gZGVzY3JpcHRvci52YWx1ZSgpIDoganNVbmRlZmlu
ZWQoKSwgMCk7Ci0gICAgICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlO
YW1lcygpLndyaXRhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRvci53cml0YWJsZSgpKSwgMCk7Cisg
ICAgICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkudmFsdWUsIGRlc2NyaXB0b3IudmFsdWUoKSA/IGRlc2NyaXB0b3IudmFs
dWUoKSA6IGpzVW5kZWZpbmVkKCksIDApOworICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCBqc0Jv
b2xlYW4oZGVzY3JpcHRvci53cml0YWJsZSgpKSwgMCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
ZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0LCBkZXNjcmlw
dG9yLmdldHRlcigpID8gZGVzY3JpcHRvci5nZXR0ZXIoKSA6IGpzVW5kZWZpbmVkKCksIDApOwot
ICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5zZXQs
IGRlc2NyaXB0b3Iuc2V0dGVyKCkgPyBkZXNjcmlwdG9yLnNldHRlcigpIDoganNVbmRlZmluZWQo
KSwgMCk7CisgICAgICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0LCBkZXNjcmlwdG9yLmdldHRlcigpID8gZGVzY3Jp
cHRvci5nZXR0ZXIoKSA6IGpzVW5kZWZpbmVkKCksIDApOworICAgICAgICBkZXNjcmlwdGlvbi0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnNldCwg
ZGVzY3JpcHRvci5zZXR0ZXIoKSA/IGRlc2NyaXB0b3Iuc2V0dGVyKCkgOiBqc1VuZGVmaW5lZCgp
LCAwKTsKICAgICB9CiAgICAgCi0gICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSwganNCb29sZWFuKGRlc2NyaXB0b3IuZW51bWVyYWJsZSgp
KSwgMCk7Ci0gICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y29uZmlndXJhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSksIDApOwor
ICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSwganNCb29sZWFuKGRlc2NyaXB0b3IuZW51bWVyYWJsZSgp
KSwgMCk7CisgICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmNv
bmZpZ3VyYWJsZSgpKSwgMCk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlc2NyaXB0
aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRl
eCAxMjUyMzQ1MzcxNDE1MDJhNWJmMzY1YzcxNzhkMWU3OWI0YWIwMjcyLi42ZTg0MTIzOWFlZDc2
NzY5ZDE4N2Q3NDMxOWFmYmI2YWYxN2Y5ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC00MjksNyArNDI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29w
LCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0
cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KICAgICAgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUo
KS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAgICAgICBhc09iamVjdChjZWxsKS0+Zmxh
dHRlbkRpY3Rpb25hcnlPYmplY3QoKTsKKyAgICAgICAgICAgICAgICBhc09iamVjdChjZWxsKS0+
ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwogICAgICAg
ICAgICAgICAgIGlmIChzbG90QmFzZSA9PSBjZWxsKQogICAgICAgICAgICAgICAgICAgICBzbG90
T2Zmc2V0ID0gY2VsbC0+c3RydWN0dXJlKCktPmdldChwcm9wZXJ0eU5hbWUpOyAKICAgICAgICAg
ICAgIH0KQEAgLTQ1NCw3ICs0NTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIC8v
IFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxvb3AsIGl0J3MgYSBnb29k
IGJldCB0aGF0IGl0CiAgICAgICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBk
aWN0aW9uYXJ5LgogICAgICAgICAgICAgaWYgKGJhc2UtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSkKLSAgICAgICAgICAgICAgICBhc09iamVjdChiYXNlKS0+ZmxhdHRlbkRpY3Rpb25hcnlP
YmplY3QoKTsKKyAgICAgICAgICAgICAgICBhc09iamVjdChiYXNlKS0+ZmxhdHRlbkRpY3Rpb25h
cnlPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwogCiAgICAgICAgICAgICArK2NvdW50
OwogICAgICAgICB9CkBAIC00NzEsNyArNDcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdCogYmFzZTsKICAgICAgICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgICAgIGJhc2UgPSAqaXRlcjsKKyAgICAgICAgICAgIGJhc2Ug
PSBpdGVyLT5nZXQoKTsKICAgICAgICAgICAgIGlmIChuZXh0ID09IGVuZCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gaXNTdHJpY3RQdXQgPyBKU1ZhbHVlKCkgOiBiYXNlOwogICAgICAgICAgICAg
aWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIHByb3BlcnR5LCBzbG90KSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmNw
cAppbmRleCAzNTI5MDgwNWNjOTE2MjE5YTAyYThkY2I0MmYzZmQ1ZTI4ZWZmNWYwLi45NWUxMDMz
ODQ4MWVkMDUxZDVmNzI4MmNhNzhhMDVhMDNhOWUzMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3BwCkBAIC0zNyw3ICszNyw3
IEBAIFByb3RvdHlwZUZ1bmN0aW9uOjpQcm90b3R5cGVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQog
ewogICAgIEFTU0VSVF9BUkcoZnVuY3Rpb24sIGZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3QoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAogUHJvdG90eXBlRnVuY3Rpb246OlByb3Rv
dHlwZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVu
Y3Rpb24pCkBAIC00NSw3ICs0NSw3IEBAIFByb3RvdHlwZUZ1bmN0aW9uOjpQcm90b3R5cGVGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgLCBt
X2Z1bmN0aW9uKGZ1bmN0aW9uKQogewogICAgIEFTU0VSVF9BUkcoZnVuY3Rpb24sIGZ1bmN0aW9u
KTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIo
bGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVt
YmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KICAgICAK
IENhbGxUeXBlIFByb3RvdHlwZUZ1bmN0aW9uOjpnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0
eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5o
CmluZGV4IDRiMGIzOTQ4ZmJiMjlmMDgyYTMxNjIxZDY2NWQzNWMzZGMyNmY3MTcuLjRjOWUwZTYy
ZmNlZThhMTA5MzE0NWE1ZDZlYmM0NDEyZDY5MTY5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCkBAIC00NSwxNCArNDUsMTQgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0RXhp
c3RpbmdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgdm9p
ZCBzZXRFeGlzdGluZ1Byb3BlcnR5KERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IGJhc2UsIHNpemVf
dCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdHlwZSA9IEV4aXN0aW5nUHJvcGVy
dHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNlOwogICAgICAgICAgICAgbV9vZmZzZXQgPSBv
ZmZzZXQ7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldE5ld1Byb3BlcnR5KEpTT2JqZWN0
KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldE5ld1Byb3BlcnR5KERlcHJl
Y2F0ZWRQdHI8SlNPYmplY3Q+IGJhc2UsIHNpemVfdCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIG1fdHlwZSA9IE5ld1Byb3BlcnR5OwogICAgICAgICAgICAgbV9iYXNlID0gYmFzZTsK
QEAgLTYwLDcgKzYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgSlNPYmplY3QqIGJh
c2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KKyAgICAgICAgSlNPYmplY3QqIGJhc2UoKSBj
b25zdCB7IHJldHVybiBtX2Jhc2UuZ2V0KCk7IH0KIAogICAgICAgICBib29sIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNo
ZWFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQpAQCAtNzAsNyAr
NzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgIHByaXZhdGU6CiAgICAgICAg
IFR5cGUgbV90eXBlOwotICAgICAgICBKU09iamVjdCogbV9iYXNlOworICAgICAgICBEZXByZWNh
dGVkUHRyPEpTT2JqZWN0PiBtX2Jhc2U7CiAgICAgICAgIHNpemVfdCBtX29mZnNldDsKICAgICAg
ICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IDMwZDNlYWI1M2E2NGFk
NzI3MzEzOTIwNDM1NjNiZThkNWIzMTNlMDAuLjFiMzA1MTQ5ZmQ0YmMwODJjNDlmYTI3MDhkZTQ3
M2JlOTZkMWUyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTEwMCwxMCArMTAwLDEwIEBAIFJlZ0V4cENvbnN0cnVj
dG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiAgICAgLCBkKGFkb3B0UHRyKG5ldyBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUp
KQogewogICAgIC8vIEVDTUEgMTUuMTAuNS4xIFJlZ0V4cC5wcm90b3R5cGUKLSAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCByZWdF
eHBQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5wcm90b3R5cGUsIHJlZ0V4cFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOwogCiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IK
LSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcigyKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8
IERvbnRFbnVtKTsKIH0KIAogUmVnRXhwTWF0Y2hlc0FycmF5OjpSZWdFeHBNYXRjaGVzQXJyYXko
RXhlY1N0YXRlKiBleGVjLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqIGRhdGEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCmluZGV4IDU0YzUwODJjNWU0
Y2JkY2JlYjFiYjdmNDZhNThiOTlmN2VlYWQ2ZmYuLjk3NmNmZjY0YjQ5OWNlYjA5YWZjMWIyYTI4
NzEzODY3NjQxYmMxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlQ2hhaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
Q2hhaW4uY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgdm9pZCBTY29wZUNoYWluTm9kZTo6cHJpbnQo
KSBjb25zdAogewogICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBzY29wZUVuZCA9IGVuZCgpOwogICAg
IGZvciAoU2NvcGVDaGFpbkl0ZXJhdG9yIHNjb3BlSXRlciA9IGJlZ2luKCk7IHNjb3BlSXRlciAh
PSBzY29wZUVuZDsgKytzY29wZUl0ZXIpIHsKLSAgICAgICAgSlNPYmplY3QqIG8gPSAqc2NvcGVJ
dGVyOworICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0PiBvID0gKnNjb3BlSXRlcjsKICAg
ICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSk7CiAgICAgICAgIG8tPmdldFByb3BlcnR5TmFtZXMoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksIHByb3BlcnR5TmFtZXMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29u
c3RfaXRlcmF0b3IgcHJvcEVuZCA9IHByb3BlcnR5TmFtZXMuZW5kKCk7CiAKLSAgICAgICAgZnBy
aW50ZihzdGRlcnIsICItLS0tLSBbc2NvcGUgJXBdIC0tLS0tXG4iLCBvKTsKKyAgICAgICAgZnBy
aW50ZihzdGRlcnIsICItLS0tLSBbc2NvcGUgJXBdIC0tLS0tXG4iLCBvLmdldCgpKTsKICAgICAg
ICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgcHJvcEl0ZXIgPSBwcm9w
ZXJ0eU5hbWVzLmJlZ2luKCk7IHByb3BJdGVyICE9IHByb3BFbmQ7IHByb3BJdGVyKyspIHsKICAg
ICAgICAgICAgIElkZW50aWZpZXIgbmFtZSA9ICpwcm9wSXRlcjsKICAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiJXMsICIsIG5hbWUudXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCmluZGV4IGIxMDRlNzUzYzIzZmNi
MzZiNzI0MGY5MmViNzkyNmY0M2NhNDJhNjMuLjExZjM2OTI4NTkwMWY4OGFlYmE0OTA2YjlhZjQz
YWFiZTE4YzU5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
b3BlQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWlu
LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgU2NvcGVDaGFpbl9oCiAjZGVmaW5lIFNjb3Bl
Q2hhaW5faAogCisjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01Miw3ICs1Myw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB+U2NvcGVDaGFpbk5vZGUoKQogICAgICAgICB7CiAgICAgICAgICAg
ICBuZXh0ID0gMDsKLSAgICAgICAgICAgIG9iamVjdCA9IDA7CiAgICAgICAgICAgICBnbG9iYWxE
YXRhID0gMDsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IDA7CiAgICAgICAgICAgICBnbG9i
YWxUaGlzID0gMDsKQEAgLTYwLDcgKzYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAog
ICAgICAgICBTY29wZUNoYWluTm9kZSogbmV4dDsKLSAgICAgICAgSlNPYmplY3QqIG9iamVjdDsK
KyAgICAgICAgRGVwcmVjYXRlZFB0cjxKU09iamVjdD4gb2JqZWN0OwogICAgICAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGE7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Q7
CiAgICAgICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzOwpAQCAtMTMxLDggKzEzMSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBKU09iamVjdCogY29u
c3QgJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX25vZGUtPm9iamVjdDsgfQotICAgICAg
ICBKU09iamVjdCogY29uc3QgKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVyYXRv
ciooKSk7IH0KKyAgICAgICAgRGVwcmVjYXRlZFB0cjxKU09iamVjdD4gY29uc3QgJiBvcGVyYXRv
ciooKSBjb25zdCB7IHJldHVybiBtX25vZGUtPm9iamVjdDsgfQorICAgICAgICBEZXByZWNhdGVk
UHRyPEpTT2JqZWN0PiBjb25zdCAqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJh
dG9yKigpKTsgfQogICAgIAogICAgICAgICBTY29wZUNoYWluSXRlcmF0b3ImIG9wZXJhdG9yKyso
KSB7IG1fbm9kZSA9IG1fbm9kZS0+bmV4dDsgcmV0dXJuICp0aGlzOyB9CiAKQEAgLTE5NSw3ICsx
OTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBTY29wZUNoYWluTm9kZSogbm9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQogCi0gICAgICAgIEpTT2JqZWN0KiB0b3AoKSBjb25z
dCB7IHJldHVybiBtX25vZGUtPm9iamVjdDsgfQorICAgICAgICBKU09iamVjdCogdG9wKCkgY29u
c3QgeyByZXR1cm4gbV9ub2RlLT5vYmplY3QuZ2V0KCk7IH0KIAogICAgICAgICBTY29wZUNoYWlu
SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX25vZGUtPmJlZ2luKCk7IH0KICAgICAg
ICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+ZW5kKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW5N
YXJrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluTWFyay5oCmlu
ZGV4IDk4NGQxMDEzNjhhOWJjOWNhMDc4ZGEyN2FjY2IwMmY3NWExZGVlZDYuLjNlZWFmMzQ1M2Ri
MWU3NTgzMjQ0NDQ0MTIzYWU3ZWYxZDMwNzlmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW5NYXJrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NvcGVDaGFpbk1hcmsuaApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBpbmxpbmUgdm9pZCBTY29wZUNoYWluOjptYXJrQWdncmVnYXRlKE1hcmtTdGFj
ayYgbWFya1N0YWNrKSBjb25zdAogICAgIHsKICAgICAgICAgZm9yIChTY29wZUNoYWluTm9kZSog
biA9IG1fbm9kZTsgbjsgbiA9IG4tPm5leHQpCi0gICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5k
KG4tPm9iamVjdCk7CisgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG4tPm9iamVjdC5zbG90
KCkpOwogICAgIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAppbmRleCA1NjE0OTMyZmZlMDBlZjliZmI2OTJm
YTRjNzJlYzMxYmU0ZGJkZjExLi4zODk1ODU2ODkzNmVlYjI0NzAyMDJmOTg3NzBkNzhhNzc3MmM1
NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBudW1DaGFyYWN0ZXJzVG9TdG9yZSA9IDB4MTAwOwogCi1zdGF0aWMgaW5saW5lIGJvb2wg
aXNNYXJrZWQoSlNTdHJpbmcqIHN0cmluZykKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc01hcmtlZChK
U0NlbGwqIHN0cmluZykKIHsKICAgICByZXR1cm4gc3RyaW5nICYmIEhlYXA6OmlzQ2VsbE1hcmtl
ZChzdHJpbmcpOwogfQpAQCAtODMsOSArODMsOSBAQCB2b2lkIFNtYWxsU3RyaW5nczo6bWFya0No
aWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgICAgIHNvLCBpdCdzIHByb2JhYmx5IHJl
YXNvbmFibGUgdG8gbWFyayB0aGUgcmVzdC4gSWYgbm90LCB3ZSBjbGVhciB0aGUgY2FjaGUuCiAg
ICAgICovCiAKLSAgICBib29sIGlzQW55U3RyaW5nTWFya2VkID0gaXNNYXJrZWQobV9lbXB0eVN0
cmluZyk7CisgICAgYm9vbCBpc0FueVN0cmluZ01hcmtlZCA9IGlzTWFya2VkKG1fZW1wdHlTdHJp
bmcuZ2V0KCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzVG9T
dG9yZSAmJiAhaXNBbnlTdHJpbmdNYXJrZWQ7ICsraSkKLSAgICAgICAgaXNBbnlTdHJpbmdNYXJr
ZWQgPSBpc01hcmtlZChtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbaV0pOworICAgICAgICBpc0Fu
eVN0cmluZ01hcmtlZCA9IGlzTWFya2VkKG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tpXS5nZXQo
KSk7CiAgICAgCiAgICAgaWYgKCFpc0FueVN0cmluZ01hcmtlZCkgewogICAgICAgICBjbGVhcigp
OwpAQCAtOTMsMTAgKzkzLDEwIEBAIHZvaWQgU21hbGxTdHJpbmdzOjptYXJrQ2hpbGRyZW4oTWFy
a1N0YWNrJiBtYXJrU3RhY2spCiAgICAgfQogICAgIAogICAgIGlmIChtX2VtcHR5U3RyaW5nKQot
ICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1fZW1wdHlTdHJpbmcpOworICAgICAgICBtYXJrU3Rh
Y2suYXBwZW5kKG1fZW1wdHlTdHJpbmcuc2xvdCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtQ2hhcmFjdGVyc1RvU3RvcmU7ICsraSkgewogICAgICAgICBpZiAobV9zaW5nbGVD
aGFyYWN0ZXJTdHJpbmdzW2ldKQotICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX3Npbmds
ZUNoYXJhY3RlclN0cmluZ3NbaV0pOworICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX3Np
bmdsZUNoYXJhY3RlclN0cmluZ3NbaV0uc2xvdCgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKaW5kZXggYWM4NGZlODg3MzU1MTY5
OGNlNjk4OTMxM2I2ZWUxN2YxODhiNjQyMy4uZWU3OTViNjIyMzgxNTQ4NGZjYmFmY2MxYmNmZDZj
OWQ3MDQ4NTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21h
bGxTdHJpbmdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJp
bmdzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgU21hbGxTdHJpbmdzX2gKIAogI2luY2x1
ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYv
Rml4ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNDcsMTMgKzQ4LDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZW1wdHlT
dHJpbmcpCiAgICAgICAgICAgICAgICAgY3JlYXRlRW1wdHlTdHJpbmcoZ2xvYmFsRGF0YSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9lbXB0eVN0cmluZzsKKyAgICAgICAgICAgIHJldHVybiBtX2Vt
cHR5U3RyaW5nLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIEpTU3RyaW5nKiBzaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBjaGFyIGNoYXJh
Y3RlcikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX3NpbmdsZUNoYXJhY3RlclN0cmlu
Z3NbY2hhcmFjdGVyXSkKICAgICAgICAgICAgICAgICBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJp
bmcoZ2xvYmFsRGF0YSwgY2hhcmFjdGVyKTsKLSAgICAgICAgICAgIHJldHVybiBtX3NpbmdsZUNo
YXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXTsKKyAgICAgICAgICAgIHJldHVybiBtX3NpbmdsZUNo
YXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXS5nZXQoKTsKICAgICAgICAgfQogCiAgICAgICAgIFN0
cmluZ0ltcGwqIHNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rl
cik7CkBAIC02MywxNCArNjQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdW5zaWdu
ZWQgY291bnQoKSBjb25zdDsKICNpZiBFTkFCTEUoSklUKQotICAgICAgICBKU1N0cmluZyoqIHNp
bmdsZUNoYXJhY3RlclN0cmluZ3MoKSB7IHJldHVybiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3Mu
ZGF0YSgpOyB9CisgICAgICAgIEpTQ2VsbCoqIHNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSB7IHJl
dHVybiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbMF0uc2xvdCgpOyB9CiAjZW5kaWYKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOwog
ICAgICAgICB2b2lkIGNyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEqLCB1
bnNpZ25lZCBjaGFyKTsKIAotICAgICAgICBKU1N0cmluZyogbV9lbXB0eVN0cmluZzsKLSAgICAg
ICAgRml4ZWRBcnJheTxKU1N0cmluZyosIDB4MTAwPiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3M7
CisgICAgICAgIERlcHJlY2F0ZWRQdHI8SlNTdHJpbmc+IG1fZW1wdHlTdHJpbmc7CisgICAgICAg
IEZpeGVkQXJyYXk8RGVwcmVjYXRlZFB0cjxKU1N0cmluZz4sIDB4MTAwPiBtX3NpbmdsZUNoYXJh
Y3RlclN0cmluZ3M7CiAgICAgICAgIE93blB0cjxTbWFsbFN0cmluZ3NTdG9yYWdlPiBtX3N0b3Jh
Z2U7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nQ29uc3RydWN0b3IuY3BwCmluZGV4IDEwMTY1MGMzYzIxYjVkYjI4MmFkMDg2N2Q2MzNmNDc1
Yjk4OTFmNDEuLjYwNDQ3M2JkYzI4MzgyNWU2NjgwNWY0MWRiOWRhNjAzOGIxM2U0ZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgU3RyaW5nQ29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICA6IEludGVy
bmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IElkZW50aWZpZXIoZXhlYywgc3RyaW5nUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1l
KSkKIHsKICAgICAvLyBFQ01BIDE1LjUuMy4xIFN0cmluZy5wcm90b3R5cGUKLSAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzdHJp
bmdQcm90b3R5cGUsIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5wcm90b3R5cGUsIHN0cmluZ1Byb3RvdHlwZSwgUmVhZE9ubHkgfCBEb250RW51bSB8
IERvbnREZWxldGUpOwogCiAgICAgLy8gRUNNQSAxNS41LjMuMiBmcm9tQ2hhckNvZGUoKQogI2lm
IEVOQUJMRShKSVQpICYmIEVOQUJMRShKSVRfT1BUSU1JWkVfTkFUSVZFX0NBTEwpCkBAIC02Miw3
ICs2Miw3IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihl
eGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuZnJvbUNoYXJDb2RlLCBzdHJpbmdGcm9tQ2hhckNvZGUpLCBEb250RW51
bSk7CiAjZW5kaWYKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgotICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgs
IGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnRE
ZWxldGUpOwogfQogCiAvLyBFQ01BIDE1LjUuMgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggZGMyNzYxODgxYTQ2MWI0YzUwYWRkNzU0Y2Jm
YjE2NmFhZTI5MGJkMy4uNjNlNDE0NDU2MzFkNTQxODIzZGQ1NThhYTI4MTEzOWI2YjM0NDkwZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBA
IC0zMiwxOSArMzIsMTkgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ09iamVjdDo6aW5mbyA9IHsg
IlN0cmluZyIsIDAsIDAsIDAgfTsKIFN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiAgICAgOiBK
U1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAgIHNldEludGVybmFsVmFsdWUoanNFbXB0
eVN0cmluZyhleGVjKSk7CisgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCks
IGpzRW1wdHlTdHJpbmcoZXhlYykpOwogfQogCi1TdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNTdHJpbmcqIHN0cmluZykK
K1N0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCiAg
ICAgOiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAgIHNldEludGVybmFsVmFsdWUo
c3RyaW5nKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVlKGdsb2JhbERhdGEsIHN0cmluZyk7CiB9CiAK
IFN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cmluZykKICAgICA6
IEpTV3JhcHBlck9iamVjdChzdHJ1Y3R1cmUpCiB7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShqc1N0
cmluZyhleGVjLCBzdHJpbmcpKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERh
dGEoKSwganNTdHJpbmcoZXhlYywgc3RyaW5nKSk7CiB9CiAKIGJvb2wgU3RyaW5nT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggZTNhZGQ3N2I5MmJiZmY1ODQzMTg2YjQ2ZGVjNGVk
NWNlZGMwNzczOC4uMDM0ODhmNTcxZTcwNzUzNzlkZjhkZWYzODViY2I3NTAwNGU5ZDA1MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKQEAgLTUzLDcg
KzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMg
fCBKU1dyYXBwZXJPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBTdHJpbmdPYmplY3Qo
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlNTdHJpbmcqKTsKKyAgICAgICAgU3RyaW5n
T2JqZWN0KEpTR2xvYmFsRGF0YSYsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEpTU3Ry
aW5nKik7CiAgIH07CiAKICAgICBTdHJpbmdPYmplY3QqIGFzU3RyaW5nT2JqZWN0KEpTVmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAKaW5kZXggOGIzZDA1NmM4ZWFhYzg2YmJiNDNkZjQxOWRmNTkzNGQ1OGFkNmQ0Yy4uNmNmMDc5
MjE5Yjk3MjY3OTM0NjNhNGIzNmMwM2ZkNDIyZmRlNDlmNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xMzYsNyArMTM2LDcg
QEAgU3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIHB1dEFub255bW91c1ZhbHVlKDAsIGds
b2JhbE9iamVjdCk7CiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIs
IGFmdGVyIFN0cmluZ0NvbnN0cnVjdG9yIGhhcyBiZWVuIGJ1aWx0Ci0gICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAK
IGJvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDAxNzllZWRi
MGM0OWNlMTdkN2FjYTU5YzY5NGZkOWI1Yjk5ZWJlZGYuLjkyMzhhYzc0MDY0NWYyOWY5ZTMxZjVi
ZjNjNDllYTQ2MDZmZTZiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcApAQCAtNjIwLDcgKzYyMCw3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1
Y3R1cmU6OnRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0CiAg
ICAgcmV0dXJuIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oc3RydWN0dXJlLCBVbmNhY2hlZERpY3Rp
b25hcnlLaW5kKTsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZmxhdHRl
bkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNPYmplY3QqIG9iamVjdCkKK1Bhc3NSZWZQdHI8U3RydWN0
dXJlPiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBBU1NFUlQoaXNEaWN0aW9uYXJ5
KCkpOwogICAgIGlmIChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CkBAIC02NTEsNyArNjUx
LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlT
dHJ1Y3R1cmUoSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgCiAgICAgICAgIC8vIENvcHkgdGhl
IG9yaWdpbmFsIHByb3BlcnR5IHZhbHVlcyBpbnRvIHRoZWlyIGZpbmFsIGxvY2F0aW9ucwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlDb3VudDsgaSsrKQotICAgICAg
ICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoYW5vbnltb3VzU2xvdENvdW50ICsgaSwgdmFs
dWVzW2ldKTsKKyAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEs
IGFub255bW91c1Nsb3RDb3VudCArIGksIHZhbHVlc1tpXSk7CiAKICAgICAgICAgaWYgKG1fcHJv
cGVydHlUYWJsZS0+ZGVsZXRlZE9mZnNldHMpIHsKICAgICAgICAgICAgIGRlbGV0ZSBtX3Byb3Bl
cnR5VGFibGUtPmRlbGV0ZWRPZmZzZXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAppbmRleCBmNDgwMDUxZTBiODY4ODE0OTYxOGIzNzFhZjU3Y2UxOGI3MTZhNGM4
Li4wYzZkNWZlZjk4OTMxMzA2NjIyNmM3N2VkOTE5MmFkYmRmZTE3MTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtODAsNyArODAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b0NhY2hlYWJs
ZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1
cmUqKTsKIAotICAgICAgICBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZmxhdHRlbkRpY3Rpb25hcnlT
dHJ1Y3R1cmUoSlNPYmplY3QqKTsKKyAgICAgICAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGZsYXR0
ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7CiAKICAgICAg
ICAgflN0cnVjdHVyZSgpOwogCkBAIC05NSw2ICs5NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8oKSBjb25zdCB7IHJldHVybiBtX3R5cGVJbmZv
OyB9CiAKICAgICAgICAgSlNWYWx1ZSBzdG9yZWRQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X3Byb3RvdHlwZTsgfQorICAgICAgICBKU1ZhbHVlKiBzdG9yZWRQcm90b3R5cGVTbG90KCkgeyBy
ZXR1cm4gJm1fcHJvdG90eXBlOyB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3Vw
KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hh
aW4oRXhlY1N0YXRlKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtHQ01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a0dDTWFwLmgKaW5kZXggMzE2Nzk0ZjQxMzcwNWRlZTUwODM3OWU1ZDU5MDQ2NGYxODZiOTM3NS4u
ZDAzZmRiMGE0YjJjZDdlOTViMGE3ZDQ4YTNiYzg3MjkyMzY5MTg4YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTQ2LDIyICs0NiwyOSBAQCBjbGFzcyBX
ZWFrR0NNYXAgewogICAgICovCiAKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hN
YXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYg
dHlwZW5hbWUgSGFzaE1hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6Y29uc3RfaXRlcmF0b3IgY29u
c3RfaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPEtleVR5cGUsIERlcHJl
Y2F0ZWRQdHI8TWFwcGVkVHlwZT4gPjo6aXRlcmF0b3IgaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBIYXNoTWFwPEtleVR5cGUsIERlcHJlY2F0ZWRQdHI8TWFwcGVkVHlwZT4gPjo6Y29u
c3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgICAgCiAgICAgYm9vbCBpc0VtcHR5KCkgeyBy
ZXR1cm4gbV9tYXAuaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIo
KTsgfQogCi0gICAgTWFwcGVkVHlwZSBnZXQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdDsKLSAg
ICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIGNvbnN0IE1hcHBlZFR5
cGUmKTsgCi0gICAgTWFwcGVkVHlwZSB0YWtlKGNvbnN0IEtleVR5cGUmIGtleSk7CisgICAgTWFw
cGVkVHlwZSogZ2V0KGNvbnN0IEtleVR5cGUmKSBjb25zdDsKKyAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFR5cGUqKTsgCisgICAgTWFwcGVkVHlwZSog
dGFrZShjb25zdCBLZXlUeXBlJik7CiAKICAgICAvLyBUaGVzZSB1bmNoZWNrZWQgZnVuY3Rpb25z
IHByb3ZpZGUgYWNjZXNzIHRvIGEgdmFsdWUgZXZlbiBpZiB0aGUgdmFsdWUncwogICAgIC8vIG1h
cmsgYml0IGlzIG5vdCBzZXQuIFRoaXMgaXMgdXNlZCwgYW1vbmcgb3RoZXIgdGhpbmdzLCB0byBy
ZXRyaWV2ZSB2YWx1ZXMKICAgICAvLyBkdXJpbmcgdGhlIEdDIG1hcmsgcGhhc2UsIHdoaWNoIGJl
Z2lucyBieSBjbGVhcmluZyBhbGwgbWFyayBiaXRzLgogCi0gICAgTWFwcGVkVHlwZSB1bmNoZWNr
ZWRHZXQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdCB7IHJldHVybiBtX21hcC5nZXQoa2V5KTsg
fQotICAgIGJvb2wgdW5jaGVja2VkUmVtb3ZlKGNvbnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRU
eXBlJik7CisgICAgTWFwcGVkVHlwZSogdW5jaGVja2VkR2V0KGNvbnN0IEtleVR5cGUmIGtleSkg
Y29uc3QgeyByZXR1cm4gbV9tYXAuZ2V0KGtleSkuZ2V0KCk7IH0KKyAgICBKU0NlbGwqKiB1bmNo
ZWNrZWRHZXRTbG90KGNvbnN0IEtleVR5cGUmIGtleSkKKyAgICB7CisgICAgICAgIGl0ZXJhdG9y
IGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CisgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgp
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQuc2xv
dCgpOworICAgIH0KKyAgICBib29sIHVuY2hlY2tlZFJlbW92ZShjb25zdCBLZXlUeXBlJiwgTWFw
cGVkVHlwZSopOwogCiAgICAgaXRlcmF0b3IgdW5jaGVja2VkQmVnaW4oKSB7IHJldHVybiBtX21h
cC5iZWdpbigpOyB9CiAgICAgaXRlcmF0b3IgdW5jaGVja2VkRW5kKCkgeyByZXR1cm4gbV9tYXAu
ZW5kKCk7IH0KQEAgLTcwLDUwICs3Nyw1MCBAQCBwdWJsaWM6CiAgICAgY29uc3RfaXRlcmF0b3Ig
dW5jaGVja2VkRW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KIAogcHJpdmF0ZToK
LSAgICBIYXNoTWFwPEtleVR5cGUsIE1hcHBlZFR5cGU+IG1fbWFwOworICAgIEhhc2hNYXA8S2V5
VHlwZSwgRGVwcmVjYXRlZFB0cjxNYXBwZWRUeXBlPiA+IG1fbWFwOwogfTsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4KLWlubGluZSBNYXBwZWRUeXBl
IFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6Z2V0KGNvbnN0IEtleVR5cGUmIGtleSkg
Y29uc3QKK2lubGluZSBNYXBwZWRUeXBlKiBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46
OmdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0CiB7Ci0gICAgTWFwcGVkVHlwZSByZXN1bHQg
PSBtX21hcC5nZXQoa2V5KTsKLSAgICBpZiAocmVzdWx0ID09IEhhc2hUcmFpdHM8TWFwcGVkVHlw
ZT46OmVtcHR5VmFsdWUoKSkKKyAgICBNYXBwZWRUeXBlKiByZXN1bHQgPSBtX21hcC5nZXQoa2V5
KS5nZXQoKTsKKyAgICBpZiAocmVzdWx0ID09IEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+OjplbXB0
eVZhbHVlKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgaWYgKCFIZWFwOjppc0NlbGxN
YXJrZWQocmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIEhhc2hUcmFpdHM8TWFwcGVkVHlwZT46OmVt
cHR5VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+OjplbXB0
eVZhbHVlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5
VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4KLU1hcHBlZFR5cGUgV2Vha0dDTWFwPEtleVR5cGUs
IE1hcHBlZFR5cGU+Ojp0YWtlKGNvbnN0IEtleVR5cGUmIGtleSkKK01hcHBlZFR5cGUqIFdlYWtH
Q01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6dGFrZShjb25zdCBLZXlUeXBlJiBrZXkpCiB7Ci0g
ICAgTWFwcGVkVHlwZSByZXN1bHQgPSBtX21hcC50YWtlKGtleSk7Ci0gICAgaWYgKHJlc3VsdCA9
PSBIYXNoVHJhaXRzPE1hcHBlZFR5cGU+OjplbXB0eVZhbHVlKCkpCisgICAgTWFwcGVkVHlwZSog
cmVzdWx0ID0gbV9tYXAudGFrZShrZXkpLmdldCgpOworICAgIGlmIChyZXN1bHQgPT0gSGFzaFRy
YWl0czxNYXBwZWRUeXBlKj46OmVtcHR5VmFsdWUoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICBpZiAoIUhlYXA6OmlzQ2VsbE1hcmtlZChyZXN1bHQpKQotICAgICAgICByZXR1cm4gSGFz
aFRyYWl0czxNYXBwZWRUeXBlPjo6ZW1wdHlWYWx1ZSgpOworICAgICAgICByZXR1cm4gSGFzaFRy
YWl0czxNYXBwZWRUeXBlKj46OmVtcHR5VmFsdWUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPgotcGFpcjx0
eXBlbmFtZSBIYXNoTWFwPEtleVR5cGUsIE1hcHBlZFR5cGU+OjppdGVyYXRvciwgYm9vbD4gV2Vh
a0dDTWFwPEtleVR5cGUsIE1hcHBlZFR5cGU+OjpzZXQoY29uc3QgS2V5VHlwZSYga2V5LCBjb25z
dCBNYXBwZWRUeXBlJiB2YWx1ZSkKK3BhaXI8dHlwZW5hbWUgV2Vha0dDTWFwPEtleVR5cGUsIE1h
cHBlZFR5cGU+OjppdGVyYXRvciwgYm9vbD4gV2Vha0dDTWFwPEtleVR5cGUsIE1hcHBlZFR5cGU+
OjpzZXQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRUeXBlKiB2YWx1ZSkKIHsKICAgICBIZWFw
OjptYXJrQ2VsbCh2YWx1ZSk7IC8vIElmIHZhbHVlIGlzIG5ld2x5IGFsbG9jYXRlZCwgaXQncyBu
b3QgbWFya2VkLCBzbyBtYXJrIGl0IG5vdy4KICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBtX21hcC5hZGQoa2V5LCB2YWx1ZSk7CiAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7IC8v
IHByZS1leGlzdGluZyBlbnRyeQotICAgICAgICByZXN1bHQuc2Vjb25kID0gIUhlYXA6OmlzQ2Vs
bE1hcmtlZChyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5zZWNvbmQgPSAh
SGVhcDo6aXNDZWxsTWFya2VkKHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpKTsKICAgICAgICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSB2YWx1ZTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4KLWJv
b2wgV2Vha0dDTWFwPEtleVR5cGUsIE1hcHBlZFR5cGU+Ojp1bmNoZWNrZWRSZW1vdmUoY29uc3Qg
S2V5VHlwZSYga2V5LCBjb25zdCBNYXBwZWRUeXBlJiB2YWx1ZSkKK2Jvb2wgV2Vha0dDTWFwPEtl
eVR5cGUsIE1hcHBlZFR5cGU+Ojp1bmNoZWNrZWRSZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5LCBN
YXBwZWRUeXBlKiB2YWx1ZSkKIHsKICAgICBpdGVyYXRvciBpdCA9IG1fbWFwLmZpbmQoa2V5KTsK
ICAgICBpZiAoaXQgPT0gbV9tYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoaXQtPnNlY29uZCAhPSB2YWx1ZSkKKyAgICBpZiAoaXQtPnNlY29uZC5nZXQoKSAhPSB2YWx1
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fbWFwLnJlbW92ZShpdCk7CiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0
ZUJhcnJpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlMzEyNTgwYmY5YmMxZDEwYzg0ZjE5NGE4MThjZmVmMTVmNzM3ODIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJp
ZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXcml0ZUJhcnJpZXJf
aAorI2RlZmluZSBXcml0ZUJhcnJpZXJfaAorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEpTQ2Vs
bDsKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRGVw
cmVjYXRlZFB0ciB7CitwdWJsaWM6CisgICAgRGVwcmVjYXRlZFB0cigpIDogbV9jZWxsKDApIHsg
fQorICAgIERlcHJlY2F0ZWRQdHIoVCogY2VsbCkgOiBtX2NlbGwocmVpbnRlcnByZXRfY2FzdDxK
U0NlbGwqPihjZWxsKSkgeyB9CisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxUKj4obV9jZWxsKTsgfQorICAgIFQqIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFQqPihtX2NlbGwpOyB9CisgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2NlbGwpOyB9CisgICAgCisgICAgSlNDZWxsKiogc2xv
dCgpIHsgcmV0dXJuICZtX2NlbGw7IH0KKyAgICAKKyAgICB0eXBlZGVmIFQqIChEZXByZWNhdGVk
UHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSooKSBjb25zdCB7IHJldHVybiBtX2NlbGwgPyByZWludGVycHJldF9jYXN0PFVuc3BlY2lm
aWVkQm9vbFR5cGUqPigxKSA6IDA7IH0KKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyBy
ZXR1cm4gIW1fY2VsbDsgfQorCitwcm90ZWN0ZWQ6CisgICAgSlNDZWxsKiBtX2NlbGw7Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZSB7CitwdWJsaWM6
CisgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDZWxsKiwgVCogdmFsdWUpIHsg
dGhpcy0+bV9jZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih2YWx1ZSk7IH0KKyAgICAK
KyAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihtX2NlbGwp
OyB9CisgICAgVCogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1f
Y2VsbCk7IH0KKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
VCo+KG1fY2VsbCk7IH0KKyAgICAKKyAgICBKU0NlbGwqKiBzbG90KCkgeyByZXR1cm4gJm1fY2Vs
bDsgfQorICAgIAorICAgIHR5cGVkZWYgVCogKFdyaXRlQmFycmllckJhc2U6OipVbnNwZWNpZmll
ZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKigpIGNvbnN0IHsg
cmV0dXJuIG1fY2VsbCA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29sVHlwZSo+KDEp
IDogMDsgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2Vs
bDsgfQorCitwcm90ZWN0ZWQ6CisgICAgSlNDZWxsKiBtX2NlbGw7Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJyaWVyIDogcHVibGljIFdyaXRlQmFycmllckJhc2U8
VD4geworcHVibGljOgorICAgIFdyaXRlQmFycmllcigpIHsgdGhpcy0+bV9jZWxsID0gMDsgfQor
ICAgIFdyaXRlQmFycmllcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IEpTQ2VsbCog
b3duZXIsIFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0KGdsb2JhbERhdGEsIG93bmVyLCB2
YWx1ZSk7CisgICAgfQorCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4g
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZXByZWNhdGVkUHRyPFU+JiBsaHMsIGNvbnN0
IERlcHJlY2F0ZWRQdHI8Vj4mIHJocykKK3sKKyAgICByZXR1cm4gbGhzLmdldCgpID09IHJocy5n
ZXQoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVPiYgbGhzLCBjb25zdCBXcml0ZUJh
cnJpZXJCYXNlPFY+JiByaHMpCit7CisgICAgcmV0dXJuIGxocy5nZXQoKSA9PSByaHMuZ2V0KCk7
Cit9CisKK30KKworI2VuZGlmIC8vIFdyaXRlQmFycmllcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxv
ZwppbmRleCAyYmU0Y2ViYTkyNjkyNzU1ZGY5ODkxY2VhMjExZGE5NDhmMzhjNDMyLi5kZmY4ZDFk
YTE3NzVlYmQ4ZTAwOTFkNDQyYzQ2ZDAwMmIyMmMxZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMS0yNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvbnZlcnQgbWFya3N0YWNrIHRvIGEgc2xvdCB2aXNpdG9yIEFQSQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMyMTkKKworICAgICAgICBUaGVyZSdz
IG5vIHJlYXNvbiB0byByZWN1cnNlIGhlcmUsIHRoZSB2YWx1ZSB3ZQorICAgICAgICB3ZXJlIG1h
cmtpbmcgd2FzIHByb3RlY3RlZC4KKworICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKKyAg
ICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdE1hcmspOgorCiAyMDExLTAxLTIzICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVwIHRvIHI3NjQ3Ny4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBwZXIuY3BwCmluZGV4IGUwODc5YTAwZWIy
NjhjYzViMzdjZDY5YWE1MDI4MDE1ZDU5MjhlOGQuLmQ5YWM0OTdkOTE5NDJkY2JhZTc3ODVjZDdj
M2IxYTU0NTI3NjhmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVl
V3JhcHBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNw
cApAQCAtMTk0LDE1ICsxOTQsNCBAQCBDRlR5cGVSZWYgSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0
Q29weUNGVmFsdWUodm9pZCAqZGF0YSkKIAogdm9pZCBKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RN
YXJrKHZvaWQgKmRhdGEpCiB7Ci0gICAgSlNWYWx1ZVdyYXBwZXIqIHB0ciA9IChKU1ZhbHVlV3Jh
cHBlciopZGF0YTsKLSAgICBpZiAocHRyKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyByZXN1bHRz
IGluIHJlY3Vyc2l2ZSBtYXJraW5nIGJ1dCB3aWxsIGJlIG90aGVyd2lzZSBzYWZlIGFuZCBjb3Jy
ZWN0LgotICAgICAgICAvLyBXZSBjbGFpbSB0aGUgYXJyYXkgdnB0ciBpcyAwIGJlY2F1c2Ugd2Ug
ZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gaXQgaGVyZSwgYW5kCi0gICAgICAgIC8vIGNsYWltaW5nIDAg
aXMgZnVuY3Rpb25hbGx5IGhhcm1sZXNzIC0tIGl0IG1lcmVseSBtZWFucyB0aGF0IHdlIGNhbid0
Ci0gICAgICAgIC8vIGRldmlydHVhbGlzZSBtYXJraW5nIG9mIGFycmF5cyB3aGVuIHJlY3Vyc2lu
ZyBmcm9tIHRoaXMgcG9pbnQuCi0gICAgICAgIE1hcmtTdGFjayBtYXJrU3RhY2soMCk7Ci0gICAg
ICAgIG1hcmtTdGFjay5hcHBlbmQocHRyLT5mVmFsdWUuZ2V0KCkpOwotICAgICAgICBtYXJrU3Rh
Y2suZHJhaW4oKTsKLSAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdkNWNiNGZkZjA2ZTYzMGVkMzE1
ZTU5ZmJmMDA3ZTc1YTkzMDZjNi4uNGVmYTBiZDU0MjVhZjBlOWM2Y2ViODg2MGY2NzkzMTY0YTg5
ZTEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDExLTAxLTI3ICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ29udmVydCBtYXJrc3RhY2sgdG8gYSBzbG90IHZpc2l0b3IgQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzIxOQorCisg
ICAgICAgIFVwZGF0ZSBXZWJDb3JlIHRvIHRoZSBuZXcgbWFya2luZyBhcGlzLCBjb3JyZWN0IGJp
bmRpbmdzCisgICAgICAgIGNvZGVnZW4uIAorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9Xcml0ZUJhcnJpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQ6Omdsb2JhbERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29uc3Ry
dWN0b3I6OkpTQXVkaW9Db25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmtET01Ob2Rlc0ZvckRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Om1hcmtET01PYmplY3RXcmFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Om1hcmtET01Ob2RlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6Om1hcmtD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6c2V0SW5qZWN0
ZWRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmluamVjdGVk
U2NyaXB0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0RGF0YTo6
SlNET01HbG9iYWxPYmplY3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTUNvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlhbG9nSGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxs
OjpKU0RPTVdpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6
OnNldFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjptYXJrQ2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6dW53cmFwcGVkT2Jq
ZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp3aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpKU0V2
ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjptYXJrSlNG
dW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rpb24pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SFRNTERvY3VtZW50OjpzZXRBbGwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1h
Z2VDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSmF2YVNj
cmlwdENhbGxGcmFtZTo6c2NvcGVDaGFpbik6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFTY3Jp
cHRDYWxsRnJhbWU6OnNjb3BlVHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmls
dGVyQ29uZGl0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNvbmRpdGlv
bjo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXJDb25kaXRp
b246OmFjY2VwdE5vZGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRp
dGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU09wdGlvbkNvbnN0cnVjdG9yOjpKU09wdGlvbkNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cHV0UHJvcGVydHkpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorCiAyMDExLTAxLTI2ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL1dyaXRlQmFycmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4NTdkMmZmNjZm
YjVjM2VkZDhhZGI4YjI3YTk2ODg4ZjE1YWViNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1dyaXRlQmFycmllci5oCkBAIC0wLDAg
KzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9Xcml0ZUJhcnJpZXJfaAorI2RlZmluZSBXZWJD
b3JlX0ZXRF9Xcml0ZUJhcnJpZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dyaXRlQmFy
cmllci5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGFjYzZjYjlhNDA5MGZkZDgx
NTNmYWE2ZmU1MmJjNzY0ZjUzYzdmNzAuLjQ5Y2E3NmEwYWI4NjY4ODkwM2EzY2FmNjVhNjViYzlm
Y2I3YjFlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC00NDYsNyArNDQ2LDYgQEAgX19aTjdX
ZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdlRQogX19aTjdXZWJDb3JlMTZlbmNs
b3NpbmdJbnRSZWN0RVJLN19OU1JlY3QKIF9fWk43V2ViQ29yZTE2ZW5jbG9zaW5nSW50UmVjdEVS
S05TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmUxNmlzRW5kT2ZQYXJhZ3JhcGhFUktOU18xNVZp
c2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKLV9fWk43V2Vi
Q29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOUzBfOVdlYWtHQ01hcElQ
TjNXVEYxMFN0cmluZ0ltcGxFUE5TMF84SlNTdHJpbmdFRUVTNl8KIF9fWk43V2ViQ29yZTE3Q3Jl
ZGVudGlhbFN0b3JhZ2UzZ2V0RVJLTlNfMTVQcm90ZWN0aW9uU3BhY2VFCiBfX1pON1dlYkNvcmUx
N0RPTUltcGxlbWVudGF0aW9uMTNpc1hNTE1JTUVUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlMTdET01JbXBsZW1lbnRhdGlvbjE0aXNUZXh0TUlNRVR5cGVFUktOM1dURjZTdHJpbmdF
CkBAIC0xNDI4LDYgKzE0MjcsNyBAQCBfX05QTl9TZXRQcm9wZXJ0eQogX19OUE5fVVRGOEZyb21J
ZGVudGlmaWVyCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIyMHdpbmRvd1NjcmlwdE5Q
T2JqZWN0RXYKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjI5Y2xlYW51cFNjcmlwdE9i
amVjdHNGb3JQbHVnaW5FUHYKK19fWk43V2ViQ29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5
RXhlY1N0YXRlRVJOUzBfOVdlYWtHQ01hcElQTjNXVEYxMFN0cmluZ0ltcGxFTlMwXzhKU1N0cmlu
Z0VFRVM2XwogX19aTjdXZWJDb3JlMTdIVE1MUGx1Z0luRWxlbWVudDExZ2V0TlBPYmplY3RFdgog
X19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0NHZpZXdFdgogX19aTks3V2ViQ29yZTE0U2VjdXJp
dHlPcmlnaW45Y2FuQWNjZXNzRVBLUzBfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVdyYXBwZXJXb3JsZC5oCmluZGV4IDVlN2I1NTEzZmU2MjY1YzljMGQ1NmZlZDIxNTY5ZjBiMGVi
M2U4N2YuLjk4MjVhMDhmMzBhZDlmNWYzNTRhNDQ5YzE3Yjc2ZjRmODAwZmMyMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCkBAIC0zMiw4ICszMiw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0Q29udHJvbGxlcjsKIAotdHlw
ZWRlZiBKU0M6OldlYWtHQ01hcDx2b2lkKiwgRE9NT2JqZWN0Kj4gRE9NT2JqZWN0V3JhcHBlck1h
cDsKLXR5cGVkZWYgSlNDOjpXZWFrR0NNYXA8U3RyaW5nSW1wbCosIEpTQzo6SlNTdHJpbmcqPiBK
U1N0cmluZ0NhY2hlOyAKK3R5cGVkZWYgSlNDOjpXZWFrR0NNYXA8dm9pZCosIERPTU9iamVjdD4g
RE9NT2JqZWN0V3JhcHBlck1hcDsKK3R5cGVkZWYgSlNDOjpXZWFrR0NNYXA8U3RyaW5nSW1wbCos
IEpTQzo6SlNTdHJpbmc+IEpTU3RyaW5nQ2FjaGU7IAogCiBjbGFzcyBET01XcmFwcGVyV29ybGQg
OiBwdWJsaWMgUmVmQ291bnRlZDxET01XcmFwcGVyV29ybGQ+IHsKIHB1YmxpYzoKQEAgLTU4LDYg
KzU4LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc05vcm1hbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNOb3JtYWw7IH0KIAorICAgIEpTQzo6SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CisKIHByb3RlY3RlZDoKICAgICBET01XcmFwcGVyV29y
bGQoSlNDOjpKU0dsb2JhbERhdGEqLCBib29sIGlzTm9ybWFsKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAKaW5kZXggMWVhNWFlNDAx
ZGRkMGE0NjdkMTNjODY1YmVkNzA5NjcwNDg3MzhjMy4uYzE5ZDc5NTdkNzljNTlhODU0OWVkNTE5
NDA5MmZmMjVhZGRjOTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvQ29uc3RydWN0b3IuY3BwCkBAIC00Miw4ICs0Miw4IEBAIGNvbnN0IENsYXNzSW5mbyBK
U0F1ZGlvQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkF1ZGlvQ29uc3RydWN0b3IiLCAwLCAwLCAw
IH07CiBKU0F1ZGlvQ29uc3RydWN0b3I6OkpTQXVkaW9Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3Rv
cldpdGhEb2N1bWVudChKU0F1ZGlvQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVj
dChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU0hUTUxBdWRpb0VsZW1lbnRQcm90
b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7Ci0gICAgcHV0RGlyZWN0KGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRE
ZWxldGUgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNIVE1MQXVkaW9FbGVtZW50UHJvdG90eXBl
OjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOworICAgIHB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBS
ZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEF1ZGlvKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IGU1M2RjZmI2MDFh
YTJiOTJmYTFlNWIwOGY0NDY2MmY3MzQyM2M3NmQuLmJkYjViYmY4ODVkYWIyZjkwZGEyYTZiZTFh
ODAzNmUzZTE2ZGQ3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcApAQCAtMzM1LDkgKzMzNSw5IEBAIHZvaWQgbWFya0RPTU5vZGVzRm9yRG9jdW1lbnQo
TWFya1N0YWNrJiBtYXJrU3RhY2ssIERvY3VtZW50KiBkb2N1bWVudCkKIAogICAgICAgICBKU1dy
YXBwZXJDYWNoZTo6aXRlcmF0b3Igbm9kZUVuZCA9IG5vZGVEaWN0LT51bmNoZWNrZWRFbmQoKTsK
ICAgICAgICAgZm9yIChKU1dyYXBwZXJDYWNoZTo6aXRlcmF0b3Igbm9kZUl0ID0gbm9kZURpY3Qt
PnVuY2hlY2tlZEJlZ2luKCk7IG5vZGVJdCAhPSBub2RlRW5kOyArK25vZGVJdCkgewotICAgICAg
ICAgICAgSlNOb2RlKiBqc05vZGUgPSBub2RlSXQtPnNlY29uZDsKLSAgICAgICAgICAgIGlmIChp
c09ic2VydmFibGVUaHJvdWdoRE9NKGpzTm9kZSwgd29ybGQpKQotICAgICAgICAgICAgICAgIG1h
cmtTdGFjay5hcHBlbmQoanNOb2RlKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRQdHI8SlNOb2Rl
PiYganNOb2RlID0gbm9kZUl0LT5zZWNvbmQ7CisgICAgICAgICAgICBpZiAoaXNPYnNlcnZhYmxl
VGhyb3VnaERPTShqc05vZGUuZ2V0KCksIHdvcmxkKSkKKyAgICAgICAgICAgICAgICBtYXJrU3Rh
Y2suYXBwZW5kKGpzTm9kZS5zbG90KCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNDE2LDgg
KzQxNiw4IEBAIHZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIoTWFya1N0YWNrJiBtYXJrU3RhY2ss
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCoKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Zm9yIChKU0dsb2JhbERhdGFXb3JsZEl0ZXJhdG9yIHdvcmxkSXRlcigmZ2xvYmFsRGF0YSk7IHdv
cmxkSXRlcjsgKyt3b3JsZEl0ZXIpIHsKLSAgICAgICAgaWYgKERPTU9iamVjdCogd3JhcHBlciA9
IHdvcmxkSXRlci0+bV93cmFwcGVycy51bmNoZWNrZWRHZXQob2JqZWN0KSkKLSAgICAgICAgICAg
IG1hcmtTdGFjay5hcHBlbmQod3JhcHBlcik7CisgICAgICAgIGlmIChKU0NlbGwqKiB3cmFwcGVy
U2xvdCA9IHdvcmxkSXRlci0+bV93cmFwcGVycy51bmNoZWNrZWRHZXRTbG90KG9iamVjdCkpCisg
ICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHdyYXBwZXJTbG90KTsKICAgICB9CiB9CiAKQEAg
LTQyNiwxNSArNDI2LDE1IEBAIHZvaWQgbWFya0RPTU5vZGVXcmFwcGVyKE1hcmtTdGFjayYgbWFy
a1N0YWNrLCBEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCiAgICAgaWYgKGRvY3VtZW50
KSB7CiAgICAgICAgIEpTV3JhcHBlckNhY2hlTWFwJiB3cmFwcGVyQ2FjaGVNYXAgPSBkb2N1bWVu
dC0+d3JhcHBlckNhY2hlTWFwKCk7CiAgICAgICAgIGZvciAoSlNXcmFwcGVyQ2FjaGVNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSB3cmFwcGVyQ2FjaGVNYXAuYmVnaW4oKTsgaXRlciAhPSB3cmFwcGVyQ2Fj
aGVNYXAuZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgaWYgKEpTTm9kZSogd3JhcHBlciA9
IGl0ZXItPnNlY29uZC0+dW5jaGVja2VkR2V0KG5vZGUpKQotICAgICAgICAgICAgICAgIG1hcmtT
dGFjay5hcHBlbmQod3JhcHBlcik7CisgICAgICAgICAgICBpZiAoSlNDZWxsKiogd3JhcHBlclNs
b3QgPSBpdGVyLT5zZWNvbmQtPnVuY2hlY2tlZEdldFNsb3Qobm9kZSkpCisgICAgICAgICAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCh3cmFwcGVyU2xvdCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGZvciAoSlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvciB3b3JsZEl0
ZXIoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsgd29ybGRJdGVyOyArK3dvcmxk
SXRlcikgewotICAgICAgICBpZiAoRE9NT2JqZWN0KiB3cmFwcGVyID0gd29ybGRJdGVyLT5tX3dy
YXBwZXJzLnVuY2hlY2tlZEdldChub2RlKSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
d3JhcHBlcik7CisgICAgICAgIGlmIChKU0NlbGwqKiB3cmFwcGVyU2xvdCA9IHdvcmxkSXRlci0+
bV93cmFwcGVycy51bmNoZWNrZWRHZXRTbG90KG5vZGUpKQorICAgICAgICAgICAgbWFya1N0YWNr
LmFwcGVuZCh3cmFwcGVyU2xvdCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZTBiNWI4OTFkNDBiZmMwMDdi
OTNhYjdiZmMxYjc2NjRjOWEzOGZlNi4uODI4YWI0OWNkYjk2NWNkZmNlOTkxOWEyNTY5MThmNDIy
MTMzZDVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcApAQCAtNTMsMTQgKzUzLDE0IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6Om1h
cmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIAogICAgIEpTRE9NU3RydWN0dXJlTWFw
OjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1cmVzKCkuZW5kKCk7CiAgICAgZm9yIChKU0RPTVN0cnVj
dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBzdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKGl0LT5zZWNvbmQtPnN0b3JlZFByb3RvdHlw
ZSgpKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZChpdC0+c2Vjb25kLT5zdG9yZWRQcm90b3R5
cGVTbG90KCkpOwogCiAgICAgSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgZW5kMiA9IGNv
bnN0cnVjdG9ycygpLmVuZCgpOwogICAgIGZvciAoSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0
b3IgaXQyID0gY29uc3RydWN0b3JzKCkuYmVnaW4oKTsgaXQyICE9IGVuZDI7ICsraXQyKQotICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKGl0Mi0+c2Vjb25kKTsKKyAgICAgICAgbWFya1N0YWNrLmFw
cGVuZChpdDItPnNlY29uZC5zbG90KCkpOwogCiAgICAgaWYgKGQoKS0+bV9pbmplY3RlZFNjcmlw
dCkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChkKCktPm1faW5qZWN0ZWRTY3JpcHQpOworICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKGQoKS0+bV9pbmplY3RlZFNjcmlwdC5zbG90KCkpOwogfQog
CiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpzZXRDdXJyZW50RXZlbnQoRXZlbnQqIGV2dCkKQEAg
LTc1LDEyICs3NSwxMiBAQCBFdmVudCogSlNET01HbG9iYWxPYmplY3Q6OmN1cnJlbnRFdmVudCgp
IGNvbnN0CiAKIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnNldEluamVjdGVkU2NyaXB0KEpTT2Jq
ZWN0KiBpbmplY3RlZFNjcmlwdCkKIHsKLSAgICBkKCktPm1faW5qZWN0ZWRTY3JpcHQgPSBpbmpl
Y3RlZFNjcmlwdDsKKyAgICBkKCktPm1faW5qZWN0ZWRTY3JpcHQuc2V0KGdsb2JhbERhdGEoKSwg
dGhpcywgaW5qZWN0ZWRTY3JpcHQpOwogfQogCiBKU09iamVjdCogSlNET01HbG9iYWxPYmplY3Q6
OmluamVjdGVkU2NyaXB0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZCgpLT5tX2luamVjdGVkU2Ny
aXB0OworICAgIHJldHVybiBkKCktPm1faW5qZWN0ZWRTY3JpcHQuZ2V0KCk7CiB9CiAKIHZvaWQg
SlNET01HbG9iYWxPYmplY3Q6OmRlc3Ryb3lKU0RPTUdsb2JhbE9iamVjdERhdGEodm9pZCoganNE
T01HbG9iYWxPYmplY3REYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmgKaW5kZXggOGViNTVjMTQ4NDdjYmU5N2Q0MTgyNDJiMzdmYjc0ZDQzN2Q1
Y2U3My4uNGRjZTdhNTE1YzNkYmEyMzMwNWFmNDQ2YjczN2E2NmRkOThmZjBhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiwgUmVmUHRy
PEpTQzo6U3RydWN0dXJlPiA+IEpTRE9NU3RydWN0dXJlTWFwOwotICAgIHR5cGVkZWYgSGFzaE1h
cDxjb25zdCBKU0M6OkNsYXNzSW5mbyosIEpTQzo6SlNPYmplY3QqPiBKU0RPTUNvbnN0cnVjdG9y
TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBKU0M6OkNsYXNzSW5mbyosIEpTQzo6V3Jp
dGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+ID4gSlNET01Db25zdHJ1Y3Rvck1hcDsKIAogICAgIGNs
YXNzIEpTRE9NR2xvYmFsT2JqZWN0IDogcHVibGljIEpTQzo6SlNHbG9iYWxPYmplY3QgewogICAg
ICAgICB0eXBlZGVmIEpTQzo6SlNHbG9iYWxPYmplY3QgQmFzZTsKQEAgLTc2LDcgKzc2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgIDogSlNHbG9iYWxPYmplY3REYXRh
KGRlc3RydWN0b3IpCiAgICAgICAgICAgICAgICAgLCBldnQoMCkKICAgICAgICAgICAgICAgICAs
IG1fd29ybGQod29ybGQpCi0gICAgICAgICAgICAgICAgLCBtX2luamVjdGVkU2NyaXB0KDApCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICB9CiAKQEAgLTg1LDcgKzg0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgICAgICBFdmVudCogZXZ0OwogICAgICAgICAgICAgUmVmUHRy
PERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBtX2luamVj
dGVkU2NyaXB0OworICAgICAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1faW5q
ZWN0ZWRTY3JpcHQ7CiAgICAgICAgIH07CiAKICAgICBwcml2YXRlOgpAQCAtOTcsMTEgKzk2LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBDb25zdHJ1Y3RvckNs
YXNzPgogICAgIGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Db25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICB7Ci0gICAgICAgIGlmIChKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGdsb2JhbE9iamVj
dC0+Y29uc3RydWN0b3JzKCkuZ2V0KCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pKQorICAgICAg
ICBpZiAoSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPmNvbnN0cnVj
dG9ycygpLmdldCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvKS5nZXQoKSkKICAgICAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3Ig
PSBuZXcgKGV4ZWMpIENvbnN0cnVjdG9yQ2xhc3MoZXhlYywgY29uc3RfY2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogICAgICAgICBBU1NFUlQoIWdsb2JhbE9iamVjdC0+
Y29uc3RydWN0b3JzKCkuY29udGFpbnMoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbykpOwotICAg
ICAgICBnbG9iYWxPYmplY3QtPmNvbnN0cnVjdG9ycygpLnNldCgmQ29uc3RydWN0b3JDbGFzczo6
c19pbmZvLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNP
YmplY3Q+IHRlbXA7CisgICAgICAgIGdsb2JhbE9iamVjdC0+Y29uc3RydWN0b3JzKCkuYWRkKCZD
b25zdHJ1Y3RvckNsYXNzOjpzX2luZm8sIHRlbXApLmZpcnN0LT5zZWNvbmQuc2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RvcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA2YWZiZGJlYjEwODhjMjU2ZGUwZWQwOTkxMTVjN2Ux
NGFlNzJhNjVmLi4yNWY5NWZhNmIxZDVjZWQzZmU2Zjk2Y2QyODIyZGFkNWJlZGRmYTRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBA
IC00NzUsNyArNDc1LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0g
YWN0aXZlRnJhbWUtPnNldHRpbmdzKCkpIHsKICAgICAgICAgICAgIGlmIChzZXR0aW5ncy0+dXNl
c0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUtPnRy
ZWUoKS0+cGFyZW50KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYWxsb3dzQWNjZXNzRnJvbShl
eGVjKSkKLSAgICAgICAgICAgICAgICAgICAgcHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgImxv
Y2F0aW9uIiksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAibG9jYXRpb24iKSwgdmFsdWUpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjgyLDcgKzY4
Miw3IEBAIGlubGluZSB2b2lkIERpYWxvZ0hhbmRsZXI6OmRpYWxvZ0NyZWF0ZWQoRE9NV2luZG93
KiBkaWFsb2cpCiAgICAgLy8gICAgICAgIHdvcmxkIGlmIGRpYWxvZ0FyZ3VtZW50cyBjb21lcyBm
cm9tIGFuIGlzb2xhdGVkIHdvcmxkLgogICAgIG1fZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTVdpbmRv
dyhkaWFsb2ctPmZyYW1lKCksIG5vcm1hbFdvcmxkKG1fZXhlYy0+Z2xvYmFsRGF0YSgpKSk7CiAg
ICAgaWYgKEpTVmFsdWUgZGlhbG9nQXJndW1lbnRzID0gbV9leGVjLT5hcmd1bWVudCgxKSkKLSAg
ICAgICAgbV9nbG9iYWxPYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKG1fZXhlYywgImRpYWxv
Z0FyZ3VtZW50cyIpLCBkaWFsb2dBcmd1bWVudHMpOworICAgICAgICBtX2dsb2JhbE9iamVjdC0+
cHV0RGlyZWN0KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKG1fZXhlYywgImRpYWxv
Z0FyZ3VtZW50cyIpLCBkaWFsb2dBcmd1bWVudHMpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBEaWFs
b2dIYW5kbGVyOjpyZXR1cm5WYWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDY1MDk2YjkzYzA2ZDgzN2E0MTRhZDdh
ODNmYjZhNjE5ZDIxN2ZhZmYuLjc4YmU1MGU0MDg1MGU3MTYzYTkxNzNmMjc1ZTViNTM2MDkwNTg5
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
Y3BwCkBAIC00NSw3ICs0NSw2IEBAIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd1NoZWxsOjpz
X2luZm8gPSB7ICJKU0RPTVdpbmRvd1NoZWxsIiwgMCwgMCwgMCB9OwogCiBKU0RPTVdpbmRvd1No
ZWxsOjpKU0RPTVdpbmRvd1NoZWxsKFBhc3NSZWZQdHI8RE9NV2luZG93PiB3aW5kb3csIERPTVdy
YXBwZXJXb3JsZCogd29ybGQpCiAgICAgOiBCYXNlKEpTRE9NV2luZG93U2hlbGw6OmNyZWF0ZVN0
cnVjdHVyZShqc051bGwoKSkpCi0gICAgLCBtX3dpbmRvdygwKQogICAgICwgbV93b3JsZCh3b3Js
ZCkKIHsKICAgICBzZXRXaW5kb3cod2luZG93KTsKQEAgLTY2LDcgKzY1LDcgQEAgdm9pZCBKU0RP
TVdpbmRvd1NoZWxsOjpzZXRXaW5kb3coUGFzc1JlZlB0cjxET01XaW5kb3c+IGRvbVdpbmRvdykK
ICAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlU3Ry
dWN0dXJlKHByb3RvdHlwZSk7CiAgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gbmV3IChK
U0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpIEpTRE9NV2luZG93KHN0cnVjdHVyZS5y
ZWxlYXNlKCksIGRvbVdpbmRvdywgdGhpcyk7CiAgICAgcHJvdG90eXBlLT5wdXRBbm9ueW1vdXNW
YWx1ZSgwLCBqc0RPTVdpbmRvdyk7Ci0gICAgc2V0V2luZG93KGpzRE9NV2luZG93KTsKKyAgICBz
ZXRXaW5kb3coKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwganNET01XaW5kb3cp
OwogfQogCiAvLyAtLS0tCkBAIC03Nyw3ICs3Niw3IEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6
bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEJhc2U6Om1hcmtDaGls
ZHJlbihtYXJrU3RhY2spOwogICAgIGlmIChtX3dpbmRvdykKLSAgICAgICAgbWFya1N0YWNrLmFw
cGVuZChtX3dpbmRvdyk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV93aW5kb3cuc2xvdCgp
KTsKIH0KIAogVVN0cmluZyBKU0RPTVdpbmRvd1NoZWxsOjpjbGFzc05hbWUoKSBjb25zdApAQCAt
MTQ3LDcgKzE0Niw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3dTaGVsbDo6bG9va3VwU2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVyCiAKIEpTT2JqZWN0KiBKU0RP
TVdpbmRvd1NoZWxsOjp1bndyYXBwZWRPYmplY3QoKQogewotICAgIHJldHVybiBtX3dpbmRvdzsK
KyAgICByZXR1cm4gbV93aW5kb3cuZ2V0KCk7CiB9CiAKIC8vIC0tLS0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAppbmRleCA4ODgzMjVkMDNmY2M4ZjM0
YzllMzNhYTI1ZmFhZDAzMzI1NDgzZjcxLi5kNTg1ZmQ0OTNlMTljZmIwNWNmMTE3NzZjZGMyZDFj
NTI4ZTdlZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5oCkBAIC00MywxMSArNDMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBK
U0RPTVdpbmRvd1NoZWxsKFBhc3NSZWZQdHI8RE9NV2luZG93PiwgRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCk7CiAgICAgICAgIHZpcnR1YWwgfkpTRE9NV2luZG93U2hlbGwoKTsKIAotICAgICAgICBK
U0RPTVdpbmRvdyogd2luZG93KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3c7IH0KLSAgICAgICAg
dm9pZCBzZXRXaW5kb3coSlNET01XaW5kb3cqIHdpbmRvdykKKyAgICAgICAgSlNET01XaW5kb3cq
IHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93LmdldCgpOyB9CisgICAgICAgIHZvaWQg
c2V0V2luZG93KEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0RPTVdpbmRvdyogd2lu
ZG93KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfQVJHKHdpbmRvdywgd2luZG93KTsK
LSAgICAgICAgICAgIG1fd2luZG93ID0gd2luZG93OworICAgICAgICAgICAgbV93aW5kb3cuc2V0
KGdsb2JhbERhdGEsIHRoaXMsIHdpbmRvdyk7CiAgICAgICAgICAgICBzZXRQcm90b3R5cGUod2lu
ZG93LT5wcm90b3R5cGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBzZXRXaW5kb3coUGFz
c1JlZlB0cjxET01XaW5kb3c+KTsKQEAgLTg1LDcgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCgpOwogICAg
ICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJl
dHVybiAmc19pbmZvOyB9CiAKLSAgICAgICAgSlNET01XaW5kb3cqIG1fd2luZG93OworICAgICAg
ICBKU0M6OldyaXRlQmFycmllcjxKU0RPTVdpbmRvdz4gbV93aW5kb3c7CiAgICAgICAgIFJlZlB0
cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNTYwNDM3NGMyZjNkN2FkZGVj
YjU3Yzg2MjczMzhjNjM1NWZiMmQ2YS4uOTY3Nzg4MjY2MmJiYzUyMWQ5NjYxZDY2NzRmMjU4Y2Iy
Y2MzNzRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0V2ZW50
TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lcihKU09iamVjdCogZnVuY3Rpb24sIEpTT2JqZWN0KiB3
cmFwcGVyLCBib29sIGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQp
CiAgICAgOiBFdmVudExpc3RlbmVyKEpTRXZlbnRMaXN0ZW5lclR5cGUpCi0gICAgLCBtX2pzRnVu
Y3Rpb24oZnVuY3Rpb24pCiAgICAgLCBtX2lzQXR0cmlidXRlKGlzQXR0cmlidXRlKQogICAgICwg
bV9pc29sYXRlZFdvcmxkKGlzb2xhdGVkV29ybGQpCiB7CiAgICAgaWYgKHdyYXBwZXIpCiAgICAg
ICAgIG1fd3JhcHBlciA9IHdyYXBwZXI7CisgICAgbV9qc0Z1bmN0aW9uLnNldCgqbV9pc29sYXRl
ZFdvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIGZ1bmN0aW9uKTsKIH0KIAogSlNFdmVudExp
c3RlbmVyOjp+SlNFdmVudExpc3RlbmVyKCkKQEAgLTU1LDcgKzU1LDcgQEAgSlNPYmplY3QqIEpT
RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopIGNvbnN0CiB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6bWFya0pTRnVuY3Rpb24oTWFya1N0YWNr
JiBtYXJrU3RhY2spCiB7CiAgICAgaWYgKG1fanNGdW5jdGlvbikKLSAgICAgICAgbWFya1N0YWNr
LmFwcGVuZChtX2pzRnVuY3Rpb24pOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1fanNGdW5j
dGlvbi5zbG90KCkpOwogfQogCiB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXZlbnQqIGV2ZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAppbmRleCA4
M2QwZDJlZTliOGNjZmRjNGEwMDgxMjFjNTZhMmE3NjgxOTkwZjZjLi40N2ZmNDRlYzc2ZTIzODEy
M2RlMmJhMzc1ZjY1MDEzMzFhMDdhNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuaApAQCAtNjYsNyArNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXZlbnQqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIG11dGFibGUgSlNDOjpKU09iamVj
dCogbV9qc0Z1bmN0aW9uOworICAgICAgICBtdXRhYmxlIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6
SlNPYmplY3Q+IG1fanNGdW5jdGlvbjsKICAgICAgICAgbXV0YWJsZSBKU0M6OldlYWtHQ1B0cjxK
U0M6OkpTT2JqZWN0PiBtX3dyYXBwZXI7CiAKICAgICAgICAgYm9vbCBtX2lzQXR0cmlidXRlOwpA
QCAtNzYsNyArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgaW5saW5lIEpTQzo6SlNP
YmplY3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2pz
RnVuY3Rpb24pCi0gICAgICAgICAgICBtX2pzRnVuY3Rpb24gPSBpbml0aWFsaXplSlNGdW5jdGlv
bihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgICAgIG1fanNGdW5jdGlvbi5zZXQo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmdsb2JhbERhdGEoKSwgbV93cmFwcGVyLmdldCgpLCBp
bml0aWFsaXplSlNGdW5jdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CiAKICAgICAgICAg
Ly8gVmVyaWZ5IHRoYXQgd2UgaGF2ZSBhIHZhbGlkIHdyYXBwZXIgcHJvdGVjdGluZyBvdXIgZnVu
Y3Rpb24gZnJvbQogICAgICAgICAvLyBnYXJiYWdlIGNvbGxlY3Rpb24uCkBAIC04Niw5ICs4Niw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBUcnkgdG8gdmVyaWZ5IHRoYXQg
bV9qc0Z1bmN0aW9uIHdhc24ndCByZWN5Y2xlZC4gKE5vdCBleGFjdCwgc2luY2UgYW4KICAgICAg
ICAgLy8gZXZlbnQgbGlzdGVuZXIgY2FuIGJlIGFsbW9zdCBhbnl0aGluZywgYnV0IHRoaXMgbWFr
ZXMgdGVzdC13cml0aW5nIGVhc2llcikuCi0gICAgICAgIEFTU0VSVCghbV9qc0Z1bmN0aW9uIHx8
IHN0YXRpY19jYXN0PEpTQzo6SlNDZWxsKj4obV9qc0Z1bmN0aW9uKS0+aXNPYmplY3QoKSk7Cisg
ICAgICAgIEFTU0VSVCghbV9qc0Z1bmN0aW9uIHx8IHN0YXRpY19jYXN0PEpTQzo6SlNDZWxsKj4o
bV9qc0Z1bmN0aW9uLmdldCgpKS0+aXNPYmplY3QoKSk7CiAKLSAgICAgICAgcmV0dXJuIG1fanNG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fanNGdW5jdGlvbi5nZXQoKTsKICAgICB9CiAKICAg
ICBpbmxpbmUgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmludmFsaWRhdGVKU0Z1bmN0aW9uKEpTQzo6
SlNPYmplY3QqIHdyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMGI0MGVmMDQ0ZDVjYWRkZjIzZTk5ZDQwMzdh
Nzc2MDM5MjJkYWRjNS4uMjgxN2FlNjkzZjA4YWE0YmUxNTM2YmE3MjIxOWYyMmNiMTRmNTM1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3Vz
dG9tLmNwcApAQCAtOTYsNyArOTYsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjphbGwoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogdm9pZCBKU0hUTUxEb2N1bWVudDo6c2V0QWxsKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyBBZGQgImFsbCIgdG8gdGhlIHByb3Bl
cnR5IG1hcC4KLSAgICBwdXREaXJlY3QoSWRlbnRpZmllcihleGVjLCAiYWxsIiksIHZhbHVlKTsK
KyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJhbGwi
KSwgdmFsdWUpOwogfQogCiAvLyBDdXN0b20gZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAppbmRleCBmMmFkODAzNzJkMDNm
YWZhN2ZmZDBlZmFkNzFmNDI5ODM3YWU1ZDBhLi41MTkyZTEyZTJhNDcyOWYxMDYzM2UzNTRjOWE1
MDM1NGYxNGJhNjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lt
YWdlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1h
Z2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTSW1h
Z2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiSW1hZ2VDb25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsK
IEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6SlNJbWFnZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICA6IERPTUNvbnN0cnVjdG9yV2l0
aERvY3VtZW50KEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTSFRNTEltYWdlRWxlbWVudFByb3RvdHlw
ZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU0hUTUxJbWFn
ZUVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CiB9CiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEltYWdlKEV4ZWNT
dGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1h
Z2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRh
Q3VzdG9tLmNwcAppbmRleCA2MWM1MTEyOGU0OGQ5NDI2NjAwODUxNzBjNzcyOTMyNDMzZjM3Mzg0
Li44NzhlMWRlZWE2MGE5NjAzOTg3NGM5NTY2MDMxNzVmZDRlMDUwMWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCkBAIC00OSw3ICs0
OSw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEltYWdlRGF0YSogaW1hZ2VECiAgICAgSWRlbnRpZmllciBkYXRhTmFtZShl
eGVjLCAiZGF0YSIpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFN0cnVjdHVyZT4s
IGNwYVN0cnVjdHVyZSwgKEpTQnl0ZUFycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKSk7
CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBjcGFDbGFzc0luZm8gPSB7ICJDYW52YXNQaXhl
bEFycmF5IiwgMCwgMCwgMCB9OwotICAgIHdyYXBwZXItPnB1dERpcmVjdChkYXRhTmFtZSwgbmV3
IChleGVjKSBKU0J5dGVBcnJheShleGVjLCBjcGFTdHJ1Y3R1cmUsIGltYWdlRGF0YS0+ZGF0YSgp
LT5kYXRhKCksICZjcGFDbGFzc0luZm8pLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHdy
YXBwZXItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGRhdGFOYW1lLCBuZXcgKGV4ZWMp
IEpTQnl0ZUFycmF5KGV4ZWMsIGNwYVN0cnVjdHVyZSwgaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEo
KSwgJmNwYUNsYXNzSW5mbyksIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgZXhlYy0+aGVh
cCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1hZ2VEYXRhLT5kYXRhKCktPmxlbmd0aCgpKTsK
ICAgICAKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCmluZGV4IDBmNDdi
N2IyMzIyOTcwZmU3MDM5MDM3NmFjMDMyMDdkOWYwMmMzNzQuLjdjMDBiZDQzYWMzZjE0N2Q1ZDA4
MjhkZDIwOTI1OTU4NWU1MGY1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApAQCAtNzksNyArNzks
NyBAQCBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVDaGFpbihFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwogICAgIGRvIHsK
LSAgICAgICAgbGlzdC5hcHBlbmQoKml0ZXIpOworICAgICAgICBsaXN0LmFwcGVuZChpdGVyLT5n
ZXQoKSk7CiAgICAgICAgICsraXRlcjsKICAgICB9IHdoaWxlIChpdGVyICE9IGVuZCk7CiAKQEAg
LTEwMCw3ICsxMDAsNyBAQCBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVUeXBl
KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGJvb2wgZm91bmRMb2NhbFNjb3BlID0gZmFsc2U7CiAg
ICAgZm9yIChTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgSlNPYmplY3QqIHNjb3BlID0gKml0ZXI7Cisg
ICAgICAgIEpTQzo6RGVwcmVjYXRlZFB0cjxKU09iamVjdD4gc2NvcGUgPSAqaXRlcjsKICAgICAg
ICAgaWYgKHNjb3BlLT5pc0FjdGl2YXRpb25PYmplY3QoKSkgewogICAgICAgICAgICAgaWYgKCFm
b3VuZExvY2FsU2NvcGUpIHsKICAgICAgICAgICAgICAgICAvLyBGaXJzdCBhY3RpdmF0aW9uIG9i
amVjdCBpcyBsb2NhbCBzY29wZSwgZWFjaCBzdWNjZXNzaXZlIGFjdGl2YXRpb24gb2JqZWN0IGlz
IGNsb3N1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVG
aWx0ZXJDb25kaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmls
dGVyQ29uZGl0aW9uLmNwcAppbmRleCBiMjY5ZTVmYTU5MTg5OThkNzgwZTllZDBlYTIzMmM4Zjc3
OWZkYjYyLi5lNTNjZTEyZjhjMzkyN2FkNWNlM2I4ZDY2NjllY2IzMTdmYzY3NWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5j
cHAKQEAgLTM5LDE0ICszOSwxNCBAQCBKU05vZGVGaWx0ZXJDb25kaXRpb246OkpTTm9kZUZpbHRl
ckNvbmRpdGlvbihKU1ZhbHVlIGZpbHRlcikKIAogdm9pZCBKU05vZGVGaWx0ZXJDb25kaXRpb246
Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7Ci0gICAgbWFya1N0YWNrLmFw
cGVuZChtX2ZpbHRlcik7CisgICAgbWFya1N0YWNrLmFwcGVuZChtX2ZpbHRlci5zbG90KCkpOwog
fQogCiBzaG9ydCBKU05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIE5vZGUqIGZpbHRlck5vZGUpIGNvbnN0CiB7CiAgICAgSlNMb2NrIGxvY2soU2ls
ZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAgIGlmICghbV9maWx0ZXIuaXNPYmplY3QoKSkKKyAg
ICBpZiAoIW1fZmlsdGVyLT5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6
RklMVEVSX0FDQ0VQVDsKIAogICAgLy8gVGhlIGV4ZWMgYXJndW1lbnQgaGVyZSBzaG91bGQgb25s
eSBiZSBudWxsIGlmIHRoaXMgd2FzIGNhbGxlZCBmcm9tIGEKQEAgLTU4LDExICs1OCwxMSBAQCBz
aG9ydCBKU05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIE5vZGUqIGZpbHRlck5vZGUpCiAgICAgaWYgKCFleGVjKQogICAgICAgICByZXR1cm4gTm9k
ZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsKIAotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBtX2ZpbHRl
cjsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gbV9maWx0ZXIuZ2V0KCk7CiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwg
Y2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAg
ZnVuY3Rpb24gPSBtX2ZpbHRlci5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiYWNjZXB0Tm9k
ZSIpKTsKKyAgICAgICAgZnVuY3Rpb24gPSBtX2ZpbHRlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgImFjY2VwdE5vZGUiKSk7CiAgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVu
Y3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkg
ewogICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk5v
ZGVGaWx0ZXIgb2JqZWN0IGRvZXMgbm90IGhhdmUgYW4gYWNjZXB0Tm9kZSBmdW5jdGlvbiIpKTsK
QEAgLTc3LDcgKzc3LDcgQEAgc2hvcnQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2Rl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBOb2RlKiBmaWx0ZXJOb2RlKQogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7
CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBtX2ZpbHRlciwgYXJncyk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6
OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9maWx0ZXIuZ2V0KCks
IGFyZ3MpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIE5v
ZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgKaW5kZXggYjk2NTM0YTBjZjRlMzkyZWRhMDMz
MTA0OGZiN2YxY2UwOGY3NDdjZC4uMTRiMGMxZDI1YWZjNmVkNTJiZWI2MzUwMTAwMWZiMGY3Y2Jm
MzJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVy
Q29uZGl0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVy
Q29uZGl0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHNob3J0IGFjY2VwdE5vZGUoU2NyaXB0U3RhdGUqLCBOb2RlKikgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQWdncmVnYXRlKEpTQzo6TWFya1N0YWNrJik7CiAKLSAg
ICAgICAgbXV0YWJsZSBKU0M6OkpTVmFsdWUgbV9maWx0ZXI7CisgICAgICAgIG11dGFibGUgSlND
OjpEZXByZWNhdGVkUHRyPEpTQzo6VW5rbm93bj4gbV9maWx0ZXI7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUZpbHRlckN1c3RvbS5jcHAKaW5kZXggYmI5MGM0ZjdmMGI2ZGNjOWZkZDQ1Yjk5ZTJmOGMxOTQ5
YjJhMTcxOC4uYmM3OWU5OTY3OTdiMTY4YmM3OTY5NDAyNzllYTY3MzU3YzljMjlhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNOb2RlRmls
dGVyLmgiCiAKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNsdWRlICJKU05vZGUu
aCIKICNpbmNsdWRlICJKU05vZGVGaWx0ZXJDb25kaXRpb24uaCIKICNpbmNsdWRlICJOb2RlRmls
dGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IDRlY2ZlNTg1MmM4Mzg0NDk2YWEzOGM2NzE3YmZiYTNiNGVlNDQ0MTcu
LmUxNGZiNmRhNWJkMzk3NGVmODFiYTdkNWJhNzNiYmY3OWI5OTcxOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0zOCw4
ICszOCw4IEBAIGNvbnN0IENsYXNzSW5mbyBKU09wdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJPcHRpb25Db25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsKIEpTT3B0aW9uQ29uc3RydWN0b3I6OkpT
T3B0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIDogRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQoSlNPcHRpb25Db25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
LCBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUsIEpTSFRNTE9wdGlvbkVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFs
T2JqZWN0KSwgTm9uZSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKDQpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3Rv
dHlwZSwgSlNIVE1MT3B0aW9uRWxlbWVudFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmpl
Y3QpLCBOb25lKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcig0KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwg
RG9udEVudW0pOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RIVE1MT3B0aW9uRWxlbWVudChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNw
cAppbmRleCA3Mjc0Y2QwZjJhNGFkMmUwNmYzNDBmY2Q1YTZiNTI4ZmVkZjI1NjI5Li4wZmNkMWVh
N2YyZDYyZTRjOGViZWRkN2FhNmZhZTI3OGZjYjMwNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAK
QEAgLTc0LDcgKzc0LDcgQEAgSlNWYWx1ZSBKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0oRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgc3RyaW5n
VG9VU3RyaW5nKG1faW1wbC0+Y29sdW1uTmFtZXMoKVtpXSkpLCBqc1ZhbHVlLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOworICAgICAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZXhlYywgc3RyaW5nVG9VU3RyaW5nKG1faW1wbC0+Y29sdW1uTmFtZXMo
KVtpXSkpLCBqc1ZhbHVlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIH0KIAogICAgIHJl
dHVybiBvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCAxNmYxOGQzNWEwNmZhMGFkZGIwZTNiMTdjYjJlMDRj
MGVkNTdiYWQ0Li5kNjViY2UyNjAxMzhmOTE4NjkwZWNlODZmZDI0Y2JiNDg4ZWNjMGRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0
YS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OnJlc3Rv
cmUoRnJhbWUqIGZyYW1lKQogICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dTaGVsbCA9
IGl0ZXItPnNlY29uZC5nZXQoKTsKIAogICAgICAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9
IG1fd2luZG93cy5nZXQod29ybGQpKQotICAgICAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRv
dyh3aW5kb3cpOworICAgICAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyh3aW5kb3ctPmds
b2JhbERhdGEoKSwgd2luZG93KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB3aW5kb3dT
aGVsbC0+c2V0V2luZG93KGZyYW1lLT5kb21XaW5kb3coKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCmluZGV4IGUwNmVjY2I3YjUyNjYyZThjZGM3YzBj
ZjBkNDZmM2E5Y2QyZWZmNGQuLmI1YzFmMDExOTY0NjA4MzUyNjJkYzIwOTYzM2QwYjc0YzM4YTY2
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcApAQCAt
NjIsNyArNjIsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVFeGNlcHRpb24oU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlKQogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYgdmFsdWUpCiB7
CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBzY3JpcHRTdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wdXREaXJlY3QoSWRlbnRpZmllcihzY3JpcHRTdGF0
ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0KCkpOworICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7CiAgICAgcmV0dXJuIGhh
bmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBT
Y3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNo
YXIqIG5hbWUsIEluc3BlY3QKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09u
bHkpOwogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwot
ICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUp
LCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7CisgICAgZ2xvYmFsT2Jq
ZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihzY3Jp
cHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsK
ICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKIH0KIApAQCAtNzksNyAr
NzksNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5qZWN0ZQogewogICAgIEpTTG9jayBsb2NrKFNpbGVu
Y2VBc3NlcnRpb25zT25seSk7CiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoSWRlbnRpZmllcihzY3Jp
cHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsK
KyAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdG9KUyhzY3JpcHRTdGF0ZSwgZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSkpOwogICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwog
fQogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBiMDJhNGJiMzgwMGQ0
NjQxNDU2MTA0ZWQ1MDk1ZDc5OTMxMmFkMmFkLi5mNzIxMzM0YzFmN2E3ZGI2ZWZjMDU2YTVlMWNm
NzRlNDJiNDdmNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEwNDAsMTQgKzEwNDAsMTQgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHB1dFByb3BlcnR5KEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpbmRleCwgSlNW
YWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChhcnJheS0+Y2FuU2V0SW5kZXgoaW5kZXgp
KQotICAgICAgICAgICAgYXJyYXktPnNldEluZGV4KGluZGV4LCB2YWx1ZSk7CisgICAgICAgICAg
ICBhcnJheS0+c2V0SW5kZXgobV9leGVjLT5nbG9iYWxEYXRhKCksIGluZGV4LCB2YWx1ZSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGFycmF5LT5wdXQobV9leGVjLCBpbmRleCwgdmFsdWUp
OwogICAgIH0KIAogICAgIHZvaWQgcHV0UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHksIEpTVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICBvYmpl
Y3QtPnB1dERpcmVjdChwcm9wZXJ0eSwgdmFsdWUpOworICAgICAgICBvYmplY3QtPnB1dERpcmVj
dChtX2V4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHksIHZhbHVlKTsKICAgICB9CiAKICAgICBi
b29sIHJlYWRGaWxlKFJlZlB0cjxGaWxlPiYgZmlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYWJlZjA0ZTg3ZjdjNjhk
NDkwMzU4MTYwNzY2Yzc4ZjlkODliOWM5Yi4uNDZhNDRkMTk3NzNiNGQ3NGUzYmMxN2U1MGQyMGVk
ZThmOTMyMWU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTE3MzUsMTMgKzE3MzUsMTMgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVp
bHQtaW4gY29uc3RydWN0b3JcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk
aW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiAmJiAkY2xhc3NOYW1lIGVxICJKU2JsYWgiKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFz
c05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVj
dCktPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBz
dGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNp
ZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFi
bGUifSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdFxuIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFt
ZSo+KHRoaXNPYmplY3QpLT5wdXREaXJlY3QoSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2
YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXMg
PSBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCk7XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbFR5cGUqIGltcCA9
IHN0YXRpY19jYXN0PCRpbXBsVHlwZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKQEAgLTE4
MjQsOSArMTgyNCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3JcbiIpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01X
aW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0
YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2Jq
ZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xh
c3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVc
IiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
fVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwpAQCAtMjk0
MiwxMSArMjk0MiwxMSBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdCgke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90
eXBlKCkpLCBnbG9iYWxPYmplY3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4i
KTsKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJv
dG90eXBlLCBnbG9iYWxPYmplY3QtPnByb3RvdHlwZSgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
O1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBnbG9iYWxPYmpl
Y3QtPnByb3RvdHlwZSgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCAke3Byb3RvQ2xhc3NOYW1lfTo6c2VsZihleGVjLCBnbG9i
YWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCAke3Byb3RvQ2xhc3NOYW1lfTo6c2VsZihleGVjLCBnbG9i
YWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7CiAgICAgfQotICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCwganNOdW1iZXIoJHtudW1iZXJPZmNvbnN0cnVjdFBhcmFtZXRlcnN9KSwgUmVhZE9ubHkgfCBE
b250RGVsZXRlIHwgRG9udEVudW0pO1xuIikgaWYgJG51bWJlck9mY29uc3RydWN0UGFyYW1ldGVy
czsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoJHtudW1iZXJPZmNv
bnN0cnVjdFBhcmFtZXRlcnN9KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pO1xu
IikgaWYgJG51bWJlck9mY29uc3RydWN0UGFyYW1ldGVyczsKICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9XG5cbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggZjNkOGU3N2U5YTE4ZDlhZTI3MWM0MDM2OGU3ZDdmZjQ3MTgzZGFl
MC4uYmU3ZTAwYTNlYjQzY2JjMzFmOWZjNGU5YWU4NmVhNzFkNTA5MGUyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTk0MCw3ICs5NDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBv
c3RUYXNrKFBhc3NPd25QdHI8VGFzaz4pOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0
J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCiAjaWYgVVNFKEpTQykKLSAgICB0eXBlZGVmIEpT
Qzo6V2Vha0dDTWFwPFdlYkNvcmU6Ok5vZGUqLCBKU05vZGUqPiBKU1dyYXBwZXJDYWNoZTsKKyAg
ICB0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFdlYkNvcmU6Ok5vZGUqLCBKU05vZGU+IEpTV3JhcHBl
ckNhY2hlOwogICAgIHR5cGVkZWYgSGFzaE1hcDxET01XcmFwcGVyV29ybGQqLCBKU1dyYXBwZXJD
YWNoZSo+IEpTV3JhcHBlckNhY2hlTWFwOwogICAgIEpTV3JhcHBlckNhY2hlTWFwJiB3cmFwcGVy
Q2FjaGVNYXAoKSB7IHJldHVybiBtX3dyYXBwZXJDYWNoZU1hcDsgfQogICAgIEpTV3JhcHBlckNh
Y2hlKiBnZXRXcmFwcGVyQ2FjaGUoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggMWY0ZTNjNDQzZDMxZjYyOGY0N2Y1MmRhNDk0OWFkMDg2Yzk1MTIwYy4uYWZkYjdi
NzM2YTQ5NTMxZDIxZjA3NTdhNTNmYzZmYzc1ZTI4OGEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDExLTAxLTI3ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVy
dCBtYXJrc3RhY2sgdG8gYSBzbG90IHZpc2l0b3IgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzIxOQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcg
bWFya2luZyBhcGkKKworICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKC1bV2ViU2NyaXB0Q2FsbEZyYW1lIHNjb3BlQ2hhaW5dKToKKwogMjAxMS0w
MS0yNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1tCmluZGV4IDYzYTkxYTllMWYzOWI0ODA2NzRlZWFjYTM1
MzBjNDI5NGNjYWQ2OTYuLjk2YTFhNDI3MWMzZDUzZmViMjNjYjk1Y2U4MzljYzdjYTRlYWE0MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxl
Z2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVs
ZWdhdGUubW0KQEAgLTE4NCw5ICsxODQsOSBAQCBOU1N0cmluZyAqIGNvbnN0IFdlYlNjcmlwdEVy
cm9yTGluZU51bWJlcktleSA9IEAiV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyIjsKIAogICAgIFNj
b3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBzY29wZUNoYWluLT5lbmQoKTsKICAgICBmb3IgKFNjb3Bl
Q2hhaW5JdGVyYXRvciBpdCA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gKml0OworICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gaXQtPmdldCgpOwogICAgICAgICBpZiAob2JqZWN0LT5pc0FjdGl2YXRpb25PYmplY3Qo
KSkKLSAgICAgICAgICAgIG9iamVjdCA9IG5ldyAoc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSkgRGVi
dWdnZXJBY3RpdmF0aW9uKG9iamVjdCk7CisgICAgICAgICAgICBvYmplY3QgPSBuZXcgKHNjb3Bl
Q2hhaW4tPmdsb2JhbERhdGEpIERlYnVnZ2VyQWN0aXZhdGlvbigqc2NvcGVDaGFpbi0+Z2xvYmFs
RGF0YSwgb2JqZWN0KTsKICAgICAgICAgW3Njb3BlcyBhZGRPYmplY3Q6W3NlbGYgX2NvbnZlcnRW
YWx1ZVRvT2JqY1ZhbHVlOm9iamVjdF1dOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80482</attachid>
            <date>2011-01-28 12:40:07 -0800</date>
            <delta_ts>2011-01-28 15:08:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53219-20110128124006.patch</filename>
            <type>text/plain</type>
            <size>267328</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggODM0
NDJiMmUwMjI2YTg2NjExYTVkNmE4ZDA0OWVhYmFmMDAyZDg5OS4uZDZjMzFkODU0MjU0YzMzMmVh
MmVjMTVmNjVjNmU0NjQ0MTcyNjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKQEAgLTU0LDExICs1NCwxMSBAQCBzdHJ1Y3QgSlNDYWxsYmFja09i
amVjdERhdGEgewogICAgICAgICByZXR1cm4gbV9wcml2YXRlUHJvcGVydGllcy0+Z2V0UHJpdmF0
ZVByb3BlcnR5KHByb3BlcnR5TmFtZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0UHJpdmF0
ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkK
KyAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Q2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVydGllcykKICAgICAgICAgICAg
IG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBhZG9wdFB0cihuZXcgSlNQcml2YXRlUHJvcGVydHlNYXAp
OwotICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5zZXRQcml2YXRlUHJvcGVydHkocHJvcGVy
dHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPnNldFByaXZhdGVQ
cm9wZXJ0eShnbG9iYWxEYXRhLCBvd25lciwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKQEAgLTgzLDEyICs4MywxMyBAQCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERh
dGEgewogICAgICAgICAgICAgUHJpdmF0ZVByb3BlcnR5TWFwOjpjb25zdF9pdGVyYXRvciBsb2Nh
dGlvbiA9IG1fcHJvcGVydHlNYXAuZmluZChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAg
ICAgIGlmIChsb2NhdGlvbiA9PSBtX3Byb3BlcnR5TWFwLmVuZCgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb24tPnNlY29uZDsK
KyAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbi0+c2Vjb25kLmdldCgpOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCisgICAgICAgIHZvaWQgc2V0UHJpdmF0ZVBy
b3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBtX3Byb3BlcnR5TWFwLnNldChwcm9wZXJ0eU5hbWUuaW1wbCgpLCB2YWx1ZSk7CisgICAg
ICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7CisgICAgICAgICAgICBtX3Byb3Bl
cnR5TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuZmlyc3QtPnNlY29uZC5zZXQo
Z2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
dm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQpAQCAtMTAwLDEyICsxMDEsMTIgQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIHsKICAg
ICAgICAgewogICAgICAgICAgICAgZm9yIChQcml2YXRlUHJvcGVydHlNYXA6Oml0ZXJhdG9yIHB0
ciA9IG1fcHJvcGVydHlNYXAuYmVnaW4oKTsgcHRyICE9IG1fcHJvcGVydHlNYXAuZW5kKCk7ICsr
cHRyKSB7CiAgICAgICAgICAgICAgICAgaWYgKHB0ci0+c2Vjb25kKQotICAgICAgICAgICAgICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKHB0ci0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICAgICAg
bWFya1N0YWNrLmFwcGVuZCgmcHRyLT5zZWNvbmQpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0lt
cGw+LCBKU1ZhbHVlLCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZVByb3BlcnR5TWFwOworICAg
ICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0ZUJhcnJpZXI8VW5r
bm93bj4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlUHJvcGVydHlNYXA7CiAgICAgICAgIFBy
aXZhdGVQcm9wZXJ0eU1hcCBtX3Byb3BlcnR5TWFwOwogICAgIH07CiAgICAgT3duUHRyPEpTUHJp
dmF0ZVByb3BlcnR5TWFwPiBtX3ByaXZhdGVQcm9wZXJ0aWVzOwpAQCAtMTM3LDkgKzEzOCw5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3REYXRhLT5nZXRQcml2YXRl
UHJvcGVydHkocHJvcGVydHlOYW1lKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRQcml2YXRl
UHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQor
ICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgbV9jYWxsYmFja09iamVjdERhdGEtPnNldFByaXZhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUs
IHZhbHVlKTsKKyAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPnNldFByaXZhdGVQcm9wZXJ0
eShnbG9iYWxEYXRhLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICB9CiAgICAgCiAg
ICAgdm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaAppbmRleCBkZTVkODQyMTY0NDNhNDRhZDQwZjk1MWZmMDVmNDg1MDVmYjE3
MjVhLi5mMDM0NDNmNGViM2Y4YWRmOTRkNGY1ODRjYjA1YTViMGFhNWFlZmExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6cHV0KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lCiAgICAgICAgICAg
ICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChw
cm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmli
dXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpwdXREaXJl
Y3QocHJvcGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0eQorICAg
ICAgICAgICAgICAgIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJvcGVy
dHkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTU2NSw3ICs1NjUsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbAogICAgICAgICAgICAgICAg
IGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBlbnRy
eS0+Y2FsbEFzRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIEpTT2JqZWN0KiBvID0gbmV3IChleGVjKSBKU0NhbGxiYWNrRnVuY3Rpb24oZXhlYywg
YXNHbG9iYWxPYmplY3QodGhpc09iai0+Z2V0QW5vbnltb3VzVmFsdWUoMCkpLCBjYWxsQXNGdW5j
dGlvbiwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+cHV0RGly
ZWN0KHByb3BlcnR5TmFtZSwgbywgZW50cnktPmF0dHJpYnV0ZXMpOworICAgICAgICAgICAgICAg
ICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUs
IG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG87CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcAppbmRleCBkNmRlNDI2ODJmNDQ0NzBhNmExNWU5ODQ5MzM3NGQ0ZTJi
MmVjODc2Li5kM2MxOTkzMTg4MmU1ZWY1MDYwNTc0OGQ4ZWVlYzI1YTQ1MDJkN2Y3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBA
IEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpT
Q2xhc3NSZWYganNDbGFzcywgSlNPYmplCiAgICAgICAgIGpzUHJvdG90eXBlID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKTsKIAogICAgIEpTQ2FsbGJhY2tD
b25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSgpLCBqc0NsYXNzLCBjYWxsQXNDb25zdHJ1
Y3Rvcik7Ci0gICAgY29uc3RydWN0b3ItPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBqc1Byb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
OworICAgIGNvbnN0cnVjdG9yLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBqc1Byb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOwogICAgIHJldHVybiB0b1JlZihjb25zdHJ1Y3Rvcik7CiB9CiAKQEAg
LTM4NSwxMSArMzg1LDExIEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHkoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlCiAgICAgSlNWYWx1ZSBq
c1ZhbHVlID0gdmFsdWUgPyB0b0pTKGV4ZWMsIHZhbHVlKSA6IEpTVmFsdWUoKTsKICAgICBJZGVu
dGlmaWVyIG5hbWUocHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9iYWxEYXRhKCkp
KTsKICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFs
T2JqZWN0Pjo6aW5mbykpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxK
U0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShuYW1lLCBqc1Zh
bHVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9iYWxEYXRhKCksIG5h
bWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGpzT2Jq
ZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+
OjppbmZvKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0
V2l0aEdsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShuYW1lLCBq
c1ZhbHVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU09iamVjdFdp
dGhHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVydHkoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaAppbmRleCA2NGUxZjRkNTNiN2U4YjE4Mzk1MjQ2
ZWU4MmJiODQwOWJjMDcyMDBlLi5mN2I5MWRhNTFkMzI2ZGIyYTQ1ZjY3N2ViZmVmNmY3ZjBlYzVi
NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1h
cFJlZkludGVybmFsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmpl
Y3RNYXBSZWZJbnRlcm5hbC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEpTT2JqZWN0OwogCiB0
eXBlZGVmIHZvaWQgKCpKU1dlYWtNYXBEZXN0cm95ZWRDYWxsYmFjaykoc3RydWN0IE9wYXF1ZUpT
V2Vha09iamVjdE1hcCosIHZvaWQqKTsKIAotdHlwZWRlZiBKU0M6OldlYWtHQ01hcDx2b2lkKiwg
SlNDOjpKU09iamVjdCo+IFdlYWtNYXBUeXBlOwordHlwZWRlZiBKU0M6OldlYWtHQ01hcDx2b2lk
KiwgSlNDOjpKU09iamVjdD4gV2Vha01hcFR5cGU7CiAKIHN0cnVjdCBPcGFxdWVKU1dlYWtPYmpl
Y3RNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGFxdWVKU1dlYWtPYmplY3RNYXA+IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJmZjIzMzg2YTUyOTFjNWMwZGQyNzFhMzRl
YzMxZjQ5ZDY1ODAyYzMuLjE2ZTQxMjk0ZDk2MTZhZDBjNTA2NWU0ODRiMTU0ZTM4NDlhZmRlYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxNCBAQAorMjAxMS0wMS0yNyAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgbWFya3N0YWNrIHRvIGEgc2xvdCB2aXNp
dG9yIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTMyMTkKKworICAgICAgICBNb3ZlIHRoZSBNYXJrU3RhY2sgb3ZlciB0byBhIHNsb3QgYmFzZWQg
bWFya2luZyBBUEkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWRpbmcgYWxpYXNpbmcgY29u
Y2VybnMgdGhlcmUgYXJlIHR3byBuZXcgdHlwZXMKKyAgICAgICAgdGhhdCBuZWVkIHRvIGJlIHVz
ZWQgd2hlbiBob2xkaW5nIG9uIHRvIEpTVmFsdWVzIGFuZCBKU0NlbGwgdGhhdAorICAgICAgICBu
ZWVkIHRvIGJlIG1hcmtlZDogV3JpdGVCYXJyaWVyIGFuZCBEZXByZWNhdGVkUHRyLiAgV3JpdGVC
YXJyaWVyCisgICAgICAgIGlzIGV4cGVjdGVkIHRvIGJlIHVzZWQgZm9yIGFueSBKU1ZhbHVlIG9y
IENlbGwgdGhhdCdzIGxpZmV0aW1lIGFuZAorICAgICAgICBtYXJraW5nIGlzIGNvbnRyb2xsZWQg
YnkgYW5vdGhlciBHQyBvYmplY3QuICBEZXByZWNhdGVkUHRyIGlzIHVzZWQKKyAgICAgICAgZm9y
IGFueSB2YWx1ZSB0aGF0IHdlIG5lZWQgdG8gcmV3b3JrIG93bmVyc2hpcCBmb3IuCisKKyAgICAg
ICAgVGhlIGNoYW5nZSBvdmVyIHRvIHRoaXMgbW9kZWwgaGFzIHByb2R1Y2VkIGEgbGFyZ2UgYW1v
dW50IG9mCisgICAgICAgIGNvZGUgY2hhbmdlcywgYnV0IHRoZXkgYXJlIG1vc3RseSBtZWNoYW5p
Y2FsIChmb3J3YXJkaW5nIEpTR2xvYmFsRGF0YSwKKyAgICAgICAgZXRjKS4KKworICAgICAgICAq
IEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3RE
YXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OmdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
IChKU0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6c2V0UHJp
dmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJp
dmF0ZVByb3BlcnR5TWFwOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNr
T2JqZWN0OjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6Ojo6cHV0KToKKyAgICAgICAgKEpTQzo6Ojpz
dGF0aWNGdW5jdGlvbkdldHRlcik6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAg
ICAgICAgKEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJp
dmF0ZVByb3BlcnR5KToKKyAgICAgICAgKiBBUEkvSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwu
aDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0FnZ3JlZ2F0
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1
bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElm
Tm90RnVuY3Rpb25BcHBseSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5k
U2NvcGVkUHJvcGVydHkpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6RGVidWdnZXJBY3RpdmF0aW9u
KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjptYXJrQ2hpbGRyZW4pOgorICAg
ICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJlc29sdmUp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZVNraXApOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbER5bmFtaWMpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6cmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9y
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lz
dGVyLmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpqc1ZhbHVlU2xvdCk6CisgICAgICAgICog
aml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5
SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBy
dW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6bWFya0NoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgor
ICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnNldEFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpB
cmd1bWVudHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayk6CisgICAgICAgICog
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
U3BsaWNlKToKKyAgICAgICAgKiBydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmg6
CisgICAgICAgIChKU0M6OkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOjpCYXRjaGVkVHJhbnNp
dGlvbk9wdGltaXplcik6CisgICAgICAgIChKU0M6OkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
Ojp+QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVh
bkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbkNvbnN0cnVjdG9yOjpCb29s
ZWFuQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RCb29sZWFuKToKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKToKKyAgICAgICAg
KiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuUHJv
dG90eXBlOjpCb29sZWFuUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbnNlcnZhdGl2
ZVNldC5oOgorICAgICAgICAoSlNDOjpDb25zZXJ2YXRpdmVTZXQ6Om1hcmspOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVj
dG9yOjpEYXRlQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmNw
cDoKKyAgICAgICAgKEpTQzo6RGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UpOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNT
ZXRUaW1lKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MpOgorICAgICAg
ICAoSlNDOjpzZXROZXdWYWx1ZUZyb21EYXRlQXJncyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNTZXRZZWFyKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3Rh
bmNlOjpFcnJvckluc3RhbmNlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6
OkZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5jcHA6
CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6OkdldHRl
clNldHRlcik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6Z2V0dGVyKToKKyAgICAgICAg
KEpTQzo6R2V0dGVyU2V0dGVyOjpzZXRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0
ZXI6OnNldHRlcik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6c2V0U2V0dGVyKToKKyAg
ICAgICAgKiBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6Okds
b2JhbEV2YWxGdW5jdGlvbjo6R2xvYmFsRXZhbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6R2xv
YmFsRXZhbEZ1bmN0aW9uOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvR2xvYmFs
RXZhbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6Okdsb2JhbEV2YWxGdW5jdGlvbjo6Y2FjaGVk
R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAgICAoSlND
OjpIZWFwOjptYXJrUHJvdGVjdGVkT2JqZWN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6Om1hcmtU
ZW1wU29ydFZlY3RvcnMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFs
RnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBUElWYWx1
ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OnZhbHVlKToKKyAg
ICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OkpTQVBJVmFsdWVXcmFwcGVyKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlv
bjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpK
U0FycmF5OjpKU0FycmF5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0
U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OkpTQXJyYXk6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnVuc2hpZnRD
b3VudCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnQpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb1JlZ2lzdGVy
cyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0SW5kZXgpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5OjpzZXRJbmRleCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OnVuY2hlY2tlZFNldEluZGV4KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6bWFya0NoaWxkcmVu
RGlyZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5o
OgorICAgICAgICAoSlNDOjpKU0NlbGw6Ok1hcmtTdGFjazo6YXBwZW5kKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpNYXJrU3RhY2s6OmFwcGVuZENlbGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXJrSWZOZWVkZWQpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdERhdGE6OkpTR2xvYmFs
T2JqZWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjplcnJvckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmV2YWxFcnJvckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJhbmdlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnN5bnRheEVycm9yQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dHlwZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6VVJJRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpldmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6b2JqZWN0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5
UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmJvb2xlYW5Qcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RyaW5nUHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51bWJlclByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkYXRlUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlZ0V4cFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjptZXRob2RDYWxsRHVtbXkpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheSk6CisgICAg
ICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6
OkhvbGRlcjo6b2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6b2Jq
ZWN0U2xvdCk6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjptYXJrQWdncmVnYXRlKToKKyAg
ICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OnN0cmluZ2lmeSk6CisgICAgICAgIChKU0M6OlN0cmlu
Z2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OldhbGtl
cjo6Y2FsbFJldml2ZXIpOgorICAgICAgICAoSlNDOjpXYWxrZXI6OndhbGspOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lR2V0
dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZVNldHRlcik6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpyZW1vdmVEaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OnB1dERlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9mZnNldCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpmbGF0dGVuRGljdGlvbmFyeU9iamVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24p
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dERpcmVjdCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZUlubGluZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0
aWNTY29wZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6Om1h
cmtDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChK
U0M6OlN0cmluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
V3JhcHBlck9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUp
OgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OnNldEludGVybmFsVmFsdWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQ
YXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChK
U0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpsb29rdXBQdXQpOgorICAgICAgICAqIHJ1bnRpbWUvTWFya1N0YWNr
Lmg6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0
aE9iamVjdDo6TWF0aE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclBy
b3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6Ok51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdFdpdGhOdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGlt
ZS9OdW1iZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3ROdW1iZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVy
UHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChK
U0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKToKKyAgICAgICAgKEpTQzo6cmVzb2x2ZUJhc2Up
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpQcm90b3R5cGVGdW5jdGlvbjo6UHJvdG90eXBlRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvUHV0UHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6c2V0
RXhpc3RpbmdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6c2V0TmV3
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OmJhc2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBD
b25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVD
aGFpbi5jcHA6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpwcmludCk6CisgICAgICAg
ICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjp+
U2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluSXRlcmF0b3I6Om9wZXJh
dG9yKik6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5JdGVyYXRvcjo6b3BlcmF0b3ItPik6Cisg
ICAgICAgIChKU0M6OlNjb3BlQ2hhaW46OnRvcCk6CisgICAgICAgICogcnVudGltZS9TY29wZUNo
YWluTWFyay5oOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluOjptYXJrQWdncmVnYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5jcHA6CisgICAgICAgIChKU0M6OmlzTWFya2Vk
KToKKyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6ZW1w
dHlTdHJpbmcpOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnNpbmdsZUNoYXJhY3RlclN0
cmluZyk6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5n
cyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OlN0cmlu
Z09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlw
ZTo6U3RyaW5nUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3Rv
cmVkUHJvdG90eXBlU2xvdCk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAg
ICAgKEpTQzo6V2Vha0dDTWFwOjp1bmNoZWNrZWRHZXQpOgorICAgICAgICAoSlNDOjpXZWFrR0NN
YXA6OnVuY2hlY2tlZEdldFNsb3QpOgorICAgICAgICAoSlNDOjo6OmdldCk6CisgICAgICAgIChK
U0M6Ojo6dGFrZSk6CisgICAgICAgIChKU0M6Ojo6c2V0KToKKyAgICAgICAgKEpTQzo6Ojp1bmNo
ZWNrZWRSZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpEZXByZWNhdGVkUHRyOjpEZXByZWNhdGVkUHRyKToKKyAgICAgICAgKEpT
Qzo6RGVwcmVjYXRlZFB0cjo6Z2V0KToKKyAgICAgICAgKEpTQzo6RGVwcmVjYXRlZFB0cjo6b3Bl
cmF0b3IqKToKKyAgICAgICAgKEpTQzo6RGVwcmVjYXRlZFB0cjo6b3BlcmF0b3ItPik6CisgICAg
ICAgIChKU0M6OkRlcHJlY2F0ZWRQdHI6OnNsb3QpOgorICAgICAgICAoSlNDOjpEZXByZWNhdGVk
UHRyOjpvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKik6CisgICAgICAgIChKU0M6OkRlcHJl
Y2F0ZWRQdHI6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OldyaXRlQmFycmllckJhc2U6OnNl
dCk6CisgICAgICAgIChKU0M6OldyaXRlQmFycmllckJhc2U6OmdldCk6CisgICAgICAgIChKU0M6
OldyaXRlQmFycmllckJhc2U6Om9wZXJhdG9yKik6CisgICAgICAgIChKU0M6OldyaXRlQmFycmll
ckJhc2U6Om9wZXJhdG9yLT4pOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpzbG90
KToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRC
b29sVHlwZSopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRvciEpOgor
ICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXI6OldyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6
Om9wZXJhdG9yPT0pOgorCiAyMDExLTAxLTI4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgogCiAgICAgICAgIFBvdGVudGlhbGx5IFVuc2FmZSBIYXNoU2V0IG9mIFJ1bnRpbWVP
YmplY3QqIGluIFJvb3RPYmplY3QgZGVmaW5pdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKaW5kZXggMTk5YzM3ZjBjMmI2NDJiZjFjNjk5NDQzOWQzOTlhYTljZjRi
NWQ0NC4uOTgyYWUxOWVjODczNzIwZDM5NWJjZTZkNzVkY2UyZDYzNTkxZGJmMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xODMsNyArMTgzLDcgQEAgX19a
TjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yMjFzZXREdW1wc0dlbmVyYXRlZENvZGVFYgogX19aTjNK
U0MxN1Byb3BlcnR5TmFtZUFycmF5M2FkZEVQTjNXVEYxMFN0cmluZ0ltcGxFCiBfX1pOM0pTQzE3
Y29uc3RydWN0RnVuY3Rpb25FUE5TXzlFeGVjU3RhdGVFUktOU183QXJnTGlzdEVSS05TXzEwSWRl
bnRpZmllckVSS05TXzdVU3RyaW5nRWkKIF9fWk4zSlNDMTdjcmVhdGVTeW50YXhFcnJvckVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQotX19aTjNKU0MxOERlYnVnZ2VyQWN0aXZhdGlvbkMx
RVBOU184SlNPYmplY3RFCitfX1pOM0pTQzE4RGVidWdnZXJBY3RpdmF0aW9uQzFFUk5TXzEySlNH
bG9iYWxEYXRhRVBOU184SlNPYmplY3RFCiBfX1pOM0pTQzE4UHJvcGVydHlEZXNjcmlwdG9yMTFz
ZXRXcml0YWJsZUViCiBfX1pOM0pTQzE4UHJvcGVydHlEZXNjcmlwdG9yMTJzZXRVbmRlZmluZWRF
dgogX19aTjNKU0MxOFByb3BlcnR5RGVzY3JpcHRvcjEzc2V0RGVzY3JpcHRvckVOU183SlNWYWx1
ZUVqCkBAIC0yNTEsNyArMjUxLDcgQEAgX19aTjNKU0M3SlNBcnJheTE4Z2V0T3duUHJvcGVydHlT
bG90RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzdKU0FycmF5
NGluZm9FCiBfX1pOM0pTQzdKU0FycmF5OXNldExlbmd0aEVqCiBfX1pOM0pTQzdKU0FycmF5QzFF
TjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUUKLV9fWk4zSlNDN0pTQXJy
YXlDMUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRVJLTlNfN0FyZ0xp
c3RFCitfX1pOM0pTQzdKU0FycmF5QzFFUk5TXzEySlNHbG9iYWxEYXRhRU4zV1RGMTdOb25OdWxs
UGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFUktOU183QXJnTGlzdEUKIF9fWk4zSlNDN0pTQXJy
YXlDMkVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRQogX19aTjNKU0M3
SlNBcnJheUQyRXYKIF9fWk4zSlNDN0pTVmFsdWUxM2lzVmFsaWRDYWxsZWVFdgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCBmODc4
NmI1MmYyYTE4MGQ3YTQ1YWE0ZTBjZjRkMTIxZWJkODE2MzBmLi41MzJjY2ZlMDhmNjM4MTUxYTI5
MDQyMmUwZDgyZTYxZjA3MzM3ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMTAsNyArMTAsNyBAQCBFWFBPUlRTCiAgICAg
Pz8wRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlQEpTQ0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQFBBVkpT
R2xvYmFsT2JqZWN0QDFAQFoKICAgICA/PzBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BASUFFQFBBVkpT
R2xvYmFsRGF0YUAxQFBBVkpTR2xvYmFsT2JqZWN0QDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0
cnVjdHVyZUBKU0NAQEBXVEZAQEFCVklkZW50aWZpZXJAMUBAWgogICAgID8/MEpTQXJyYXlASlND
QEBRQUVAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQEBaCi0gICAg
Pz8wSlNBcnJheUBKU0NAQFFBRUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BA
QFdURkBAQUJWQXJnTGlzdEAxQEBaCisgICAgPz8wSlNBcnJheUBKU0NAQFFBRUBBQVZKU0dsb2Jh
bERhdGFAMUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQUJWQXJn
TGlzdEAxQEBaICAKICAgICA/PzBKU0J5dGVBcnJheUBKU0NAQFFBRUBQQVZFeGVjU3RhdGVAMUBW
PyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAUEFWQnl0ZUFycmF5QDRA
UEJVQ2xhc3NJbmZvQDFAQFoKICAgICA/PzBKU0Z1bmN0aW9uQEpTQ0BAUUFFQFBBVkV4ZWNTdGF0
ZUAxQFBBVkpTR2xvYmFsT2JqZWN0QDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBK
U0NAQEBXVEZAQEhBQlZJZGVudGlmaWVyQDFAUDZJX0owQFpAWgogICAgID8/MEpTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdEBKU0NAQElBRUBQQVZKU0dsb2JhbE9iamVjdEAxQFY/JE5vbk51bGxQYXNz
UmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBhZTM1ZjZlYTk3MmVkNzEwNTQwZWZkYTA0ZWE4NmI1NDNkMzZiOGJiLi4wOTg1ZTFl
OTg5NTU1YjVlNWU3MGZmOGMyZWQ2ZDM2YTE0YmU4MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMzcyLDYgKzM3Miw3IEBACiAJCUE3QzFFOEU0MTEyRTcyRUYwMEEzN0Y5OCAv
KiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3QzFFOEM4MTEyRTcwMUMwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcCAqLzsgfTsKIAkJQTdDNTMwRTQxMDJBMzgxMzAwNUJDNzQxIC8qIE1h
cmtTdGFja1Bvc2l4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3QzUzMEUzMTAyQTM4MTMwMDVCQzc0MSAvKiBNYXJrU3RhY2tQb3NpeC5jcHAgKi87
IH07CiAJCUE3RDY0OUFBMTAxNTIyNEUwMDlCMkUxQiAvKiBQb3NzaWJseU51bGwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDY0OUE5MTAxNTIyNEUw
MDlCMkUxQiAvKiBQb3NzaWJseU51bGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBN0RDQjk3MzEyRTUxOTNGMDA5MTE5NDAgLyogV3JpdGVCYXJy
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0RD
Qjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdFMkVBNkIwRkI0NjBDRjAwNjAxRjA2
IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi87
IH07CiAJCUE3RTJFQTZDMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTJFQTZBMEZCNDYw
Q0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCAqLzsgfTsKIAkJQTdGMTlFQ0UxMURENDkw
OTAwOTMxRTcwIC8qIEZpeGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RjE5RUNEMTFERDQ5MDkwMDkzMUU3MCAvKiBGaXhlZEFycmF5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNDIs
NiArMTA0Myw3IEBACiAJCUE3QzFFOEM4MTEyRTcwMUMwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0M1
MzBFMzEwMkEzODEzMDA1QkM3NDEgLyogTWFya1N0YWNrUG9zaXguY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya1N0YWNrUG9zaXguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBN0Q2NDlBOTEwMTUyMjRFMDA5QjJFMUIgLyogUG9zc2libHlOdWxs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc3NpYmx5TnVsbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3Jp
dGVCYXJyaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRlQmFycmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0UyRUE2OTBGQjQ2MENGMDA2MDFG
MDYgLyogTGl0ZXJhbFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
aXRlcmFsUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RTJFQTZBMEZC
NDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IExpdGVyYWxQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBN0U0MkMxODBFMzkzODgzMDA2NUE1NDQgLyogSlNTdGF0aWNTY29wZU9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0YXRpY1Njb3BlT2JqZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTA0LDYgKzE5MDYsNyBAQAogCQkJCTE0
QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLywKIAkJCQkxNDAzNURCMDEw
REJGQjJBMDBGRkZGRTcgLyogV2Vha0dDUHRyLmggKi8sCiAJCQkJMTQyMEJFN0ExMEFBNkREQjAw
RjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKKwkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAg
LyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQyNyw2ICsyNDMwLDcgQEAKIAkJCQk4NjcwNEI0MzEy
REI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVERTZFNUIzMEUxNzI4RUMwMDE4MDQwNyAvKiBjcmVhdGVfaGFzaF90YWJsZSBpbiBIZWFkZXJz
ICovLAogCQkJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBN0RDQjk3MzEyRTUxOTNGMDA5MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJD
YWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGYzZjVmMjcxYWUyM2Zl
YmUwMjhkYTM3N2I2OGVjNjY5MjJkMjNhZWMuLjJjODc0ZTJhOTA4NTdiNTEyZDJmNzM1NjM1ODkx
MjM4ZTdkZjI1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCkBAIC0xNTI5LDEyICsxNTI5LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpyZWZTdHJ1Y3R1
cmVzKEluc3RydWN0aW9uKiB2UEMpIGNvbnN0CiB2b2lkIENvZGVCbG9jazo6bWFya0FnZ3JlZ2F0
ZShNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
Y29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
bV9jb25zdGFudFJlZ2lzdGVyc1tpXS5qc1ZhbHVlKCkpOworICAgICAgICBtYXJrU3RhY2suZGVw
cmVjYXRlZEFwcGVuZChtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLmpzVmFsdWVTbG90KCkpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkV4cHJzLnNpemUoKTsgKytpKQogICAg
ICAgICBtX2Z1bmN0aW9uRXhwcnNbaV0tPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAg
ICAgbV9mdW5jdGlvbkRlY2xzW2ldLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7Ci0gICAgbWFy
a1N0YWNrLmFwcGVuZChtX2dsb2JhbE9iamVjdCk7CisgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9n
bG9iYWxPYmplY3QpOwogfQogCiBIYW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggMWNkMDg2MzYwOGU0ZWYwMjQ2NjlhOGZjNmI2
MDE3MDJkZjhmNDEwMC4uYWQyZWZhNjY4ZDAwMzZiYmZmZDdlNTUzN2UwNGIwN2RjZTUyZDE5NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjQ4LDcg
KzI0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgQ29kZUJs
b2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5cGUsIEpTR2xvYmFs
T2JqZWN0KiwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4sIHVuc2lnbmVkIHNvdXJjZU9mZnNl
dCwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBib29sIGlzQ29uc3RydWN0b3IpOwogCi0gICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBtX2dsb2JhbE9iamVjdDsKKyAgICAgICAgRGVwcmVjYXRlZFB0
cjxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAKICAgICBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgfkNvZGVCbG9jaygpOwpAQCAtNDg1LDcgKzQ4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB1bnNpZ25lZCBhZGRSZWdFeHAoUmVnRXhwKiByKSB7IGNyZWF0ZVJhcmVEYXRh
SWZOZWNlc3NhcnkoKTsgdW5zaWduZWQgc2l6ZSA9IG1fcmFyZURhdGEtPm1fcmVnZXhwcy5zaXpl
KCk7IG1fcmFyZURhdGEtPm1fcmVnZXhwcy5hcHBlbmQocik7IHJldHVybiBzaXplOyB9CiAgICAg
ICAgIFJlZ0V4cCogcmVnZXhwKGludCBpbmRleCkgY29uc3QgeyBBU1NFUlQobV9yYXJlRGF0YSk7
IHJldHVybiBtX3JhcmVEYXRhLT5tX3JlZ2V4cHNbaW5kZXhdLmdldCgpOyB9CiAKLSAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiBtX2dsb2Jh
bE9iamVjdC5nZXQoKTsgfQogCiAgICAgICAgIC8vIEp1bXAgVGFibGVzCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggNzhjMzczYTZhZTU1YTZkNDhmMjI1MGE0NjhkMGUwNjY4MzAzMTYwZC4uMDk2NDM0
NDgwM2ExMGRkZDIxZjIyZDYxNWVjNGRkZGJiOGI4MTQxOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAg
LTI1MSw3ICsyNTEsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoUHJv
Z3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBjb25zdCBTY29wZUNoYWluJgogICAgIGZvciAoU3ltYm9s
VGFibGU6Oml0ZXJhdG9yIGl0ID0gc3ltYm9sVGFibGUtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKICAgICAgICAgcmVnaXN0ZXJGb3IoaXQtPnNlY29uZC5nZXRJbmRleCgpKS5zZXRJbmRleChp
dC0+c2Vjb25kLmdldEluZGV4KCkgKyBtX2dsb2JhbFZhclN0b3JhZ2VPZmZzZXQpOwogICAgICAg
ICAKLSAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciBvcHRpbWl6ZXIoZ2xvYmFsT2JqZWN0
KTsKKyAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciBvcHRpbWl6ZXIoKm1fZ2xvYmFsRGF0
YSwgZ2xvYmFsT2JqZWN0KTsKIAogICAgIGNvbnN0IFZhclN0YWNrJiB2YXJTdGFjayA9IHByb2dy
YW1Ob2RlLT52YXJTdGFjaygpOwogICAgIGNvbnN0IEZ1bmN0aW9uU3RhY2smIGZ1bmN0aW9uU3Rh
Y2sgPSBwcm9ncmFtTm9kZS0+ZnVuY3Rpb25TdGFjaygpOwpAQCAtOTAzLDcgKzkwMyw3IEBAIFBh
c3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25D
YWxsKFJlZ2lzdGVySUQqIGNvbmQsCiAKICAgICBlbWl0T3Bjb2RlKG9wX2puZXFfcHRyKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY29uZC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KCktPmQoKS0+Y2FsbEZ1bmN0aW9u
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3Qo
KS0+ZCgpLT5jYWxsRnVuY3Rpb24uZ2V0KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0
YXJnZXQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogICAgIHJldHVybiB0
YXJnZXQ7CiB9CkBAIC05MTQsNyArOTE0LDcgQEAgUGFzc1JlZlB0cjxMYWJlbD4gQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVySUQqIGNvbmQKIAog
ICAgIGVtaXRPcGNvZGUob3Bfam5lcV9wdHIpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChj
b25kLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9zY29wZUNoYWluLT5n
bG9iYWxPYmplY3QoKS0+ZCgpLT5hcHBseUZ1bmN0aW9uKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QoKS0+ZCgpLT5hcHBseUZ1bmN0aW9uLmdl
dCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5iaW5kKGJlZ2luLCBpbnN0
cnVjdGlvbnMoKS5zaXplKCkpKTsKICAgICByZXR1cm4gdGFyZ2V0OwogfQpAQCAtMTExNyw3ICsx
MTE3LDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZmluZFNjb3BlZFByb3BlcnR5KGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5LCBpbnQmIGluZGUKIAogICAgICAgICBpZiAoc2hvdWxkT3B0
aW1pemVMb2NhbHMoKSAmJiBtX2NvZGVUeXBlID09IEdsb2JhbENvZGUpIHsKICAgICAgICAgICAg
IFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gbV9zY29wZUNoYWluLT5iZWdpbigpOwotICAgICAg
ICAgICAgZ2xvYmFsT2JqZWN0ID0gKml0ZXI7CisgICAgICAgICAgICBnbG9iYWxPYmplY3QgPSBp
dGVyLT5nZXQoKTsKICAgICAgICAgICAgIEFTU0VSVCgoKytpdGVyKSA9PSBtX3Njb3BlQ2hhaW4t
PmVuZCgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTI4LDcgKzEx
MjgsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5kU2NvcGVkUHJvcGVydHkoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHksIGludCYgaW5kZQogICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBp
dGVyID0gbV9zY29wZUNoYWluLT5iZWdpbigpOwogICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQg
PSBtX3Njb3BlQ2hhaW4tPmVuZCgpOwogICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyLCAr
K2RlcHRoKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBjdXJyZW50U2NvcGUgPSAqaXRlcjsKKyAgICAg
ICAgSlNPYmplY3QqIGN1cnJlbnRTY29wZSA9IGl0ZXItPmdldCgpOwogICAgICAgICBpZiAoIWN1
cnJlbnRTY29wZS0+aXNWYXJpYWJsZU9iamVjdCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIEpTVmFyaWFibGVPYmplY3QqIGN1cnJlbnRWYXJpYWJsZU9iamVjdCA9IHN0YXRpY19jYXN0
PEpTVmFyaWFibGVPYmplY3QqPihjdXJyZW50U2NvcGUpOwpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAg
Ym9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZmluZFNjb3BlZFByb3BlcnR5KGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5LCBpbnQmIGluZGUKICAgICAvLyBDYW4ndCBsb2NhdGUgdGhlIHByb3BlcnR5
IGJ1dCB3ZSdyZSBhYmxlIHRvIGF2b2lkIGEgZmV3IGxvb2t1cHMuCiAgICAgc3RhY2tEZXB0aCA9
IGRlcHRoICsgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKICAgICBpbmRleCA9
IG1pc3NpbmdTeW1ib2xNYXJrZXIoKTsKLSAgICBKU09iamVjdCogc2NvcGUgPSAqaXRlcjsKKyAg
ICBKU09iamVjdCogc2NvcGUgPSBpdGVyLT5nZXQoKTsKICAgICBpZiAoKytpdGVyID09IGVuZCkK
ICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gc2NvcGU7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCAyM2I5MzYxMTg2YzYw
MWEzOTdkMTI2ZWU3Yjc1M2E4MDQ4NTU3MzJjLi5lMjFkNjFkM2ZjNmFlODhiNTA5NTQ0YjkzMTE1
OGRiY2U1YjM0NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBKU1ZhbHVlIGV2YWx1YXRlSW5HbG9iYWxDYWxsRnJh
bWUoY29uc3QgVVN0cmluZyYgc2NyaXB0LCBKU1ZhbHVlJiBleGNlcHRpb24sIEpTRwogICAgIEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLmdl
dCgpLCBnbG9iYWxDYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgZ2xvYmFsQ2FsbEZyYW1lLT5zY29w
ZUNoYWluKCkpOwogICAgIGlmIChnbG9iYWxEYXRhLmV4Y2VwdGlvbikgewotICAgICAgICBleGNl
cHRpb24gPSBnbG9iYWxEYXRhLmV4Y2VwdGlvbjsKKyAgICAgICAgZXhjZXB0aW9uID0gZ2xvYmFs
RGF0YS5leGNlcHRpb24uZ2V0KCk7CiAgICAgICAgIGdsb2JhbERhdGEuZXhjZXB0aW9uID0gSlNW
YWx1ZSgpOwogICAgIH0KICAgICBBU1NFUlQocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKaW5kZXggMDQ0NGQy
M2QyMDRmODMxOGEzOTI1NTVjNWM1N2M1NjkwNmEzYjkxNC4uZmNkMjU3YzJmN2I0ODhkNWU0NzU0
ZjlkNGUxYTM1ZjNlNDgzNWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotRGVidWdnZXJBY3RpdmF0aW9uOjpEZWJ1Z2dlckFjdGl2YXRpb24o
SlNPYmplY3QqIGFjdGl2YXRpb24pCitEZWJ1Z2dlckFjdGl2YXRpb246OkRlYnVnZ2VyQWN0aXZh
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBhY3RpdmF0aW9uKQogICAg
IDogSlNPYmplY3QoRGVidWdnZXJBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkp
KQogewogICAgIEFTU0VSVChhY3RpdmF0aW9uKTsKICAgICBBU1NFUlQoYWN0aXZhdGlvbi0+aXNB
Y3RpdmF0aW9uT2JqZWN0KCkpOwotICAgIG1fYWN0aXZhdGlvbiA9IHN0YXRpY19jYXN0PEpTQWN0
aXZhdGlvbio+KGFjdGl2YXRpb24pOworICAgIG1fYWN0aXZhdGlvbi5zZXQoZ2xvYmFsRGF0YSwg
dGhpcywgc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbikpOwogfQogCiB2b2lk
IERlYnVnZ2VyQWN0aXZhdGlvbjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQpA
QCAtNDMsNyArNDMsNyBAQCB2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6bWFya0NoaWxkcmVuKE1h
cmtTdGFjayYgbWFya1N0YWNrKQogICAgIEpTT2JqZWN0OjptYXJrQ2hpbGRyZW4obWFya1N0YWNr
KTsKIAogICAgIGlmIChtX2FjdGl2YXRpb24pCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9h
Y3RpdmF0aW9uKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9hY3RpdmF0aW9uKTsKIH0K
IAogVVN0cmluZyBEZWJ1Z2dlckFjdGl2YXRpb246OmNsYXNzTmFtZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKaW5k
ZXggMzkyNzAxNzQxYmE3NjRiM2Y0NDM5MmRhOTljNzAwNmRjYzVjNGM1ZC4uYjY0MDYwZGNmODQ3
YzlhNzdlOTljMzFmNDEzMmZlNjk4NmY1ODJlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApAQCAtMzQsNyArMzQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlYnVnZ2VyQWN0aXZhdGlvbiA6IHB1YmxpYyBK
U09iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICBEZWJ1Z2dlckFjdGl2YXRpb24oSlNPYmpl
Y3QqKTsKKyAgICAgICAgRGVidWdnZXJBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0
Kik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKICAg
ICAgICAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwpAQCAtNTgsNyArNTgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzTWFya0NoaWxk
cmVuIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
SlNBY3RpdmF0aW9uKiBtX2FjdGl2YXRpb247CisgICAgICAgIFdyaXRlQmFycmllcjxKU0FjdGl2
YXRpb24+IG1fYWN0aXZhdGlvbjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CmluZGV4IGVkNjczY2JhZmZhZWExMDI3YjgxMWNmNTQ0NWRlODE5ZjIwMjlmNTcuLmNiNDU5MmNj
MTFjNmNmNDBjNzYxZDYwZDdmNjE5MmE1MmYyMjI1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtOTYsNyArOTYs
NyBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBVU3RyaW5nJiBz
Y3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbikgYwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSA9IG1fY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBnbG9i
YWxEYXRhLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwuZ2V0KCksIG1fY2FsbEZyYW1lLCB0aGlz
T2JqZWN0KCksIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCkpOwogICAgIGlmIChnbG9iYWxEYXRh
LmV4Y2VwdGlvbikgewotICAgICAgICBleGNlcHRpb24gPSBnbG9iYWxEYXRhLmV4Y2VwdGlvbjsK
KyAgICAgICAgZXhjZXB0aW9uID0gZ2xvYmFsRGF0YS5leGNlcHRpb24uZ2V0KCk7CiAgICAgICAg
IGdsb2JhbERhdGEuZXhjZXB0aW9uID0gSlNWYWx1ZSgpOwogICAgIH0KICAgICBBU1NFUlQocmVz
dWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaApp
bmRleCAyNzk3ZWYzZjlmY2FiYzBlOTEwMzZiMTcyOGFkODMyMDkzNTg5YmExLi4xOTBhN2MxZDI1
MDljMTM3ODUyYTI2ZmZjMWE4MzczYzViNWQyZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCkBAIC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBK
U0MgIHsKICAgICAgICAgLy8gQnV0IHRoZXkncmUgdXNlZCBpbiBtYW55IHBsYWNlcyBpbiBsZWdh
Y3kgY29kZSwgc28gdGhleSdyZSBub3QgZ29pbmcgYXdheSBhbnkgdGltZSBzb29uLgogCiAgICAg
ICAgIHZvaWQgY2xlYXJFeGNlcHRpb24oKSB7IGdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBKU1Zh
bHVlKCk7IH0KLSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBnbG9i
YWxEYXRhKCkuZXhjZXB0aW9uOyB9CisgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uKCkgY29uc3Qg
eyByZXR1cm4gZ2xvYmFsRGF0YSgpLmV4Y2VwdGlvbi5nZXQoKTsgfQogICAgICAgICBib29sIGhh
ZEV4Y2VwdGlvbigpIGNvbnN0IHsgcmV0dXJuIGdsb2JhbERhdGEoKS5leGNlcHRpb247IH0KIAog
ICAgICAgICBjb25zdCBDb21tb25JZGVudGlmaWVycyYgcHJvcGVydHlOYW1lcygpIGNvbnN0IHsg
cmV0dXJuICpnbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lczsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMzkyZThiOGI1YjEz
OTVkYzJiZTA1MjdiMjMwOTZlZGQ1Y2Q2MDhmOS4uZTVmYjM0OTg3ZDNiMzNjOWQ5MWMwZGUyZWMy
YTAwZjg4OWJkZmNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wg
SW50ZXJwcmV0ZXI6OnJlc29sdmUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydWN0aW9uKiB2
UEMsIEoKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7
CiAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkp
OwogICAgIGRvIHsKLSAgICAgICAgSlNPYmplY3QqIG8gPSAqaXRlcjsKKyAgICAgICAgSlNPYmpl
Y3QqIG8gPSBpdGVyLT5nZXQoKTsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qobyk7CiAgICAg
ICAgIGlmIChvLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAg
ICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50
KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVz
b2x2ZVNraXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydWN0aW9uKiB2UAogICAgIH0KICAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CiAg
ICAgZG8gewotICAgICAgICBKU09iamVjdCogbyA9ICppdGVyOworICAgICAgICBKU09iamVjdCog
byA9IGl0ZXItPmdldCgpOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvKTsKICAgICAgICAg
aWYgKG8tPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwpA
QCAtMjIwLDcgKzIyMCw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZl
R2xvYmFsRHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgICAgICAgICAr
K2l0ZXI7CiAgICAgfQogICAgIHdoaWxlIChza2lwLS0pIHsKLSAgICAgICAgSlNPYmplY3QqIG8g
PSAqaXRlcjsKKyAgICAgICAgSlNPYmplY3QqIG8gPSBpdGVyLT5nZXQoKTsKICAgICAgICAgaWYg
KG8tPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkgewogICAgICAgICAgICAgSWRlbnRpZmllciYgaWRl
bnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwogICAgICAgICAgICAgZG8gewpA
QCAtMjM2LDcgKzIzNiw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZl
R2xvYmFsRHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmIChpdGVyID09IGVuZCkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgbyA9ICppdGVyOworICAgICAgICAgICAgICAgIG8g
PSBpdGVyLT5nZXQoKTsKICAgICAgICAgICAgICAgICArK2l0ZXI7CiAgICAgICAgICAgICB9IHdo
aWxlICh0cnVlKTsKICAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlVW5kZWZpbmVk
VmFyaWFibGVFcnJvcihjYWxsRnJhbWUsIGlkZW50KTsKQEAgLTMxMCw3ICszMTAsNyBAQCBORVZF
Ul9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eShDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSW5zdAogICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHByb3BlcnR5KTsKICAgICBKU09iamVjdCogYmFzZTsKICAgICBkbyB7Ci0gICAg
ICAgIGJhc2UgPSAqaXRlcjsKKyAgICAgICAgYmFzZSA9IGl0ZXItPmdldCgpOwogICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICAgICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xv
dChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwpAQCAtNTY2LDExICs1NjYsMTEgQEAg
TkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZShDYWxsRnJhbWUq
JiBjYWxsRnJhbWUsIEpTVmFsdWUgZXgKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoIXNjb3Bl
Q2hhaW4tPm9iamVjdC0+aW5oZXJpdHMoJkpTQWN0aXZhdGlvbjo6aW5mbykpCiAgICAgICAgICAg
ICBzY29wZUNoYWluID0gc2NvcGVDaGFpbi0+cG9wKCk7Ci0gICAgICAgIEpTQWN0aXZhdGlvbiog
YWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihzY29wZUNoYWluLT5vYmplY3QpOworICAgICAgICBK
U0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oc2NvcGVDaGFpbi0+b2JqZWN0
LmdldCgpKTsKICAgICAgICAgYWN0aXZhdGlvbi0+Y29weVJlZ2lzdGVycygpOwogICAgICAgICBp
ZiAoSlNWYWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKG9sZENvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFs
dWUoKSkgewogICAgICAgICAgICAgaWYgKCFvbGRDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQot
ICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPnNldEFjdGl2YXRpb24oYWN0
aXZhdGlvbik7CisgICAgICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJndW1lbnRzKS0+c2V0QWN0
aXZhdGlvbihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKG9sZENvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpICYmICFvbGRDb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlmIChKU1ZhbHVlIGFyZ3VtZW50cyA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIob2xkQ29k
ZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSkuanNWYWx1ZSgpKQpAQCAtNjQ4LDcgKzY0OCw3
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICAgICAgbWVzc2FnZSA9IG1ha2VVU3RyaW5n
KG1lc3NhZ2UsICIgKG5lYXIgJy4uLiIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKHN0
YXJ0LCBzdG9wKSwgIi4uLicpIik7CiAgICAgfQogCi0gICAgZXhjZXB0aW9uLT5wdXREaXJlY3Qo
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwg
bWVzc2FnZSkpOworICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxE
YXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBtZXNzYWdl
KSk7CiB9CiAKIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnRocm93RXhj
ZXB0aW9uKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTT2JqZWMKICAgICBmb3IgKFNjb3BlQ2hhaW5Ob2RlKiBub2RlID0gc2NvcGVDaGFpbjsg
OyBub2RlID0gbm9kZS0+bmV4dCkgewogICAgICAgICBBU1NFUlQobm9kZSk7CiAgICAgICAgIGlm
IChub2RlLT5vYmplY3QtPmlzVmFyaWFibGVPYmplY3QoKSkgewotICAgICAgICAgICAgdmFyaWFi
bGVPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4obm9kZS0+b2JqZWN0KTsK
KyAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVj
dCo+KG5vZGUtPm9iamVjdC5nZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KQEAgLTExMDAsNyArMTEwMCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjCiAgICAg
ICAgICAgICBwdXNoZWRTY29wZSA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gU2NvcGUg
Zm9yIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyCi0gICAgICAgIEJhdGNoZWRUcmFuc2l0aW9u
T3B0aW1pemVyIG9wdGltaXplcih2YXJpYWJsZU9iamVjdCk7CisgICAgICAgIEJhdGNoZWRUcmFu
c2l0aW9uT3B0aW1pemVyIG9wdGltaXplcihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgdmFyaWFi
bGVPYmplY3QpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJs
ZXM7ICsraSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxv
Y2stPnZhcmlhYmxlKGkpOwpAQCAtMTM3MSw3ICsxMzcxLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJs
b2NrKgogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBs
b29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRy
ZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBpZiAoYmFzZU9iamVjdC0+c3RydWN0dXJl
KCktPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0LT5mbGF0dGVuRGlj
dGlvbmFyeU9iamVjdCgpOworICAgICAgICAgICAgYmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25h
cnlPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgb2Zmc2V0ID0g
YmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmdldChwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9CiAK
QEAgLTI0MDgsNyArMjQwOCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgICAg
ICBBU1NFUlQoaXRlciAhPSBlbmQpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVCgoKml0ZXIp
LT5pc1ZhcmlhYmxlT2JqZWN0KCkpOwotICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0KiBzY29wZSA9
IHN0YXRpY19jYXN0PEpTVmFyaWFibGVPYmplY3QqPigqaXRlcik7CisgICAgICAgIEpTVmFyaWFi
bGVPYmplY3QqIHNjb3BlID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KGl0ZXItPmdl
dCgpKTsKICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBzY29wZS0+cmVnaXN0
ZXJBdChpbmRleCk7CiAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUtPnIoZHN0KS5qc1ZhbHVlKCkp
OwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfc2NvcGVkX3Zhcik7CkBAIC0y
NDM5LDcgKzI0MzksNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVj
dXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICB9CiAKICAg
ICAgICAgQVNTRVJUKCgqaXRlciktPmlzVmFyaWFibGVPYmplY3QoKSk7Ci0gICAgICAgIEpTVmFy
aWFibGVPYmplY3QqIHNjb3BlID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KCppdGVy
KTsKKyAgICAgICAgSlNWYXJpYWJsZU9iamVjdCogc2NvcGUgPSBzdGF0aWNfY2FzdDxKU1Zhcmlh
YmxlT2JqZWN0Kj4oaXRlci0+Z2V0KCkpOwogICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5yKHZh
bHVlKS5qc1ZhbHVlKCkpOwogICAgICAgICBzY29wZS0+cmVnaXN0ZXJBdChpbmRleCkgPSBKU1Zh
bHVlKGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKICAgICAgICAgdlBDICs9IE9QQ09E
RV9MRU5HVEgob3BfcHV0X3Njb3BlZF92YXIpOwpAQCAtMzA4MCw3ICszMDgwLDcgQEAgc2tpcF9p
ZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSB2UENbM10udS5vcGVy
YW5kOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHZQQ1s3XS51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJh
c2VPYmplY3QtPmdldERpcmVjdExvY2F0aW9uKGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0u
dS5vcGVyYW5kKSkpID09IG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0
RGlyZWN0T2Zmc2V0KG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOworICAg
ICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSwgb2Zmc2V0LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAKICAgICAg
ICAgICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbik7
CiAgICAgICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMzExNSw3ICszMTE1LDcg
QEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQg
PSB2UENbNV0udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFT
U0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RM
b2NhdGlvbihjb2RlQmxvY2stPmlkZW50aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZz
ZXQpOwotICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChvZmZzZXQs
IGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBiYXNlT2Jq
ZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2Fs
bEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogCiAgICAgICAgICAgICAgICAgdlBDICs9IE9Q
Q09ERV9MRU5HVEgob3BfcHV0X2J5X2lkX3JlcGxhY2UpOwogICAgICAgICAgICAgICAgIE5FWFRf
SU5TVFJVQ1RJT04oKTsKQEAgLTMzMDksNyArMzMwOSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6
CiAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsKICAg
ICAgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwogICAg
ICAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKLSAgICAgICAgICAgICAg
ICAgICAganNBcnJheS0+c2V0SW5kZXgoaSwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkp
OworICAgICAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleCgqZ2xvYmFsRGF0YSwgaSwg
Y2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAganNBcnJheS0+SlNBcnJheTo6cHV0KGNhbGxGcmFtZSwgaSwgY2Fs
bEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pT
Qnl0ZUFycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVl
KS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKQEAgLTQxMDMsNyArNDEwMyw3IEBAIHNraXBfaWRfY3Vz
dG9tX3NlbGY6CiAKICAgICAgICAgICAgIGlmIChKU1ZhbHVlIGFyZ3VtZW50c1ZhbHVlID0gY2Fs
bEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHMpKS5qc1ZhbHVl
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlKS0+c2V0QWN0aXZh
dGlvbihhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAg
IGFzQXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlKS0+c2V0QWN0aXZhdGlvbigqZ2xvYmFsRGF0YSwg
YXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKEpTVmFsdWUgYXJndW1lbnRzVmFsdWUgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50cykpLmpzVmFsdWUoKSkgewogICAgICAgICAgICAg
aWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAppbmRleCAzOTQ0NjQyNjgwNjM2OTQ1ODQ5MTBhZTI3Y2I2
NmNiMDgxZDRkYWZjLi44NTk3ZWZiNTYwYzgxNmU0NjU2NGMyOTk0NDc0Yjg5MzdhNzA3NDM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaApAQCAtNTQs
NiArNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXIoY29uc3QgSlNWYWx1
ZSYpOwogICAgICAgICBSZWdpc3RlciYgb3BlcmF0b3I9KGNvbnN0IEpTVmFsdWUmKTsKICAgICAg
ICAgSlNWYWx1ZSBqc1ZhbHVlKCkgY29uc3Q7CisgICAgICAgIEpTVmFsdWUqIGpzVmFsdWVTbG90
KCk7CiAgICAgICAgIAogICAgICAgICBSZWdpc3RlciYgb3BlcmF0b3I9KEpTQWN0aXZhdGlvbiop
OwogICAgICAgICBSZWdpc3RlciYgb3BlcmF0b3I9KENhbGxGcmFtZSopOwpAQCAtMTI4LDYgKzEy
OSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpk
ZWNvZGUodS52YWx1ZSk7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSog
UmVnaXN0ZXI6OmpzVmFsdWVTbG90KCkKKyAgICB7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAg
ICAgIEpTVmFsdWUqIGpzVmFsdWVTbG90OworICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUqIGVu
Y29kZWRWYWx1ZVNsb3Q7CisgICAgICAgIH0gY2FzdGVyOworICAgICAgICBjYXN0ZXIuZW5jb2Rl
ZFZhbHVlU2xvdCA9ICZ1LnZhbHVlOworICAgICAgICByZXR1cm4gY2FzdGVyLmpzVmFsdWVTbG90
OworICAgIH0KIAogICAgIC8vIEludGVycHJldGVyIGZ1bmN0aW9ucwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGY1MjFhYTUzNDdlZjRiNDFkNjMyYjk4ZDk0YjBh
MDI5OTk3OTdhMDguLjc0ZjUwNWY4OWRmMTQxMjFmMDczMWI2YmM2MjFkMWQxZjIzMGQ1YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC04NDUsNyArODQ1LDcgQEAg
TkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIENvZGVCbG9jayogY28KICAgICAgICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5n
IGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQKICAgICAgICAg
Ly8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KICAgICAgICAgaWYgKHNs
b3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAg
IHNsb3RCYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCgpOworICAgICAgICAgICAg
c2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpKTsKICAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+Z2V0KHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05NDIsMTcgKzk0
MiwxNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdGhyb3dTdGFja092ZXJmbG93RXJyb3Io
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsRAogCiAjZGVmaW5lIENIRUNLX0ZPUl9FWENF
UFRJT04oKSBcCiAgICAgZG8geyBcCi0gICAgICAgIGlmIChVTkxJS0VMWShzdGFja0ZyYW1lLmds
b2JhbERhdGEtPmV4Y2VwdGlvbikpIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0YWNrRnJhbWUu
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmdldCgpKSkgXAogICAgICAgICAgICAgVk1fVEhST1dfRVhD
RVBUSU9OKCk7IFwKICAgICB9IHdoaWxlICgwKQogI2RlZmluZSBDSEVDS19GT1JfRVhDRVBUSU9O
X0FUX0VORCgpIFwKICAgICBkbyB7IFwKLSAgICAgICAgaWYgKFVOTElLRUxZKHN0YWNrRnJhbWUu
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uKSkgXAorICAgICAgICBpZiAoVU5MSUtFTFkoc3RhY2tGcmFt
ZS5nbG9iYWxEYXRhLT5leGNlcHRpb24uZ2V0KCkpKSBcCiAgICAgICAgICAgICBWTV9USFJPV19F
WENFUFRJT05fQVRfRU5EKCk7IFwKICAgICB9IHdoaWxlICgwKQogI2RlZmluZSBDSEVDS19GT1Jf
RVhDRVBUSU9OX1ZPSUQoKSBcCiAgICAgZG8geyBcCi0gICAgICAgIGlmIChVTkxJS0VMWShzdGFj
a0ZyYW1lLmdsb2JhbERhdGEtPmV4Y2VwdGlvbikpIHsgXAorICAgICAgICBpZiAoVU5MSUtFTFko
c3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5leGNlcHRpb24uZ2V0KCkpKSB7IFwKICAgICAgICAgICAg
IFZNX1RIUk9XX0VYQ0VQVElPTl9BVF9FTkQoKTsgXAogICAgICAgICAgICAgcmV0dXJuOyBcCiAg
ICAgICAgIH0gXApAQCAtMTQ2Niw3ICsxNDY2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5j
b2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9tZXRob2RfY2hlY2spCiAgICAgICAgIC8vIFNpbmNl
IHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0
aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnku
CiAgICAgICAgIGlmIChzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgp
KQotICAgICAgICAgICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KCk7
CisgICAgICAgICAgICBzbG90QmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCkpOwogCiAgICAgICAgIC8vIFRoZSByZXN1bHQgZmV0Y2hlZCBz
aG91bGQgYWx3YXlzIGJlIHRoZSBjYWxsZWUhCiAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gSlNW
YWx1ZShjYWxsZWUpKTsKQEAgLTE2NTYsNyArMTY1Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkKICAgICAgICAgLy8gU2lu
Y2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0
IHRoYXQgaXQKICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFy
eS4KICAgICAgICAgaWYgKHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5
KCkpIHsKLSAgICAgICAgICAgIHNsb3RCYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVj
dCgpOworICAgICAgICAgICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0
KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNl
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KIApAQCAt
MjE0Nyw3ICsyMTQ3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfdGVhcl9vZmZf
YWN0aXZhdGlvbikKICAgICBhY3RpdmF0aW9uLT5jb3B5UmVnaXN0ZXJzKCk7CiAgICAgaWYgKEpT
VmFsdWUgdiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCkpIHsKICAgICAgICAgaWYgKCFz
dGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQotICAgICAg
ICAgICAgYXNBcmd1bWVudHModiktPnNldEFjdGl2YXRpb24oYWN0aXZhdGlvbik7CisgICAgICAg
ICAgICBhc0FyZ3VtZW50cyh2KS0+c2V0QWN0aXZhdGlvbigqc3RhY2tGcmFtZS5nbG9iYWxEYXRh
LCBhY3RpdmF0aW9uKTsKICAgICB9CiB9CiAKQEAgLTIyMDQsNyArMjIwNCw3IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9yZXNvbHZlKQogCiAgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaWRlbnRpZmllcigpOwogICAgIGRvIHsKLSAg
ICAgICAgSlNPYmplY3QqIG8gPSAqaXRlcjsKKyAgICAgICAgSlNPYmplY3QqIG8gPSBpdGVyLT5n
ZXQoKTsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qobyk7CiAgICAgICAgIGlmIChvLT5nZXRQ
cm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsKQEAgLTIzOTcsNyAr
MjM5Nyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV92YWwpCiAgICAg
ICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkgewogICAgICAgICAgICAg
SlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKICAgICAgICAgICAgIGlmIChq
c0FycmF5LT5jYW5TZXRJbmRleChpKSkKLSAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRl
eChpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoKmdsb2JhbERh
dGEsIGksIHZhbHVlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBqc0FycmF5
LT5KU0FycmF5OjpwdXQoY2FsbEZyYW1lLCBpLCB2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
aXNKU0J5dGVBcnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VW
YWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CkBAIC0yNjQ1LDcgKzI2NDUsNyBAQCBERUZJTkVf
U1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZV9za2lwKQogICAgIH0KICAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pZGVudGlmaWVyKCk7CiAg
ICAgZG8gewotICAgICAgICBKU09iamVjdCogbyA9ICppdGVyOworICAgICAgICBKU09iamVjdCog
byA9IGl0ZXItPmdldCgpOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvKTsKICAgICAgICAg
aWYgKG8tPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwpA
QCAtMjk3NCw3ICsyOTc0LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUs
IG9wX3Jlc29sdmVfd2l0aF9iYXNlKQogICAgIElkZW50aWZpZXImIGlkZW50ID0gc3RhY2tGcmFt
ZS5hcmdzWzBdLmlkZW50aWZpZXIoKTsKICAgICBKU09iamVjdCogYmFzZTsKICAgICBkbyB7Ci0g
ICAgICAgIGJhc2UgPSAqaXRlcjsKKyAgICAgICAgYmFzZSA9IGl0ZXItPmdldCgpOwogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICAgICAgaWYgKGJhc2UtPmdldFByb3BlcnR5
U2xvdChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1
bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwpAQCAtMzQ4MCw3ICszNDgwLDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZtX3Rocm93KQogewogICAgIFNUVUJfSU5J
VF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSBzdGFja0ZyYW1lLmdsb2JhbERhdGE7Ci0gICAgRXhjZXB0aW9uSGFuZGxlciBoYW5kbGVyID0g
aml0VGhyb3coZ2xvYmFsRGF0YSwgc3RhY2tGcmFtZS5jYWxsRnJhbWUsIGdsb2JhbERhdGEtPmV4
Y2VwdGlvbiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uTG9jYXRpb24pOworICAgIEV4Y2VwdGlvbkhh
bmRsZXIgaGFuZGxlciA9IGppdFRocm93KGdsb2JhbERhdGEsIHN0YWNrRnJhbWUuY2FsbEZyYW1l
LCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZ2V0KCksIGdsb2JhbERhdGEtPmV4Y2VwdGlvbkxvY2F0
aW9uKTsKICAgICBTVFVCX1NFVF9SRVRVUk5fQUREUkVTUyhoYW5kbGVyLmNhdGNoUm91dGluZSk7
CiAgICAgcmV0dXJuIGhhbmRsZXIuY2FsbEZyYW1lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRl
eCBkZDRiNjc3YTQxM2U2OWNkMWYzNjQyNWY3YWQ5Y2UwOGJiZTJlNDQzLi45MTJiNTFhODA4M2U2
YzI2Yzc5YTdmMzFhYzBjNmFiNDY2MTM1Yjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTY5
LDcgKzE2OSw3IEBAIEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KGNvbnN0IFZlY3RvcjxVU3Ry
aW5nPiYgYXJndW1lbnRzKQogICAgIEpTT2JqZWN0KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkoZ2xvYmFsRXhlYygpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5z
aXplKCk7ICsraSkKICAgICAgICAgYXJyYXktPnB1dChnbG9iYWxFeGVjKCksIGksIGpzU3RyaW5n
KGdsb2JhbEV4ZWMoKSwgYXJndW1lbnRzW2ldKSk7Ci0gICAgcHV0RGlyZWN0KElkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICBwdXREaXJlY3QoZ2xvYmFs
RXhlYygpLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiYXJndW1lbnRz
IiksIGFycmF5KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
aW50KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuY3BwCmluZGV4IDM5ODg2YTg2OTU4MGVkMjdhN2QzNjRhODFkNWUzMzdlMDQxNDkwZGYu
LjM1Njk2NzlkZTk5MjczYjE3ODc0M2RmYTkyM2Q1Zjg5YTYyNTcwMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtNTUsMTAgKzU1LDEwIEBAIHZv
aWQgQXJndW1lbnRzOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgICAg
IG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMocmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oZC0+ZXh0
cmFBcmd1bWVudHMpLCBudW1FeHRyYUFyZ3VtZW50cyk7CiAgICAgfQogCi0gICAgbWFya1N0YWNr
LmFwcGVuZChkLT5jYWxsZWUpOworICAgIG1hcmtTdGFjay5hcHBlbmQoJmQtPmNhbGxlZSk7CiAK
ICAgICBpZiAoZC0+YWN0aXZhdGlvbikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChkLT5hY3Rp
dmF0aW9uKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmZC0+YWN0aXZhdGlvbik7CiB9CiAK
IHZvaWQgQXJndW1lbnRzOjpjb3B5VG9SZWdpc3RlcnMoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3Rl
ciogYnVmZmVyLCB1aW50MzJfdCBtYXhTaXplKQpAQCAtMTk3LDcgKzE5Nyw3IEBAIGJvb2wgQXJn
dW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hCiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jYWxsZWUgJiYgTElLRUxZKCFkLT5vdmVycm9kZUNhbGxlZSkpIHsKICAgICAgICAg
aWYgKCFkLT5pc1N0cmljdE1vZGUpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUoZC0+Y2Fs
bGVlKTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUoZC0+Y2FsbGVlLmdldCgpKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVD
YWxsZWVJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBib29sIEFyZ3VtZW50
czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcAogICAgIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNhbGxlZSAmJiBMSUtFTFkoIWQtPm92ZXJyb2RlQ2FsbGVlKSkgewogICAgICAgICBp
ZiAoIWQtPmlzU3RyaWN0TW9kZSkgewotICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlw
dG9yKGQtPmNhbGxlZSwgRG9udEVudW0pOworICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNj
cmlwdG9yKGQtPmNhbGxlZS5nZXQoKSwgRG9udEVudW0pOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICAgICAgY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5
KGV4ZWMpOwpAQCAtMjgwLDE0ICsyODAsMTQgQEAgdm9pZCBBcmd1bWVudHM6OnB1dChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWwKIAog
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCAmJiAh
ZC0+b3ZlcnJvZGVMZW5ndGgpIHsKICAgICAgICAgZC0+b3ZlcnJvZGVMZW5ndGggPSB0cnVlOwot
ICAgICAgICBwdXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSwgRG9udEVudW0pOworICAgICAg
ICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBEb250
RW51bSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUgJiYgIWQtPm92ZXJyb2RlQ2FsbGVlKSB7CiAg
ICAgICAgIGlmICghZC0+aXNTdHJpY3RNb2RlKSB7CiAgICAgICAgICAgICBkLT5vdmVycm9kZUNh
bGxlZSA9IHRydWU7Ci0gICAgICAgICAgICBwdXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSwg
RG9udEVudW0pOworICAgICAgICAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgRG9udEVudW0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZk5lY2Vzc2FyeShleGVjKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKaW5kZXggZmU5MDBhMjc4OWE2
OTU3YmZhM2ZlM2RlZDBmZjhjZmQ0ZjYwNWE5My4uYTNkN2ZlNDU3OTRjMzJjOTJiMTc4NGQxMTk4
YTEwNDNkODNmZjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEFyZ3VtZW50c0RhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6CiAgICAgICAgIEFyZ3VtZW50c0RhdGEoKSB7IH0KLSAgICAgICAgSlNBY3RpdmF0aW9u
KiBhY3RpdmF0aW9uOworICAgICAgICBXcml0ZUJhcnJpZXI8SlNBY3RpdmF0aW9uPiBhY3RpdmF0
aW9uOwogCiAgICAgICAgIHVuc2lnbmVkIG51bVBhcmFtZXRlcnM7CiAgICAgICAgIHB0cmRpZmZf
dCBmaXJzdFBhcmFtZXRlckluZGV4OwpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgT3duQXJyYXlQdHI8Ym9vbD4gZGVsZXRlZEFyZ3VtZW50czsKICAgICAgICAgUmVn
aXN0ZXIgZXh0cmFBcmd1bWVudHNGaXhlZEJ1ZmZlcls0XTsKIAotICAgICAgICBKU0Z1bmN0aW9u
KiBjYWxsZWU7CisgICAgICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7CiAgICAg
ICAgIGJvb2wgb3ZlcnJvZGVMZW5ndGggOiAxOwogICAgICAgICBib29sIG92ZXJyb2RlQ2FsbGVl
IDogMTsKICAgICAgICAgYm9vbCBvdmVycm9kZUNhbGxlciA6IDE7CkBAIC04Niw5ICs4Niw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlUb1JlZ2lzdGVycyhFeGVjU3RhdGUq
IGV4ZWMsIFJlZ2lzdGVyKiBidWZmZXIsIHVpbnQzMl90IG1heFNpemUpOwogICAgICAgICB2b2lk
IGNvcHlSZWdpc3RlcnMoKTsKICAgICAgICAgYm9vbCBpc1Rvcm5PZmYoKSBjb25zdCB7IHJldHVy
biBkLT5yZWdpc3RlckFycmF5OyB9Ci0gICAgICAgIHZvaWQgc2V0QWN0aXZhdGlvbihKU0FjdGl2
YXRpb24qIGFjdGl2YXRpb24pCisgICAgICAgIHZvaWQgc2V0QWN0aXZhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgZC0+YWN0aXZhdGlvbiA9IGFjdGl2YXRpb247CisgICAgICAgICAgICBkLT5hY3Rp
dmF0aW9uLnNldChnbG9iYWxEYXRhLCB0aGlzLCBhY3RpdmF0aW9uKTsKICAgICAgICAgICAgIGQt
PnJlZ2lzdGVycyA9ICZhY3RpdmF0aW9uLT5yZWdpc3RlckF0KDApOwogICAgICAgICB9CiAKQEAg
LTE1OCw3ICsxNTgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZC0+Zmlyc3RQYXJhbWV0
ZXJJbmRleCA9IGZpcnN0UGFyYW1ldGVySW5kZXg7CiAgICAgICAgIGQtPm51bUFyZ3VtZW50cyA9
IG51bUFyZ3VtZW50czsKIAotICAgICAgICBkLT5hY3RpdmF0aW9uID0gMDsKICAgICAgICAgZC0+
cmVnaXN0ZXJzID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKIAogICAgICAgICBSZWdpc3Rlciog
ZXh0cmFBcmd1bWVudHM7CkBAIC0xNzYsNyArMTc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgZC0+ZXh0cmFBcmd1bWVudHMgPSBleHRyYUFyZ3VtZW50czsKIAotICAgICAgICBkLT5j
YWxsZWUgPSBjYWxsZWU7CisgICAgICAgIGQtPmNhbGxlZS5zZXQoY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCksIHRoaXMsIGNhbGxlZSk7CiAgICAgICAgIGQtPm92ZXJyb2RlTGVuZ3RoID0gZmFsc2U7
CiAgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gZmFsc2U7CiAgICAgICAgIGQtPm92ZXJyb2Rl
Q2FsbGVyID0gZmFsc2U7CkBAIC0xOTUsNyArMTk0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgZC0+bnVtUGFyYW1ldGVycyA9IDA7CiAgICAgICAgIGQtPm51bUFyZ3VtZW50cyA9IG51
bUFyZ3VtZW50czsKLSAgICAgICAgZC0+YWN0aXZhdGlvbiA9IDA7CiAKICAgICAgICAgUmVnaXN0
ZXIqIGV4dHJhQXJndW1lbnRzOwogICAgICAgICBpZiAobnVtQXJndW1lbnRzID4gc2l6ZW9mKGQt
PmV4dHJhQXJndW1lbnRzRml4ZWRCdWZmZXIpIC8gc2l6ZW9mKFJlZ2lzdGVyKSkKQEAgLTIwOSw3
ICsyMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBkLT5leHRyYUFyZ3VtZW50cyA9
IGV4dHJhQXJndW1lbnRzOwogCi0gICAgICAgIGQtPmNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbEZy
YW1lLT5jYWxsZWUoKSk7CisgICAgICAgIGQtPmNhbGxlZS5zZXQoY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCksIHRoaXMsIGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSkpOwogICAgICAgICBk
LT5vdmVycm9kZUxlbmd0aCA9IGZhbHNlOwogICAgICAgICBkLT5vdmVycm9kZUNhbGxlZSA9IGZh
bHNlOwogICAgICAgICBkLT5vdmVycm9kZUNhbGxlciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCA2MzJkNDY2
ZTIyOWY0MmJkMWIzOWIyZmIwOTZkNGQ3NTFjY2MxZDhmLi41ZDBhZGJkYTYwYWNkNzg2MjA1ZGI2
OWZjYTVlNmFhOGJjMWUwNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtNDIsMTAgKzQyLDEwIEBAIEFycmF5Q29uc3Ry
dWN0b3I6OkFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0CiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5UHJvdG90eXBl
LT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAgICAvLyBFQ01BIDE1LjQuMy4xIEFycmF5
LnByb3RvdHlwZQotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5wcm90b3R5cGUsIGFycmF5UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVByb3RvdHlwZSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAgLy8gbm8uIG9mIGFyZ3Vt
ZW50cyBmb3IgY29uc3RydWN0b3IKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51
bSB8IERvbnREZWxldGUpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJl
YWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIAogICAgIC8vIEVTNQogICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5j
dGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzQXJyYXksIGFycmF5Q29uc3RydWN0b3JJc0Fy
cmF5KSwgRG9udEVudW0pOwpAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTT2JqZWN0
KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdM
aQogICAgIH0KIAogICAgIC8vIG90aGVyd2lzZSB0aGUgYXJyYXkgaXMgY29uc3RydWN0ZWQgd2l0
aCB0aGUgYXJndW1lbnRzIGluIGl0Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlKCksIGFyZ3MpOworICAgIHJl
dHVybiBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlKCksIGFyZ3MpOwogfQogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKaW5kZXggNzYxNWZmY2E0NWU2ZjlkZmIyYTcxMThhYjM4MGFkNjg4ZmFi
MjA4OS4uMjczZDQ1MDdjYmZmNjAxMjA3YjQ3ZWMxMTViZDEyMjc5MzRiOWM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNTQ1
LDkgKzU0NSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNT
cGxpY2UoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNBcnJheSogcmVzT2JqID0gbmV3IChleGVj
KSBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwg
ZGVsZXRlQ291bnQsIENyZWF0ZUNvbXBhY3QpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gcmVzT2Jq
OwotCisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwog
ICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBkZWxldGVDb3VudDsgaysrKQotICAgICAgICBy
ZXNPYmotPnVuY2hlY2tlZFNldEluZGV4KGssIGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGsg
KyBiZWdpbikpOworICAgICAgICByZXNPYmotPnVuY2hlY2tlZFNldEluZGV4KGdsb2JhbERhdGEs
IGssIGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGsgKyBiZWdpbikpOwogCiAgICAgcmVzT2Jq
LT5zZXRMZW5ndGgoZGVsZXRlQ291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaAppbmRleCBkYjJk
MWQ3Y2MxYmRmN2JlNjM1ZDE5NjAxMzNjMDkzNDNlNzMzMGI5Li4wZjZhNjQ2NTRkOGQzYjJjMGUz
MWFkMjFhZGE3ZjI4MjQzODBmMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgKQEAgLTM0LDggKzM0
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXIgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYXRjaGVkVHJhbnNpdGlvbk9wdGlt
aXplcik7CiAgICAgcHVibGljOgotICAgICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcihK
U09iamVjdCogb2JqZWN0KQotICAgICAgICAgICAgOiBtX29iamVjdChvYmplY3QpCisgICAgICAg
IEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNP
YmplY3QqIG9iamVjdCkKKyAgICAgICAgICAgIDogbV9nbG9iYWxEYXRhKCZnbG9iYWxEYXRhKQor
ICAgICAgICAgICAgLCBtX29iamVjdChvYmplY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghbV9vYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgICAg
ICBtX29iamVjdC0+c2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6dG9DYWNoZWFibGVEaWN0aW9uYXJ5
VHJhbnNpdGlvbihtX29iamVjdC0+c3RydWN0dXJlKCkpKTsKQEAgLTQzLDEwICs0NCwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB+QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIoKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBtX29iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qo
KTsKKyAgICAgICAgICAgIG1fb2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCgqbV9nbG9i
YWxEYXRhKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgSlNHbG9iYWxEYXRh
KiBtX2dsb2JhbERhdGE7CiAgICAgICAgIEpTT2JqZWN0KiBtX29iamVjdDsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9y
LmNwcAppbmRleCAwMTY3ZTAzN2U3MzkxOTU2ZWFiMjc4YTM3MWUzY2FiNmMyZTUwYTAwLi5jMzZi
ZTgyYjJhODhiODUyYmQ2MzkyNmE5YzY1NjUxMmE3YzNmYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTMxLDE3
ICszMSwxNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEJvb2xlYW5Db25zdHJ1Y3Rvcik7
CiBCb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gc3RydWN0dXJlLCBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKQogICAgIDog
SW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgSWRlbnRpZmllcihleGVjLCBib29sZWFuUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xh
c3NOYW1lKSkKIHsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBib29sZWFuUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBib29sZWFuUHJvdG90
eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAKICAgICAvLyBuby4gb2Yg
YXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigx
KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogfQogCiAvLyBFQ01BIDE1LjYu
MgogSlNPYmplY3QqIGNvbnN0cnVjdEJvb2xlYW4oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdM
aXN0JiBhcmdzKQogewogICAgIEJvb2xlYW5PYmplY3QqIG9iaiA9IG5ldyAoZXhlYykgQm9vbGVh
bk9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmJvb2xlYW5PYmplY3RTdHJ1Y3R1
cmUoKSk7Ci0gICAgb2JqLT5zZXRJbnRlcm5hbFZhbHVlKGpzQm9vbGVhbihhcmdzLmF0KDApLnRv
Qm9vbGVhbihleGVjKSkpOworICAgIG9iai0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxE
YXRhKCksIGpzQm9vbGVhbihhcmdzLmF0KDApLnRvQm9vbGVhbihleGVjKSkpOwogICAgIHJldHVy
biBvYmo7CiB9CiAKQEAgLTcyLDcgKzcyLDcgQEAgQ2FsbFR5cGUgQm9vbGVhbkNvbnN0cnVjdG9y
OjpnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERhdGEpCiBKU09iamVjdCogY29uc3RydWN0Qm9v
bGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbW1lZGlh
dGVCb29sZWFuVmFsdWUpCiB7CiAgICAgQm9vbGVhbk9iamVjdCogb2JqID0gbmV3IChleGVjKSBC
b29sZWFuT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Ym9vbGVhbk9iamVjdFN0
cnVjdHVyZSgpKTsKLSAgICBvYmotPnNldEludGVybmFsVmFsdWUoaW1tZWRpYXRlQm9vbGVhblZh
bHVlKTsKKyAgICBvYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpbW1l
ZGlhdGVCb29sZWFuVmFsdWUpOwogICAgIHJldHVybiBvYmo7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKaW5kZXggN2ZmZDA5
NTg4YTMzMTk0Njc5OTM0NjVhN2Q2OGQwYTY0YmZkNTc4Mi4uNzMxNDU2ZWUxYjgyNDA1NmVlYzgz
OGViYjZmNWRkMTQxZGQ0NmExMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRl
Kik7CiBCb29sZWFuUHJvdG90eXBlOjpCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpCiAgICAg
OiBCb29sZWFuT2JqZWN0KHN0cnVjdHVyZSkKIHsKLSAgICBzZXRJbnRlcm5hbFZhbHVlKGpzQm9v
bGVhbihmYWxzZSkpOworICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBq
c0Jvb2xlYW4oZmFsc2UpKTsKIAogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnRvU3RyaW5nLCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1
bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgYm9vbGVhblByb3RvRnVuY1Zh
bHVlT2YpLCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zZXJ2YXRpdmVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29uc2VydmF0aXZlU2V0LmNwcAppbmRleCA5MzBmZTRhYTIxOTViZDg4NjliYjU3MTQ2YmQ0N2I2
N2M3NTQ4YzVhLi5iYzhiZDZkZmVhOTgyNzQxMWNjMmI5OWM4Yjk4ODZmZWYzYzllZDIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zZXJ2YXRpdmVTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNlcnZhdGl2ZVNldC5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAgaW5saW5lIGJvb2wgaXNQb2ludGVyQWxpZ25lZCh2b2lkKiBwKQog
dm9pZCBDb25zZXJ2YXRpdmVTZXQ6Omdyb3coKQogewogICAgIHNpemVfdCBuZXdDYXBhY2l0eSA9
IG1fY2FwYWNpdHkgPT0gaW5saW5lQ2FwYWNpdHkgPyBub25JbmxpbmVDYXBhY2l0eSA6IG1fY2Fw
YWNpdHkgKiAyOwotICAgIEpTQ2VsbCoqIG5ld1NldCA9IHN0YXRpY19jYXN0PEpTQ2VsbCoqPihP
U0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChuZXdDYXBhY2l0eSAqIHNpemVvZihKU0NlbGwq
KSkpOworICAgIERlcHJlY2F0ZWRQdHI8SlNDZWxsPiogbmV3U2V0ID0gc3RhdGljX2Nhc3Q8RGVw
cmVjYXRlZFB0cjxKU0NlbGw+Kj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQobmV3Q2Fw
YWNpdHkgKiBzaXplb2YoSlNDZWxsKikpKTsKICAgICBtZW1jcHkobmV3U2V0LCBtX3NldCwgbV9z
aXplICogc2l6ZW9mKEpTQ2VsbCopKTsKICAgICBpZiAobV9zZXQgIT0gbV9pbmxpbmVTZXQpCiAg
ICAgICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2UobV9zZXQsIG1fY2FwYWNpdHkg
KiBzaXplb2YoSlNDZWxsKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc2VydmF0aXZlU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zZXJ2YXRpdmVTZXQuaAppbmRleCAyNzZiZTg5YTI1YzRmYWQ4N2UzMWFjMWJjMGY1NjA3MjFj
NjViOWNmLi5lN2MyYzRhYjFjNTdmZmI5ZWQ4NDAyZjAyOGZlMzk3NjMzMjI4ZTBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zZXJ2YXRpdmVTZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zZXJ2YXRpdmVTZXQuaApAQCAtNDks
MTAgKzQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBncm93KCk7CiAKICAgICBIZWFwKiBtX2hl
YXA7Ci0gICAgSlNDZWxsKiogbV9zZXQ7CisgICAgRGVwcmVjYXRlZFB0cjxKU0NlbGw+KiBtX3Nl
dDsKICAgICBzaXplX3QgbV9zaXplOwogICAgIHNpemVfdCBtX2NhcGFjaXR5OwotICAgIEpTQ2Vs
bCogbV9pbmxpbmVTZXRbaW5saW5lQ2FwYWNpdHldOworICAgIERlcHJlY2F0ZWRQdHI8SlNDZWxs
PiBtX2lubGluZVNldFtpbmxpbmVDYXBhY2l0eV07CiB9OwogCiBpbmxpbmUgQ29uc2VydmF0aXZl
U2V0OjpDb25zZXJ2YXRpdmVTZXQoSGVhcCogaGVhcCkKQEAgLTY2LDEzICs2NiwxMyBAQCBpbmxp
bmUgQ29uc2VydmF0aXZlU2V0OjpDb25zZXJ2YXRpdmVTZXQoSGVhcCogaGVhcCkKIGlubGluZSBD
b25zZXJ2YXRpdmVTZXQ6On5Db25zZXJ2YXRpdmVTZXQoKQogewogICAgIGlmIChtX3NldCAhPSBt
X2lubGluZVNldCkKLSAgICAgICAgT1NBbGxvY2F0b3I6OmRlY29tbWl0QW5kUmVsZWFzZShtX3Nl
dCwgbV9jYXBhY2l0eSAqIHNpemVvZihKU0NlbGwqKSk7CisgICAgICAgIE9TQWxsb2NhdG9yOjpk
ZWNvbW1pdEFuZFJlbGVhc2UobV9zZXQsIG1fY2FwYWNpdHkgKiBzaXplb2YoRGVwcmVjYXRlZFB0
cjxKU0NlbGw+KikpOwogfQogCiBpbmxpbmUgdm9pZCBDb25zZXJ2YXRpdmVTZXQ6Om1hcmsoTWFy
a1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3NpemU7
ICsraSkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX3NldFtpXSk7CisgICAgICAgIG1hcmtT
dGFjay5hcHBlbmQoJm1fc2V0W2ldKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAppbmRleCBk
Y2JlMTJkYTIzNjE3Njc0YTc3MjhjMTc3OTI4M2FjYTc0M2RmYTY0Li5mMWYzOTU2YTgzZDU2Y2Ez
ZjlmMGVkZTM5MzMzMjU3ZjM4ZDcwZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTYxLDEzICs2MSwxMyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlVVRDKEV4ZWNTdGF0ZSopOwogRGF0ZUNv
bnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
U3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSogZGF0
ZVByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZGF0ZVByb3RvdHlwZS0+
Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7Ci0gICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBkYXRlUHJvdG90eXBlLCBEb250
RW51bXxEb250RGVsZXRlfFJlYWRPbmx5KTsKKyAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwg
ZGF0ZVByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0
aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25T
dHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wYXJzZSwgZGF0ZVBhcnNlKSwgRG9u
dEVudW0pOwogICAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBu
ZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZUZ1bmN0aW9uU3RydWN0dXJlLCA3LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuVVRDLCBkYXRl
VVRDKSwgRG9udEVudW0pOwogICAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bm93LCBkYXRlTm93KSwgRG9udEVudW0pOwogCi0gICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcig3KSwgUmVhZE9ubHkg
fCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCiAvLyBFQ01B
IDE1LjkuMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUlu
c3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5j
cHAKaW5kZXggODU2MmUyZDQ2Mzc2NmI2OWVkNGRhODI2NDEwNjZmNzJjNDk3YzcyNy4uODAzOGFm
NTM4N2I5N2I5ZTgyODYxOTI1OWMyODg4NGVjZTA3ZGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCkBAIC0zNCwyMiArMzQsMjIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBEYXRlSW5zdGFuY2U6OmluZm8gPSB7IkRh
dGUiLCAwLCAwLCAwfTsKIAotRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCitEYXRlSW5zdGFuY2U6OkRh
dGVJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlKQogICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKIHsKLSAgICBzZXRJ
bnRlcm5hbFZhbHVlKGpzTmFOKCkpOworICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBqc05hTigpKTsKIH0KIAotRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhlY1N0
YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGRvdWJsZSB0aW1l
KQorRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgZG91YmxlIHRpbWUpCiAgICAgOiBKU1dyYXBw
ZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAgIHNldEludGVybmFsVmFsdWUoanNOdW1iZXIodGlt
ZUNsaXAodGltZSkpKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
anNOdW1iZXIodGltZUNsaXAodGltZSkpKTsKIH0KIAogRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFu
Y2UoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgdGltZSkKICAgICA6IEpTV3JhcHBlck9iamVjdChl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmRhdGVTdHJ1Y3R1cmUoKSkKIHsKLSAgICBzZXRJ
bnRlcm5hbFZhbHVlKGpzTnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7CisgICAgc2V0SW50ZXJuYWxW
YWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7CiB9CiAK
IGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBEYXRlSW5zdGFuY2U6OmNhbGN1bGF0ZUdyZWdvcmlh
bkRhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggMDg1Y2IzM2MxNTQ2ODVkNTFlZDI2
NjM1N2JhY2UzMWFiNTJlMjViZi4uOTRiNjlhODVkNGIyY2UyNGI5YmE5ZjgxNzEzMzNlZTk1OGEx
OGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5jcHAKQEAgLTg0NSw3ICs4NDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNTZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGRvdWJsZSBtaWxsaSA9
IHRpbWVDbGlwKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTnVtYmVyKG1pbGxpKTsKLSAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxW
YWx1ZShyZXN1bHQpOworICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmds
b2JhbERhdGEoKSwgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKQEAgLTg2MCw3ICs4NjAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFs
dWVGcm9tVGltZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAgIAog
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpIHx8IGlzbmFuKG1pbGxpKSkgewogICAgICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTmFOKCk7Ci0gICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRl
cm5hbFZhbHVlKHJlc3VsdCk7CisgICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogICAgIH0KICAgICAgCkBAIC04NzcsMTIgKzg3NywxMiBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBp
bnQgbnVtQXJnc1RvVXNlLAogICAgIGdyZWdvcmlhbkRhdGVUaW1lLmNvcHlGcm9tKCpvdGhlcik7
CiAgICAgaWYgKCFmaWxsU3RydWN0dXJlc1VzaW5nVGltZUFyZ3MoZXhlYywgbnVtQXJnc1RvVXNl
LCAmbXMsICZncmVnb3JpYW5EYXRlVGltZSkpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c05hTigpOwotICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQpOwor
ICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCks
IHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9
IAogICAgIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWVU
b01TKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lLCBtcywgaW5wdXRJc1VUQykpOwotICAgIHRoaXNE
YXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7CisgICAgdGhpc0RhdGVPYmotPnNldElu
dGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtODk1LDcgKzg5NSw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhFeGVjU3RhdGUqIGV4ZWMsIGludCBu
dW1BcmdzVG9Vc2UsCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3Rh
bmNlKHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpIHsKICAgICAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc05hTigpOwotICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50
ZXJuYWxWYWx1ZShyZXN1bHQpOworICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1
ZShleGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKICAgICB9ICAgICAgCiAgICAgCkBAIC05MTcsMTIgKzkxNywxMiBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoRXhlY1N0YXRlKiBl
eGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAgIAogICAgIGlmICghZmlsbFN0cnVjdHVyZXNVc2lu
Z0RhdGVBcmdzKGV4ZWMsIG51bUFyZ3NUb1VzZSwgJm1zLCAmZ3JlZ29yaWFuRGF0ZVRpbWUpKSB7
CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOYU4oKTsKLSAgICAgICAgdGhpc0RhdGVPYmot
PnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKKyAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVy
bmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfSAKICAgICAgICAgICAgCiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihncmVnb3JpYW5EYXRlVGltZVRvTVMoZXhlYywgZ3JlZ29yaWFuRGF0
ZVRpbWUsIG1zLCBpbnB1dElzVVRDKSk7Ci0gICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFs
dWUocmVzdWx0KTsKKyAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9i
YWxEYXRhKCksIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCkBAIC0xMDE5LDcgKzEwMTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBEYXRlSW5zdGFuY2UqIHRo
aXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgICAgIAogICAgIGlmICghZXhl
Yy0+YXJndW1lbnRDb3VudCgpKSB7IAogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTmFOKCk7
Ci0gICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7CisgICAgICAg
IHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KICAgICAK
QEAgLTEwNDEsMTMgKzEwNDEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgZG91YmxlIHllYXIgPSBleGVj
LT5hcmd1bWVudCgwKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKICAgICBpZiAoIWlzZmlu
aXRlKHllYXIpKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOYU4oKTsKLSAgICAgICAg
dGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKKyAgICAgICAgdGhpc0RhdGVP
YmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQpOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogICAgICAgICAgICAgCiAg
ICAgZ3JlZ29yaWFuRGF0ZVRpbWUueWVhciA9IHRvSW50MzIoKHllYXIgPiA5OSB8fCB5ZWFyIDwg
MCkgPyB5ZWFyIC0gMTkwMCA6IHllYXIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lLCBtcywgZmFsc2Up
KTsKLSAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQpOworICAgIHRoaXNE
YXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDMyNmE0ZGYy
MzM4YmNjZTk0YTA1MTZkNGI1NGM4M2YwZjEzNGJkMy4uMmU1M2I5NTQwMGU3MmNhZWExMzgwZWNl
ODFiNWQ1NWZhZDgyOTVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTMzLDggKzMzLDggQEAgRXJyb3JDb25zdHJ1Y3Rv
cjo6RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZXJyb3JQcm90b3R5cGUtPmNs
YXNzSW5mbygpLT5jbGFzc05hbWUpKQogewogICAgIC8vIEVDTUEgMTUuMTEuMy4xIEVycm9yLnBy
b3RvdHlwZQotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIGVycm9yUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGVycm9yUHJvdG90eXBlLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiAvLyBFQ01B
IDE1LjkuMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJ
bnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNl
LmNwcAppbmRleCAwZjMxNTNjNTA2ZDk4YTllMDhiMGJhMGFiZTM0ZGIxNjk2OThhYjZkLi5hNjIw
OGQ1MjY4OWEzZmU5NzYxMGEzY2JjZTc2ZjBhMDY1YzFlMGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMjksMTQgKzI5LDE0IEBA
IEVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1CiAgICAgOiBKU09iamVjdChzdHJ1Y3R1cmUpCiAgICAg
LCBtX2FwcGVuZFNvdXJjZVRvTWVzc2FnZShmYWxzZSkKIHsKLSAgICBwdXREaXJlY3QoZ2xvYmFs
RGF0YS0+cHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgIiIpKTsK
KyAgICBwdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1l
c3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsICIiKSk7CiB9CiAKIEVycm9ySW5zdGFuY2U6OkVy
cm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKICAgICA6IEpTT2Jq
ZWN0KHN0cnVjdHVyZSkKICAgICAsIG1fYXBwZW5kU291cmNlVG9NZXNzYWdlKGZhbHNlKQogewot
ICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmlu
ZyhnbG9iYWxEYXRhLCBtZXNzYWdlKSk7CisgICAgcHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBtZXNz
YWdlKSk7CiB9CiAKIEVycm9ySW5zdGFuY2UqIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IGQ4ZmM4MjlkNzk4N2E3ZDgwYWIxN2YyOTk5
NGZkM2I4MGRmNTBmYWEuLmI0ZTBhN2NlNmNkMDVlMzg5MDAwN2Q1NjVmOGM5NGFkNWZkNDMzMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgRXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm8KIHsKICAgICAvLyBU
aGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciBpbiBFcnJvckNvbnN0cnVjdG9yJ3Mg
Y29uc3RydWN0b3IKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkVycm9yIiksIERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkVy
cm9yIiksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50
b1N0cmluZywgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAppbmRleCA0NWI0ODAyM2Y4MGViZDZkYTcyMTQ1MmQ4ODhhYjI2N2RmN2Q0ZmM0Li45MzNiMTFm
OTljNGI2YjNkNGVlZTQyODI5NWVjZjZmZTJmZmExNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtNDAsMTAg
KzQwLDEwIEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRnVuY3Rpb25Db25zdHJ1Y3Rvcik7
CiBGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSkKICAg
ICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUtPmNsYXNzSW5mbygp
LT5jbGFzc05hbWUpKQogewotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGZ1bmN0aW9uUHJvdG90eXBlLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBmdW5jdGlv
blByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAgLy8g
TnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKLSAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVh
ZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
anNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKIH0KIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEZ1bmN0aW9uQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGNkNzczOWQxOWNmN2I4ODc2ZmNl
NzEyYzAxNjIwODdmMDlkYmY1M2MuLmU2NTE1MzgxMTEwMzE4ZDNhZDc4NjU5OWFkNTY5YTZjYWM0
NGY0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKEV4ZWNTdGF0ZSopOwogRnVuY3Rpb25Q
cm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUp
CiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVsbElkZW50aWZpZXIpCiB7Ci0g
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVy
dGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcioq
IGNhbGxGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKiogYXBwbHlGdW5jdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCmluZGV4IDdl
NTQwNTNmOTZjY2U3M2I1NTYwYTgyZTVlODEwZTFlNWQyODBmNmMuLjJiOWY0NDQyMzFmOGE1ZDNl
Mjk4OTU0OGVkOTg0MGIwYzczMDE1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtMzMsOSArMzMsOSBAQCB2b2lkIEdldHRlclNldHRl
cjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgIEpTQ2VsbDo6bWFya0No
aWxkcmVuKG1hcmtTdGFjayk7CiAKICAgICBpZiAobV9nZXR0ZXIpCi0gICAgICAgIG1hcmtTdGFj
ay5hcHBlbmQobV9nZXR0ZXIpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2dldHRlcik7
CiAgICAgaWYgKG1fc2V0dGVyKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1fc2V0dGVyKTsK
KyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9zZXR0ZXIpOwogfQogCiBib29sIEdldHRlclNl
dHRlcjo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCBlN2IxOTM4Y2U5NmJjMGI1MmYxNjRlOWQzYmEzNzI3
NTlhODYzYWQ4Li5mZmFiOTRkZmIyNWZiZjg0MDBhYjBlOWY4NmIxOGViZjI0M2Y4YzkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtMzgsMTcg
KzM4LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgR2V0dGVyU2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERh
dGEoKS5nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgICAgICAgICAsIG1fZ2V0dGVy
KDApCi0gICAgICAgICAgICAsIG1fc2V0dGVyKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAKLSAgICAgICAg
SlNPYmplY3QqIGdldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyOyB9Ci0gICAgICAgIHZv
aWQgc2V0R2V0dGVyKEpTT2JqZWN0KiBnZXR0ZXIpIHsgbV9nZXR0ZXIgPSBnZXR0ZXI7IH0KLSAg
ICAgICAgSlNPYmplY3QqIHNldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyOyB9Ci0gICAg
ICAgIHZvaWQgc2V0U2V0dGVyKEpTT2JqZWN0KiBzZXR0ZXIpIHsgbV9zZXR0ZXIgPSBzZXR0ZXI7
IH0KKyAgICAgICAgSlNPYmplY3QqIGdldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyLmdl
dCgpOyB9CisgICAgICAgIHZvaWQgc2V0R2V0dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNPYmplY3QqIGdldHRlcikgeyBtX2dldHRlci5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2V0dGVy
KTsgfQorICAgICAgICBKU09iamVjdCogc2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0ZXIu
Z2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRTZXR0ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU09iamVjdCogc2V0dGVyKSB7IG1fc2V0dGVyLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzZXR0
ZXIpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0
dXJlKEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUocHJvdG90eXBlLCBUeXBlSW5mbyhHZXR0ZXJTZXR0ZXJUeXBlLCBPdmVy
cmlkZXNNYXJrQ2hpbGRyZW4pLCBBbm9ueW1vdXNTbG90Q291bnQpOwpAQCAtNTYsOCArNTQsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNH
ZXR0ZXJTZXR0ZXIoKSBjb25zdDsKIAotICAgICAgICBKU09iamVjdCogbV9nZXR0ZXI7Ci0gICAg
ICAgIEpTT2JqZWN0KiBtX3NldHRlcjsgIAorICAgICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+
IG1fZ2V0dGVyOworICAgICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fc2V0dGVyOyAgCiAg
ICAgfTsKIAogICAgIEdldHRlclNldHRlciogYXNHZXR0ZXJTZXR0ZXIoSlNWYWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNw
cAppbmRleCAzYWQ0NjQ0NWQ1NzZlZTUzZjVjNGIyNzhkNzdiOTJlY2NkZTdhZmE3Li4yNzIwN2Uy
ODRmNGEzMjc5MDk4ZmU0MTc2MTc1MjU2YjlhOGIzZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChHbG9iYWxFdmFsRnVuY3Rpb24pOwogCiBH
bG9iYWxFdmFsRnVuY3Rpb246Okdsb2JhbEV2YWxGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlLCBpbnQgbGVuLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgSlNHbG9iYWxPYmplY3QqIGNhY2hlZEdsb2JhbE9iamVjdCkKICAgICA6IFBy
b3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW4sIG5hbWUs
IGZ1bmN0aW9uKQotICAgICwgbV9jYWNoZWRHbG9iYWxPYmplY3QoY2FjaGVkR2xvYmFsT2JqZWN0
KQorICAgICwgbV9jYWNoZWRHbG9iYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBj
YWNoZWRHbG9iYWxPYmplY3QpCiB7CiAgICAgQVNTRVJUX0FSRyhjYWNoZWRHbG9iYWxPYmplY3Qs
IGNhY2hlZEdsb2JhbE9iamVjdCk7CiB9CkBAIC00Miw3ICs0Miw3IEBAIEdsb2JhbEV2YWxGdW5j
dGlvbjo6R2xvYmFsRXZhbEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iCiB2b2lkIEdsb2JhbEV2YWxGdW5jdGlvbjo6bWFya0NoaWxkcmVuKE1hcmtTdGFj
ayYgbWFya1N0YWNrKQogewogICAgIFByb3RvdHlwZUZ1bmN0aW9uOjptYXJrQ2hpbGRyZW4obWFy
a1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYXBwZW5kKG1fY2FjaGVkR2xvYmFsT2JqZWN0KTsKKyAg
ICBtYXJrU3RhY2suYXBwZW5kKCZtX2NhY2hlZEdsb2JhbE9iamVjdCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xv
YmFsRXZhbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxF
dmFsRnVuY3Rpb24uaAppbmRleCBiODg5Y2E5OGE5YzU1OTFmNGM5OTBhMjllNDI5NjMwOTUyNjEz
NWExLi4xM2YwOTQ2ZmEzMTBhNjM0NjhiZTA4YTIyODBhNjMyNmZiYzZiMDQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uaApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHbG9iYWxFdmFsRnVuY3Rp
b24gOiBwdWJsaWMgUHJvdG90eXBlRnVuY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgR2xv
YmFsRXZhbEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbiwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0
aW9uLCBKU0dsb2JhbE9iamVjdCogZXhwZWN0ZWRUaGlzT2JqZWN0KTsKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGNhY2hlZEdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkR2xv
YmFsT2JqZWN0OyB9CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBjYWNoZWRHbG9iYWxPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEdsb2JhbE9iamVjdC5nZXQoKTsgfQogCiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJv
dG90eXBlKSAKICAgICAgICAgeyAKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2sm
KTsKIAotICAgICAgICBKU0dsb2JhbE9iamVjdCogbV9jYWNoZWRHbG9iYWxPYmplY3Q7CisgICAg
ICAgIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVjdD4gbV9jYWNoZWRHbG9iYWxPYmplY3Q7CiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hl
YXAuY3BwCmluZGV4IDllYzM3OTliMDRjYjBhNWRhYmM0ZjU5NGEwN2QzMDM4MTRmOWU5NTYuLjIz
NzQ0NDhkMGQyNjMzYmI0MjYzYzI2N2U2OWRhYTZmYzNlODFhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0hlYXAuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBIZWFwOjptYXJr
UHJvdGVjdGVkT2JqZWN0cyhNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBQcm90ZWN0Q291
bnRTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvdGVjdGVkVmFsdWVzLmVuZCgpOwogICAgIGZvciAo
UHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBpdCA9IG1fcHJvdGVjdGVkVmFsdWVzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChpdC0+Zmlyc3QpOwor
ICAgICAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZCgmaXQtPmZpcnN0KTsKIH0KIAogdm9p
ZCBIZWFwOjpwdXNoVGVtcFNvcnRWZWN0b3IoVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj4qIHRlbXBW
ZWN0b3IpCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBIZWFwOjptYXJrVGVtcFNvcnRWZWN0b3Jz
KE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgICAgICBWZWN0b3I8VmFsdWVTdHJpbmdQYWlyPjo6
aXRlcmF0b3IgdmVjdG9yRW5kID0gdGVtcFNvcnRpbmdWZWN0b3ItPmVuZCgpOwogICAgICAgICBm
b3IgKFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+OjppdGVyYXRvciB2ZWN0b3JJdCA9IHRlbXBTb3J0
aW5nVmVjdG9yLT5iZWdpbigpOyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpIHsK
ICAgICAgICAgICAgIGlmICh2ZWN0b3JJdC0+Zmlyc3QpCi0gICAgICAgICAgICAgICAgbWFya1N0
YWNrLmFwcGVuZCh2ZWN0b3JJdC0+Zmlyc3QpOworICAgICAgICAgICAgICAgIG1hcmtTdGFjay5k
ZXByZWNhdGVkQXBwZW5kKCZ2ZWN0b3JJdC0+Zmlyc3QpOwogICAgICAgICB9CiAgICAgfQogfQpA
QCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKICAgICBpZiAobV9tYXJr
TGlzdFNldCAmJiBtX21hcmtMaXN0U2V0LT5zaXplKCkpCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyOjptYXJrTGlzdHMobWFya1N0YWNrLCAqbV9tYXJrTGlzdFNldCk7CiAgICAgaWYgKG1f
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1fZ2xvYmFs
RGF0YS0+ZXhjZXB0aW9uKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9nbG9iYWxEYXRh
LT5leGNlcHRpb24pOwogICAgIGlmIChtX2dsb2JhbERhdGEtPmZpcnN0U3RyaW5naWZpZXJUb01h
cmspCiAgICAgICAgIEpTT05PYmplY3Q6Om1hcmtTdHJpbmdpZmllcnMobWFya1N0YWNrLCBtX2ds
b2JhbERhdGEtPmZpcnN0U3RyaW5naWZpZXJUb01hcmspOwogICAgIG1hcmtTdGFjay5kcmFpbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmNwcAppbmRleCAwYThkOWRlZmNkNGNmYTNlMmExYmY1M2Y0NzFhNWM5ODJjOWEwNmM3Li5mMTlh
ZTBkOGFiMGI5YTM1MzZiZjBiZWU4YzcxOTVjZDVhOGFlMGI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtNDYsNyArNDYs
NyBAQCBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gc3RydWN0dXJlKQogSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlv
bihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKQogewotICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc1N0cmluZyhnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmco
KSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoKmds
b2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGdsb2Jh
bERhdGEsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBjb25zdCBVU3RyaW5nJiBJbnRlcm5hbEZ1bmN0
aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCmluZGV4IDEwZGVkNGNkNDQxOGJkOWJjZDhmM2Mx
MGM1N2Q5YmFlNTBmNmY4MWYuLmExMTNlOTE5ODY0ZDU4NTIxMmUzNzUxZWY4MDg1OGI3NjE5ZTI4
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVX
cmFwcGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdy
YXBwZXIuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0FQ
SVZhbHVlV3JhcHBlciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgSlNWYWx1ZSBq
c0FQSVZhbHVlV3JhcHBlcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgICAgIEpT
VmFsdWUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CkBAIC00NCwxMiArNDQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAg
ICAgSlNBUElWYWx1ZVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAg
ICAgICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLmFwaVdyYXBwZXJTdHJ1Y3R1cmUu
Z2V0KCkpCi0gICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fdmFsdWUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOwogICAgICAg
ICAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBKU1Zh
bHVlIG1fdmFsdWU7CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3ZhbHVlOwogICAg
IH07CiAKICAgICBpbmxpbmUgSlNWYWx1ZSBqc0FQSVZhbHVlV3JhcHBlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmNwcAppbmRleCA0Mjg0MDNkMjU4ZjU1YTlmODg0YzZjNjJlZTc4MWYyMDExMTll
ZGY4Li5jYTNlZmU5ZGExNjA5ODgzNjZlNWMxN2NiOWIwZThkYzliOGRiZmRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTE0NCw3ICsx
NDQsNyBAQCBib29sIEpTQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBKU0FjdGl2YXRpb246OnB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNB
Y3RpdmF0aW9uOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NF
UlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAo
dGhpcykpOwogCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnB1dChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUKICAg
ICAvLyBwcm9wZXJ0aWVzIGFyZSBub24tc3RhbmRhcmQgZXh0ZW5zaW9ucyB0aGF0IG90aGVyIGlt
cGxlbWVudGF0aW9ucyBkbyBub3QKICAgICAvLyBleHBvc2UgaW4gdGhlIGFjdGl2YXRpb24gb2Jq
ZWN0LgogICAgIEFTU0VSVCghaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICBwdXRE
aXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgdHJ1ZSwgc2xvdCk7CisgICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgdHJ1ZSwgc2xvdCk7
CiB9CiAKIC8vIEZJWE1FOiBNYWtlIHRoaXMgZnVuY3Rpb24gaG9ub3IgUmVhZE9ubHkgKGNvbnN0
KSBhbmQgRG9udEVudW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
aW5kZXggNTU2NjAzYmRjZGM3YzEwMWQ2NTdhM2NkNjk2ODE5YTA1ZDE4NjczMy4uY2UyNWY3YjNl
MzJmMjlhM2ZkZjhlYTZmYWMzNGVlNWJkMDNlYzNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTE4OCw5ICsxODgsOSBAQCBKU0FycmF5OjpKU0FycmF5
KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFs
TGVuZ3RoLAogI2VuZGlmCiAgICAgICAgIG1fc3RvcmFnZS0+bV9sZW5ndGggPSBpbml0aWFsTGVu
Z3RoOwogICAgICAgICBtX3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSAwOwotICAgICAg
ICBKU1ZhbHVlKiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9yOworICAgICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4qIHZlY3RvciA9IG1fc3RvcmFnZS0+bV92ZWN0b3I7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5pdGlhbENhcGFjaXR5OyArK2kpCi0gICAgICAgICAgICB2
ZWN0b3JbaV0gPSBKU1ZhbHVlKCk7CisgICAgICAgICAgICB2ZWN0b3JbaV0uY2xlYXIoKTsKICAg
ICB9CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC0xOTgsNyArMTk4LDcgQEAgSlNBcnJh
eTo6SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgdW5zaWdu
ZWQgaW5pdGlhbExlbmd0aCwKICAgICBIZWFwOjpoZWFwKHRoaXMpLT5yZXBvcnRFeHRyYU1lbW9y
eUNvc3Qoc3RvcmFnZVNpemUoaW5pdGlhbENhcGFjaXR5KSk7CiB9CiAKLUpTQXJyYXk6OkpTQXJy
YXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IEFyZ0xpc3Qm
IGxpc3QpCitKU0FycmF5OjpKU0FycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IEFyZ0xpc3QmIGxpc3QpCiAg
ICAgOiBKU09iamVjdChzdHJ1Y3R1cmUpCiB7CiAgICAgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5
ID0gbGlzdC5zaXplKCk7CkBAIC0yMjUsMTIgKzIyNSwxMiBAQCBKU0FycmF5OjpKU0FycmF5KE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBBcmdMaXN0JiBsaXN0
KQogI2VuZGlmCiAKICAgICBzaXplX3QgaSA9IDA7Ci0gICAgSlNWYWx1ZSogdmVjdG9yID0gbV9z
dG9yYWdlLT5tX3ZlY3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvciA9IG1f
c3RvcmFnZS0+bV92ZWN0b3I7CiAgICAgQXJnTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGlz
dC5lbmQoKTsKICAgICBmb3IgKEFyZ0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGlzdC5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQsICsraSkKLSAgICAgICAgdmVjdG9yW2ldID0gKml0OworICAg
ICAgICB2ZWN0b3JbaV0uc2V0KGdsb2JhbERhdGEsIHRoaXMsICppdCk7CiAgICAgZm9yICg7IGkg
PCBpbml0aWFsU3RvcmFnZTsgaSsrKQotICAgICAgICB2ZWN0b3JbaV0gPSBKU1ZhbHVlKCk7Cisg
ICAgICAgIHZlY3RvcltpXS5jbGVhcigpOwogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBA
IC0yNTcsMTYgKzI1NywxNiBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIFByb3BlcnR5U2xvdCYgc2xvdAogICAgIH0KIAogICAg
IGlmIChpIDwgbV92ZWN0b3JMZW5ndGgpIHsKLSAgICAgICAgSlNWYWx1ZSYgdmFsdWVTbG90ID0g
c3RvcmFnZS0+bV92ZWN0b3JbaV07CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdmFs
dWVTbG90ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAgIGlmICh2YWx1ZVNsb3QpIHsK
LSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KCZ2YWx1ZVNsb3QpOworICAgICAgICAgICAg
c2xvdC5zZXRWYWx1ZVNsb3QodmFsdWVTbG90LnNsb3QoKSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFw
ID0gc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCkgewogICAgICAgICBpZiAoaSA+PSBNSU5fU1BB
UlNFX0FSUkFZX0lOREVYKSB7CiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVy
YXRvciBpdCA9IG1hcC0+ZmluZChpKTsKICAgICAgICAgICAgIGlmIChpdCAhPSBtYXAtPmVuZCgp
KSB7Ci0gICAgICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZVNsb3QoJml0LT5zZWNvbmQpOworICAg
ICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KGl0LT5zZWNvbmQuc2xvdCgpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzA1
LDE2ICszMDUsMTYgQEAgYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXIKICAgICAgICAgaWYgKGkgPj0g
c3RvcmFnZS0+bV9sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlm
IChpIDwgbV92ZWN0b3JMZW5ndGgpIHsKLSAgICAgICAgICAgIEpTVmFsdWUmIHZhbHVlID0gc3Rv
cmFnZS0+bV92ZWN0b3JbaV07CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHZh
bHVlID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAgICAgICBpZiAodmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IodmFsdWUsIDApOworICAgICAg
ICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcih2YWx1ZS5nZXQoKSwgMCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAoU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCkg
ewogICAgICAgICAgICAgaWYgKGkgPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkgewogICAgICAg
ICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5maW5kKGkp
OwogICAgICAgICAgICAgICAgIGlmIChpdCAhPSBtYXAtPmVuZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihpdC0+c2Vjb25kLCAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGl0LT5zZWNvbmQuZ2V0KCksIDAp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC0zNTksMTMgKzM1OSwxMyBAQCB2b2lkIEpTQXJyYXk6OnB1dChFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAgfQogCiAgICAgaWYg
KGkgPCBtX3ZlY3Rvckxlbmd0aCkgewotICAgICAgICBKU1ZhbHVlJiB2YWx1ZVNsb3QgPSBzdG9y
YWdlLT5tX3ZlY3RvcltpXTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZVNs
b3QgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKICAgICAgICAgaWYgKHZhbHVlU2xvdCkgewotICAg
ICAgICAgICAgdmFsdWVTbG90ID0gdmFsdWU7CisgICAgICAgICAgICB2YWx1ZVNsb3Quc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHZhbHVlU2xv
dCA9IHZhbHVlOworICAgICAgICB2YWx1ZVNsb3Quc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgdmFsdWUpOwogICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAg
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzk1LDExICszOTUs
MTEgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSlNBcnJheTo6cHV0U2xvd0Nhc2UoRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHUKICAgICAgICAgICAgICAgICBzdG9yYWdlLT5t
X3NwYXJzZVZhbHVlTWFwID0gbWFwOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwYWly
PFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtYXAtPmFkZChp
LCB2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsgLy8gcHJlLWV4aXN0
aW5nIGVudHJ5Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSB2YWx1ZTsK
KyAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiB0ZW1wOworICAgICAgICAgICAgcGFp
cjxTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwLT5hZGQo
aSwgdGVtcCk7CisgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZC5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQp
IC8vIHByZS1leGlzdGluZyBlbnRyeQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgc2l6ZV90IGNhcGFjaXR5ID0gbWFwLT5jYXBhY2l0eSgpOwog
ICAgICAgICAgICAgaWYgKGNhcGFjaXR5ICE9IHN0b3JhZ2UtPnJlcG9ydGVkTWFwQ2FwYWNpdHkp
IHsKQEAgLTQxNSw3ICs0MTUsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXRTbG93
Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdQogICAgIGlmICgh
bWFwIHx8IG1hcC0+aXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChpbmNyZWFzZVZlY3Rvckxlbmd0
aChpICsgMSkpIHsKICAgICAgICAgICAgIHN0b3JhZ2UgPSBtX3N0b3JhZ2U7Ci0gICAgICAgICAg
ICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IHZhbHVlOworICAgICAgICAgICAgc3RvcmFnZS0+bV92
ZWN0b3JbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOwogICAgICAgICAg
ICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgICAgICAgICAgY2hlY2tDb25z
aXN0ZW5jeSgpOwogICAgICAgICB9IGVsc2UKQEAgLTQ1NywxOCArNDU3LDE5IEBAIE5FVkVSX0lO
TElORSB2b2lkIEpTQXJyYXk6OnB1dFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1CiAgICAgc3RvcmFnZSA9IG1fc3RvcmFnZTsKICAgICAKICAgICB1bnNp
Z25lZCB2ZWN0b3JMZW5ndGggPSBtX3ZlY3Rvckxlbmd0aDsKLSAgICBKU1ZhbHVlKiB2ZWN0b3Ig
PSBzdG9yYWdlLT5tX3ZlY3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvciA9
IHN0b3JhZ2UtPm1fdmVjdG9yOwogCiAgICAgaWYgKG5ld051bVZhbHVlc0luVmVjdG9yID09IHN0
b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgKyAxKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IHZlY3Rvckxlbmd0aDsgaiA8IG5ld1ZlY3Rvckxlbmd0aDsgKytqKQotICAgICAgICAgICAg
dmVjdG9yW2pdID0gSlNWYWx1ZSgpOworICAgICAgICAgICAgdmVjdG9yW2pdLmNsZWFyKCk7CiAg
ICAgICAgIGlmIChpID4gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkKICAgICAgICAgICAgIG1hcC0+
cmVtb3ZlKGkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IHZlY3Rv
ckxlbmd0aDsgaiA8IG1heCh2ZWN0b3JMZW5ndGgsIE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpOyAr
K2opCi0gICAgICAgICAgICB2ZWN0b3Jbal0gPSBKU1ZhbHVlKCk7CisgICAgICAgICAgICB2ZWN0
b3Jbal0uY2xlYXIoKTsKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBtYXgodmVjdG9yTGVuZ3Ro
LCBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKTsgaiA8IG5ld1ZlY3Rvckxlbmd0aDsgKytqKQotICAg
ICAgICAgICAgdmVjdG9yW2pdID0gbWFwLT50YWtlKGopOworICAgICAgICAgICAgdmVjdG9yW2pd
LnNldChnbG9iYWxEYXRhLCB0aGlzLCBtYXAtPnRha2UoaikuZ2V0KCkpOwogICAgIH0KIAogICAg
IEFTU0VSVChpIDwgbmV3VmVjdG9yTGVuZ3RoKTsKQEAgLTQ3Niw3ICs0NzcsNyBAQCBORVZFUl9J
TkxJTkUgdm9pZCBKU0FycmF5OjpwdXRTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGksIEpTVmFsdWUgdmFsdQogICAgIG1fdmVjdG9yTGVuZ3RoID0gbmV3VmVjdG9yTGVuZ3RoOwog
ICAgIHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSBuZXdOdW1WYWx1ZXNJblZlY3RvcjsK
IAotICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldID0gdmFsdWU7CisgICAgc3RvcmFnZS0+bV92ZWN0
b3JbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOwogCiAgICAgY2hlY2tD
b25zaXN0ZW5jeSgpOwogCkBAIC01MDMsMTIgKzUwNCwxMiBAQCBib29sIEpTQXJyYXk6OmRlbGV0
ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSkKICAgICBBcnJheVN0b3JhZ2Uq
IHN0b3JhZ2UgPSBtX3N0b3JhZ2U7CiAgICAgCiAgICAgaWYgKGkgPCBtX3ZlY3Rvckxlbmd0aCkg
ewotICAgICAgICBKU1ZhbHVlJiB2YWx1ZVNsb3QgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAg
ICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZVNsb3QgPSBzdG9yYWdlLT5tX3ZlY3Rv
cltpXTsKICAgICAgICAgaWYgKCF2YWx1ZVNsb3QpIHsKICAgICAgICAgICAgIGNoZWNrQ29uc2lz
dGVuY3koKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICB2
YWx1ZVNsb3QgPSBKU1ZhbHVlKCk7CisgICAgICAgIHZhbHVlU2xvdC5jbGVhcigpOwogICAgICAg
ICAtLXN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MDUsOSArNjA2LDkgQEAgYm9vbCBKU0Fy
cmF5OjppbmNyZWFzZVZlY3Rvckxlbmd0aCh1bnNpZ25lZCBuZXdMZW5ndGgpCiAgICAgc3RvcmFn
ZSA9IG1fc3RvcmFnZSA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEFycmF5U3RvcmFnZSo+KHN0YXRp
Y19jYXN0PGNoYXIqPihiYXNlU3RvcmFnZSkgKyBtX2luZGV4QmlhcyAqIHNpemVvZihKU1ZhbHVl
KSk7CiAgICAgbV9zdG9yYWdlLT5tX2FsbG9jQmFzZSA9IGJhc2VTdG9yYWdlOwogCi0gICAgSlNW
YWx1ZSogdmVjdG9yID0gc3RvcmFnZS0+bV92ZWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+KiB2ZWN0b3IgPSBzdG9yYWdlLT5tX3ZlY3RvcjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSB2
ZWN0b3JMZW5ndGg7IGkgPCBuZXdWZWN0b3JMZW5ndGg7ICsraSkKLSAgICAgICAgdmVjdG9yW2ld
ID0gSlNWYWx1ZSgpOworICAgICAgICB2ZWN0b3JbaV0uY2xlYXIoKTsKIAogICAgIG1fdmVjdG9y
TGVuZ3RoID0gbmV3VmVjdG9yTGVuZ3RoOwogICAgIApAQCAtNjY2LDkgKzY2Nyw5IEBAIHZvaWQg
SlNBcnJheTo6c2V0TGVuZ3RoKHVuc2lnbmVkIG5ld0xlbmd0aCkKICAgICBpZiAobmV3TGVuZ3Ro
IDwgbGVuZ3RoKSB7CiAgICAgICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSBtaW4obGVu
Z3RoLCBtX3ZlY3Rvckxlbmd0aCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5ld0xlbmd0
aDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgSlNWYWx1ZSYgdmFs
dWVTbG90ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4mIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOwogICAgICAgICAgICAg
Ym9vbCBoYWRWYWx1ZSA9IHZhbHVlU2xvdDsKLSAgICAgICAgICAgIHZhbHVlU2xvdCA9IEpTVmFs
dWUoKTsKKyAgICAgICAgICAgIHZhbHVlU2xvdC5jbGVhcigpOwogICAgICAgICAgICAgc3RvcmFn
ZS0+bV9udW1WYWx1ZXNJblZlY3RvciAtPSBoYWRWYWx1ZTsKICAgICAgICAgfQogCkBAIC03MDYs
MTEgKzcwNywxMSBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBvcCgpCiAgICAgSlNWYWx1ZSByZXN1bHQ7
CiAKICAgICBpZiAobGVuZ3RoIDwgbV92ZWN0b3JMZW5ndGgpIHsKLSAgICAgICAgSlNWYWx1ZSYg
dmFsdWVTbG90ID0gc3RvcmFnZS0+bV92ZWN0b3JbbGVuZ3RoXTsKKyAgICAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+JiB2YWx1ZVNsb3QgPSBzdG9yYWdlLT5tX3ZlY3RvcltsZW5ndGhdOwogICAg
ICAgICBpZiAodmFsdWVTbG90KSB7CiAgICAgICAgICAgICAtLXN0b3JhZ2UtPm1fbnVtVmFsdWVz
SW5WZWN0b3I7Ci0gICAgICAgICAgICByZXN1bHQgPSB2YWx1ZVNsb3Q7Ci0gICAgICAgICAgICB2
YWx1ZVNsb3QgPSBKU1ZhbHVlKCk7CisgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZVNsb3QuZ2V0
KCk7CisgICAgICAgICAgICB2YWx1ZVNsb3QuY2xlYXIoKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogICAgIH0gZWxzZSB7CkBAIC03MTgsNyAr
NzE5LDcgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoKQogICAgICAgICBpZiAoU3BhcnNlQXJyYXlW
YWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCkgewogICAgICAgICAgICAg
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmZpbmQobGVuZ3RoKTsKICAg
ICAgICAgICAgIGlmIChpdCAhPSBtYXAtPmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0
ID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBpdC0+c2Vjb25kLmdldCgp
OwogICAgICAgICAgICAgICAgIG1hcC0+cmVtb3ZlKGl0KTsKICAgICAgICAgICAgICAgICBpZiAo
bWFwLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG1hcDsKQEAgLTc0
Miw3ICs3NDMsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlKQogICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IG1fc3RvcmFnZTsKIAogICAgIGlm
IChzdG9yYWdlLT5tX2xlbmd0aCA8IG1fdmVjdG9yTGVuZ3RoKSB7Ci0gICAgICAgIHN0b3JhZ2Ut
Pm1fdmVjdG9yW3N0b3JhZ2UtPm1fbGVuZ3RoXSA9IHZhbHVlOworICAgICAgICBzdG9yYWdlLT5t
X3ZlY3RvcltzdG9yYWdlLT5tX2xlbmd0aF0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
dmFsdWUpOwogICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgICAg
ICsrc3RvcmFnZS0+bV9sZW5ndGg7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTc1
NCw3ICs3NTUsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlKQogICAgICAgICBpZiAoIW1hcCB8fCBtYXAtPmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgaWYgKGluY3JlYXNlVmVjdG9yTGVuZ3RoKHN0b3JhZ2UtPm1fbGVuZ3RoICsgMSkpIHsKICAg
ICAgICAgICAgICAgICBzdG9yYWdlID0gbV9zdG9yYWdlOwotICAgICAgICAgICAgICAgIHN0b3Jh
Z2UtPm1fdmVjdG9yW3N0b3JhZ2UtPm1fbGVuZ3RoXSA9IHZhbHVlOworICAgICAgICAgICAgICAg
IHN0b3JhZ2UtPm1fdmVjdG9yW3N0b3JhZ2UtPm1fbGVuZ3RoXS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVl
c0luVmVjdG9yOwogICAgICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9sZW5ndGg7CiAgICAgICAg
ICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtODU3LDkgKzg1OCw5IEBAIHZvaWQgSlNB
cnJheTo6dW5zaGlmdENvdW50KEV4ZWNTdGF0ZSogZXhlYywgaW50IGNvdW50KQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgSlNWYWx1ZSogdmVjdG9yID0gbV9zdG9yYWdlLT5tX3ZlY3Rv
cjsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvciA9IG1fc3RvcmFnZS0+bV92ZWN0
b3I7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICB2ZWN0b3Jb
aV0gPSBKU1ZhbHVlKCk7CisgICAgICAgIHZlY3RvcltpXS5jbGVhcigpOwogfQogCiB2b2lkIEpT
QXJyYXk6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKQEAgLTk0MSw3ICs5NDIs
NyBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgIEhlYXA6OmhlYXAo
dGhpcyktPnB1c2hUZW1wU29ydFZlY3RvcigmdmFsdWVzKTsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoTm90SW5jbHVkaW5nVW5kZWZpbmVkOyBpKyspIHsKLSAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV0uZ2V0KCk7CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNV
bmRlZmluZWQoKSk7CiAgICAgICAgIHZhbHVlc1tpXS5maXJzdCA9IHZhbHVlOwogICAgIH0KQEAg
LTk3NCw5ICs5NzUsMTAgQEAgdm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgaW5jcmVhc2VWZWN0b3JMZW5ndGgobGVuZ3RoTm90SW5jbHVkaW5nVW5kZWZpbmVkKTsK
ICAgICBpZiAoc3RvcmFnZS0+bV9sZW5ndGggPCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQp
CiAgICAgICAgIHN0b3JhZ2UtPm1fbGVuZ3RoID0gbGVuZ3RoTm90SW5jbHVkaW5nVW5kZWZpbmVk
OwotICAgICAgICAKKworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2Jh
bERhdGEoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aE5vdEluY2x1ZGluZ1Vu
ZGVmaW5lZDsgaSsrKQotICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IHZhbHVlc1tpXS5m
aXJzdDsKKyAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uc2V0KGdsb2JhbERhdGEsIHRoaXMs
IHZhbHVlc1tpXS5maXJzdCk7CiAKICAgICBIZWFwOjpoZWFwKHRoaXMpLT5wb3BUZW1wU29ydFZl
Y3RvcigmdmFsdWVzKTsKICAgICAKQEAgLTExMDUsMTQgKzExMDcsMTQgQEAgdm9pZCBKU0FycmF5
Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxUeXBl
IGNhbGxUeXBlLAogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBhcnJheSwgaWdub3JpbmcgbWlz
c2luZyB2YWx1ZXMsIGNvdW50aW5nIHVuZGVmaW5lZCBvbmVzLCBhbmQgaW5zZXJ0aW5nIGFsbCBv
dGhlciBvbmVzIGludG8gdGhlIHRyZWUuCiAgICAgZm9yICg7IG51bURlZmluZWQgPCB1c2VkVmVj
dG9yTGVuZ3RoOyArK251bURlZmluZWQpIHsKLSAgICAgICAgSlNWYWx1ZSB2ID0gc3RvcmFnZS0+
bV92ZWN0b3JbbnVtRGVmaW5lZF07CisgICAgICAgIEpTVmFsdWUgdiA9IHN0b3JhZ2UtPm1fdmVj
dG9yW251bURlZmluZWRdLmdldCgpOwogICAgICAgICBpZiAoIXYgfHwgdi5pc1VuZGVmaW5lZCgp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNb
bnVtRGVmaW5lZF0udmFsdWUgPSB2OwogICAgICAgICB0cmVlLmluc2VydChudW1EZWZpbmVkKTsK
ICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRGVmaW5lZDsgaSA8IHVzZWRWZWN0b3JM
ZW5ndGg7ICsraSkgewotICAgICAgICBKU1ZhbHVlIHYgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsK
KyAgICAgICAgSlNWYWx1ZSB2ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV0uZ2V0KCk7CiAgICAgICAg
IGlmICh2KSB7CiAgICAgICAgICAgICBpZiAodi5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAg
ICAgICsrbnVtVW5kZWZpbmVkOwpAQCAtMTE0MCw3ICsxMTQyLDcgQEAgdm9pZCBKU0FycmF5Ojpz
b3J0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxUeXBlIGNh
bGxUeXBlLAogCiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1h
cC0+ZW5kKCk7CiAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQg
PSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgdHJlZS5hYnN0
cmFjdG9yKCkubV9ub2Rlc1tudW1EZWZpbmVkXS52YWx1ZSA9IGl0LT5zZWNvbmQ7CisgICAgICAg
ICAgICB0cmVlLmFic3RyYWN0b3IoKS5tX25vZGVzW251bURlZmluZWRdLnZhbHVlID0gaXQtPnNl
Y29uZC5nZXQoKTsKICAgICAgICAgICAgIHRyZWUuaW5zZXJ0KG51bURlZmluZWQpOwogICAgICAg
ICAgICAgKytudW1EZWZpbmVkOwogICAgICAgICB9CkBAIC0xMTU3LDE4ICsxMTU5LDE5IEBAIHZv
aWQgSlNBcnJheTo6c29ydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFyZUZ1bmN0aW9u
LCBDYWxsVHlwZSBjYWxsVHlwZSwKICAgICAvLyBDb3B5IHRoZSB2YWx1ZXMgYmFjayBpbnRvIG1f
c3RvcmFnZS4KICAgICBBVkxUcmVlPEFWTFRyZWVBYnN0cmFjdG9yRm9yQXJyYXlDb21wYXJlLCA0
ND46Okl0ZXJhdG9yIGl0ZXI7CiAgICAgaXRlci5zdGFydF9pdGVyX2xlYXN0KHRyZWUpOworICAg
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRGVmaW5lZDsgKytpKSB7Ci0gICAgICAgIHN0b3JhZ2Ut
Pm1fdmVjdG9yW2ldID0gdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rlc1sqaXRlcl0udmFsdWU7Cisg
ICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldChnbG9iYWxEYXRhLCB0aGlzLCB0cmVlLmFi
c3RyYWN0b3IoKS5tX25vZGVzWyppdGVyXS52YWx1ZSk7CiAgICAgICAgICsraXRlcjsKICAgICB9
CiAKICAgICAvLyBQdXQgdW5kZWZpbmVkIHZhbHVlcyBiYWNrIGluLgogICAgIGZvciAodW5zaWdu
ZWQgaSA9IG51bURlZmluZWQ7IGkgPCBuZXdVc2VkVmVjdG9yTGVuZ3RoOyArK2kpCi0gICAgICAg
IHN0b3JhZ2UtPm1fdmVjdG9yW2ldID0ganNVbmRlZmluZWQoKTsKKyAgICAgICAgc3RvcmFnZS0+
bV92ZWN0b3JbaV0uc2V0VW5kZWZpbmVkKCk7CiAKICAgICAvLyBFbnN1cmUgdGhhdCB1bnVzZWQg
dmFsdWVzIGluIHRoZSB2ZWN0b3IgYXJlIHplcm9lZCBvdXQuCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbmV3VXNlZFZlY3Rvckxlbmd0aDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsraSkKLSAgICAg
ICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0gPSBKU1ZhbHVlKCk7CisgICAgICAgIHN0b3JhZ2UtPm1f
dmVjdG9yW2ldLmNsZWFyKCk7CiAKICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yID0g
bmV3VXNlZFZlY3Rvckxlbmd0aDsKIApAQCAtMTE3OSwxNCArMTE4MiwxNCBAQCB2b2lkIEpTQXJy
YXk6OmZpbGxBcmdMaXN0KEV4ZWNTdGF0ZSogZXhlYywgTWFya2VkQXJndW1lbnRCdWZmZXImIGFy
Z3MpCiB7CiAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwogCi0gICAgSlNW
YWx1ZSogdmVjdG9yID0gc3RvcmFnZS0+bV92ZWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+KiB2ZWN0b3IgPSBzdG9yYWdlLT5tX3ZlY3RvcjsKICAgICB1bnNpZ25lZCB2ZWN0b3JFbmQg
PSBtaW4oc3RvcmFnZS0+bV9sZW5ndGgsIG1fdmVjdG9yTGVuZ3RoKTsKICAgICB1bnNpZ25lZCBp
ID0gMDsKICAgICBmb3IgKDsgaSA8IHZlY3RvckVuZDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUm
IHYgPSB2ZWN0b3JbaV07CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdiA9IHZlY3Rv
cltpXTsKICAgICAgICAgaWYgKCF2KQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGFyZ3Mu
YXBwZW5kKHYpOworICAgICAgICBhcmdzLmFwcGVuZCh2LmdldCgpKTsKICAgICB9CiAKICAgICBm
b3IgKDsgaSA8IHN0b3JhZ2UtPm1fbGVuZ3RoOyArK2kpCkBAIC0xMTk3LDE0ICsxMjAwLDE0IEBA
IHZvaWQgSlNBcnJheTo6Y29weVRvUmVnaXN0ZXJzKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIq
IGJ1ZmZlciwgdWludDMyX3QgbWF4U2l6CiB7CiAgICAgQVNTRVJUKG1fc3RvcmFnZS0+bV9sZW5n
dGggPj0gbWF4U2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFNKG1heFNpemUpOwotICAgIEpTVmFsdWUq
IHZlY3RvciA9IG1fc3RvcmFnZS0+bV92ZWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
KiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9yOwogICAgIHVuc2lnbmVkIHZlY3RvckVuZCA9
IG1pbihtYXhTaXplLCBtX3ZlY3Rvckxlbmd0aCk7CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAg
Zm9yICg7IGkgPCB2ZWN0b3JFbmQ7ICsraSkgewotICAgICAgICBKU1ZhbHVlJiB2ID0gdmVjdG9y
W2ldOworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHYgPSB2ZWN0b3JbaV07CiAgICAg
ICAgIGlmICghdikKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBidWZmZXJbaV0gPSB2Owor
ICAgICAgICBidWZmZXJbaV0gPSB2LmdldCgpOwogICAgIH0KIAogICAgIGZvciAoOyBpIDwgbWF4
U2l6ZTsgKytpKQpAQCAtMTIyMywxNyArMTIyNiwxOCBAQCB1bnNpZ25lZCBKU0FycmF5Ojpjb21w
YWN0Rm9yU29ydGluZygpCiAgICAgdW5zaWduZWQgbnVtVW5kZWZpbmVkID0gMDsKIAogICAgIGZv
ciAoOyBudW1EZWZpbmVkIDwgdXNlZFZlY3Rvckxlbmd0aDsgKytudW1EZWZpbmVkKSB7Ci0gICAg
ICAgIEpTVmFsdWUgdiA9IHN0b3JhZ2UtPm1fdmVjdG9yW251bURlZmluZWRdOworICAgICAgICBK
U1ZhbHVlIHYgPSBzdG9yYWdlLT5tX3ZlY3RvcltudW1EZWZpbmVkXS5nZXQoKTsKICAgICAgICAg
aWYgKCF2IHx8IHYuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KKwog
ICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7IGkgPCB1c2VkVmVjdG9yTGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgSlNWYWx1ZSB2ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CisgICAgICAg
IEpTVmFsdWUgdiA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldLmdldCgpOwogICAgICAgICBpZiAodikg
ewogICAgICAgICAgICAgaWYgKHYuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgICAgICArK251
bVVuZGVmaW5lZDsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzdG9yYWdlLT5t
X3ZlY3RvcltudW1EZWZpbmVkKytdID0gdjsKKyAgICAgICAgICAgICAgICBzdG9yYWdlLT5tX3Zl
Y3RvcltudW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTEyNTIsMTYgKzEyNTYsMTYgQEAgdW5zaWduZWQgSlNBcnJheTo6Y29tcGFj
dEZvclNvcnRpbmcoKQogCiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGVu
ZCA9IG1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0
b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIHN0b3Jh
Z2UtPm1fdmVjdG9yW251bURlZmluZWQrK10gPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgc3Rv
cmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGl0LT5z
ZWNvbmQuZ2V0KCkpOwogCiAgICAgICAgIGRlbGV0ZSBtYXA7CiAgICAgICAgIHN0b3JhZ2UtPm1f
c3BhcnNlVmFsdWVNYXAgPSAwOwogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9IG51bURl
ZmluZWQ7IGkgPCBuZXdVc2VkVmVjdG9yTGVuZ3RoOyArK2kpCi0gICAgICAgIHN0b3JhZ2UtPm1f
dmVjdG9yW2ldID0ganNVbmRlZmluZWQoKTsKKyAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0u
c2V0VW5kZWZpbmVkKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3VXNlZFZlY3Rvckxlbmd0
aDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsraSkKLSAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3Jb
aV0gPSBKU1ZhbHVlKCk7CisgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLmNsZWFyKCk7CiAK
ICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yID0gbmV3VXNlZFZlY3Rvckxlbmd0aDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IGRlMjhiNjViYjgz
ZGYxZTc0NzFjNjkyOTQ4YmZjZDM1N2NmYTQ5MTYuLmNjOWM5Mzk3Nzg5NGZiM2U3ZTg5MzFhNjg4
M2U4NGVkZWE1MGNiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
QEAgLTI3LDcgKzI3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICB0eXBlZGVmIEhhc2hN
YXA8dW5zaWduZWQsIEpTVmFsdWU+IFNwYXJzZUFycmF5VmFsdWVNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPHVuc2lnbmVkLCBXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBTcGFyc2VBcnJheVZhbHVl
TWFwOwogCiAgICAgLy8gVGhpcyBzdHJ1Y3QgaG9sZHMgdGhlIGFjdHVhbCBkYXRhIHZhbHVlcyBv
ZiBhbiBhcnJheS4gIEEgSlNBcnJheSBvYmplY3QgcG9pbnRzIHRvIGl0J3MgY29udGFpbmVkIEFy
cmF5U3RvcmFnZQogICAgIC8vIHN0cnVjdCBieSBwb2ludGluZyB0byBtX3ZlY3Rvci4gIFRvIGFj
Y2VzcyB0aGUgY29udGFpbmVkIEFycmF5U3RvcmFnZSBzdHJ1Y3QsIHVzZSB0aGUgZ2V0U3RvcmFn
ZSgpIGFuZCAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgQ0hFQ0tfQVJS
QVlfQ09OU0lTVEVOQ1kKICAgICAgICAgYm9vbCBtX2luQ29tcGFjdEluaXRpYWxpemF0aW9uOwog
I2VuZGlmCi0gICAgICAgIEpTVmFsdWUgbV92ZWN0b3JbMV07CisgICAgICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiBtX3ZlY3RvclsxXTsKICAgICB9OwogCiAgICAgLy8gVGhlIENyZWF0ZUNvbXBh
Y3QgY3JlYXRpb24gbW9kZSBpcyB1c2VkIGZvciBmYXN0IGNvbnN0cnVjdGlvbiBvZiBhcnJheXMK
QEAgLTY3LDcgKzY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgZXhwbGljaXQgSlNB
cnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAgSlNBcnJheShOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoLCBBcnJheUNy
ZWF0aW9uTW9kZSk7Ci0gICAgICAgIEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiwgY29uc3QgQXJnTGlzdCYgaW5pdGlhbFZhbHVlcyk7CisgICAgICAgIEpTQXJyYXkoSlNHbG9i
YWxEYXRhJiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgQXJnTGlzdCYgaW5p
dGlhbFZhbHVlcyk7CiAgICAgICAgIHZpcnR1YWwgfkpTQXJyYXkoKTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC05NCwzMiArOTQsMzIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgZ2V0SW5kZXgodW5zaWduZWQgaSkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKGNhbkdldEluZGV4KGkpKTsKLSAgICAgICAgICAgIHJldHVy
biBtX3N0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgICAgICAgICAgcmV0dXJuIG1fc3RvcmFnZS0+
bV92ZWN0b3JbaV0uZ2V0KCk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGNhblNldEluZGV4
KHVuc2lnbmVkIGkpIHsgcmV0dXJuIGkgPCBtX3ZlY3Rvckxlbmd0aDsgfQotICAgICAgICB2b2lk
IHNldEluZGV4KHVuc2lnbmVkIGksIEpTVmFsdWUgdikKKyAgICAgICAgdm9pZCBzZXRJbmRleChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKGNhblNldEluZGV4KGkpKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgSlNWYWx1ZSYgeCA9IG1fc3RvcmFnZS0+bV92ZWN0b3JbaV07CisgICAgICAgICAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHggPSBtX3N0b3JhZ2UtPm1fdmVjdG9yW2ldOwogICAg
ICAgICAgICAgaWYgKCF4KSB7CiAgICAgICAgICAgICAgICAgQXJyYXlTdG9yYWdlICpzdG9yYWdl
ID0gbV9zdG9yYWdlOwogICAgICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZl
Y3RvcjsKICAgICAgICAgICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5tX2xlbmd0aCkKICAgICAg
ICAgICAgICAgICAgICAgc3RvcmFnZS0+bV9sZW5ndGggPSBpICsgMTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHggPSB2OworICAgICAgICAgICAgeC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywg
dik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgdW5jaGVja2VkU2V0SW5kZXgo
dW5zaWduZWQgaSwgSlNWYWx1ZSB2KQorICAgICAgICB2b2lkIHVuY2hlY2tlZFNldEluZGV4KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgICAgICB7
CiAgICAgICAgICAgICBBU1NFUlQoY2FuU2V0SW5kZXgoaSkpOwogICAgICAgICAgICAgQXJyYXlT
dG9yYWdlICpzdG9yYWdlID0gbV9zdG9yYWdlOwogI2lmIENIRUNLX0FSUkFZX0NPTlNJU1RFTkNZ
CiAgICAgICAgICAgICBBU1NFUlQoc3RvcmFnZS0+bV9pbkNvbXBhY3RJbml0aWFsaXphdGlvbik7
CiAjZW5kaWYKLSAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldID0gdjsKKyAgICAgICAg
ICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2KTsKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiwgTWFya2VkQXJndW1l
bnRCdWZmZXImKTsKQEAgLTE4OSwxMiArMTg5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBtX3N0b3JhZ2U7CiAKICAgICAgICAgdW5zaWduZWQg
dXNlZFZlY3Rvckxlbmd0aCA9IHN0ZDo6bWluKHN0b3JhZ2UtPm1fbGVuZ3RoLCBtX3ZlY3Rvckxl
bmd0aCk7Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoc3RvcmFnZS0+bV92ZWN0b3Is
IHVzZWRWZWN0b3JMZW5ndGgsIE1heUNvbnRhaW5OdWxsVmFsdWVzKTsKKyAgICAgICAgbWFya1N0
YWNrLmFwcGVuZFZhbHVlcyhzdG9yYWdlLT5tX3ZlY3RvclswXS5zbG90KCksIHVzZWRWZWN0b3JM
ZW5ndGgsIE1heUNvbnRhaW5OdWxsVmFsdWVzKTsKIAogICAgICAgICBpZiAoU3BhcnNlQXJyYXlW
YWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCkgewogICAgICAgICAgICAg
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLT5lbmQoKTsKICAgICAgICAg
ICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKGl0LT5z
ZWNvbmQpOworICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJml0LT5zZWNvbmQpOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5
dGVBcnJheS5jcHAKaW5kZXggNmFmOWQ3NWYxMzRlYjk1OWZjMGI3OTg4YzRkMmVlN2NiOGNkMWM5
Yy4uM2Y3ZDgwNmFjOGM3YjM2NDhiYzFjMmZmZThjNzMyN2E3MTUwNTE0YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcApAQCAtNDAsNyArNDAsNyBA
QCBKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZQogICAgICwgbV9zdG9yYWdlKHN0b3JhZ2UpCiAgICAg
LCBtX2NsYXNzSW5mbyhjbGFzc0luZm8pCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKG1fc3RvcmFnZS0+bGVuZ3RoKCkp
LCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKG1f
c3RvcmFnZS0+bGVuZ3RoKCkpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogfQogCiAjaWYgIUFT
U0VSVF9ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBm
N2U4ODEwNTEyYzI5MzkyMjVmYzJiM2YxYmNlMDBhZDZhZDc5OGZmLi4yMjgzMjIyMjRlMTNlMGYx
NWJmM2NjZmI2NzJjMzJkYjg1YWZkNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaApAQCAtMzM2LDggKzMzNiwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAg
ICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT50b1RoaXNPYmplY3QoZXhlYykgOiB0b1Ro
aXNPYmplY3RTbG93Q2FzZShleGVjKTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHZvaWQgTWFya1N0YWNrOjphcHBlbmQoRGVwcmVjYXRlZFB0cjxUPiogc2xvdCkKKyAg
ICB7CisgICAgICAgIGludGVybmFsQXBwZW5kKHNsb3QtPmdldCgpKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgTWFya1N0YWNrOjphcHBlbmQoV3JpdGVCYXJy
aWVyQmFzZTxUPiogc2xvdCkKKyAgICB7CisgICAgICAgIGludGVybmFsQXBwZW5kKHNsb3QtPmdl
dCgpKTsKKyAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBlbmQo
SlNDZWxsKiBjZWxsKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBNYXJrU3RhY2s6OmludGVybmFs
QXBwZW5kKEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9pc0NoZWNraW5n
Rm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOwogICAgICAgICBBU1NFUlQoY2VsbCk7CkBAIC0zNDcs
MTEgKzM1NywyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVu
ZChjZWxsKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBl
bmQoSlNWYWx1ZSB2YWx1ZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjpkZXBy
ZWNhdGVkQXBwZW5kKEpTQ2VsbCoqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVl
KTsKKyAgICAgICAgaW50ZXJuYWxBcHBlbmQoKnZhbHVlKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgTWFya1N0YWNrOjpkZXByZWNhdGVkQXBwZW5kKEpTVmFsdWUqIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgaW50ZXJuYWxBcHBlbmQoKnZh
bHVlKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjppbnRlcm5h
bEFwcGVuZChKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAg
ICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQotICAgICAgICAgICAgYXBwZW5kKHZhbHVlLmFzQ2Vs
bCgpKTsKKyAgICAgICAgICAgIGludGVybmFsQXBwZW5kKHZhbHVlLmFzQ2VsbCgpKTsKICAgICB9
CiAKICAgICBpbmxpbmUgSGVhcCogSGVhcDo6aGVhcChKU1ZhbHVlIHYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDk5ZjhlNmY5NTNhZTc3Mzll
ZDA0YjE1YTNhM2ZiNWE1ZmQxNTA3OGQuLjRmZjU5ZTM5ZmVkMzVlMzJhMGUyZjUzNzk4Y2Y4YWIy
NjIyYTJjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCkBAIC03MSw4ICs3MSw4IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzCiAgICAgLCBtX2V4
ZWN1dGFibGUodGh1bmspCiAgICAgLCBtX3Njb3BlQ2hhaW4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxT
Y29wZUNoYWluKCkpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVz
dHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBwdXREaXJl
Y3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhl
eGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAjZW5kaWYKIApAQCAtODMsOSArODMsOSBAQCBK
U0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTm9uTnVsbFBhcwogI2VuZGlmCiAgICAgLCBtX3Njb3BlQ2hhaW4oZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgp
ID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCku
cHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDog
bmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
anNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAg
IHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7CiAgICAgVU5VU0VEX1BBUkFNKGZ1bmMp
OwpAQCAtOTksNyArOTksNyBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgTm9uTnVsbFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBleAogICAgICwgbV9zY29w
ZUNoYWluKHNjb3BlQ2hhaW5Ob2RlKQogewogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5uYW1l
KCk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJp
bmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIEpTRnVuY3Rpb246On5KU0Z1bmN0aW9uKCkK
QEAgLTIwNyw4ICsyMDcsOCBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TgogCiAgICAgICAgIGlm
ICghbG9jYXRpb24pIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBuZXcgKGV4
ZWMpIEpTT2JqZWN0KHNjb3BlKCkuZ2xvYmFsT2JqZWN0KCktPmVtcHR5T2JqZWN0U3RydWN0dXJl
KCkpOwotICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmNvbnN0cnVjdG9yLCB0aGlzLCBEb250RW51bSk7Ci0gICAgICAgICAgICBwdXREaXJlY3Qo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwg
RG9udEVudW0pOworICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRoaXMsIERvbnRFbnVt
KTsKKyAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsK
ICAgICAgICAgICAgIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oCmluZGV4IDMxZjQxZTljNDI1ZWMxODU2NTQxOGZkOGU3N2QxOTkwMGE3MWMyYTMuLmU4NDY5
ZGRhYmIyOGRjOTNjN2M4MTg2Y2YwMDVmNmFjZTZmMWQwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFRlcm1pbmF0b3IgdGVybWluYXRvcjsKICAgICAgICAgSGVhcCBo
ZWFwOwogCi0gICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOworICAgICAgICBEZXByZWNhdGVkUHRy
PFVua25vd24+IGV4Y2VwdGlvbjsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRy
ZXNzUHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOWI2N2RiYjczNGY1MGZhMjkw
MTJmNzZkN2RlNDI5NTM1NWY2MmI2Yy4uNDM2OGMxYzA5NGNiYWM3YjhiZDQ4OGE4ODgxYjZiNGM0
N2E4ZGRlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtODAsMTYgKzgwLDE2IEBAIHN0YXRpYyBjb25zdCBpbnQgaW5pdGlhbFRp
Y2tDb3VudFRocmVzaG9sZCA9IDI1NTsKIC8vIFByZWZlcnJlZCBudW1iZXIgb2YgbWlsbGlzZWNv
bmRzIGJldHdlZW4gZWFjaCB0aW1lb3V0IGNoZWNrCiBzdGF0aWMgY29uc3QgaW50IHByZWZlcnJl
ZFNjcmlwdENoZWNrVGltZUludGVydmFsID0gMTAwMDsKIAotc3RhdGljIGlubGluZSB2b2lkIG1h
cmtJZk5lZWRlZChNYXJrU3RhY2smIG1hcmtTdGFjaywgSlNWYWx1ZSB2KQordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrSWZOZWVkZWQoTWFya1N0YWNrJiBtYXJr
U3RhY2ssIFdyaXRlQmFycmllcjxUPiogdikKIHsKLSAgICBpZiAodikKKyAgICBpZiAoKnYpCiAg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQodik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJr
SWZOZWVkZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIGNvbnN0IFJlZlB0cjxTdHJ1Y3R1cmU+JiBz
KQogewotICAgIGlmIChzKQotICAgICAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBzLT5zdG9y
ZWRQcm90b3R5cGUoKSk7CisgICAgaWYgKHMgJiYgcy0+c3RvcmVkUHJvdG90eXBlKCkpCisgICAg
ICAgIG1hcmtTdGFjay5hcHBlbmQocy0+c3RvcmVkUHJvdG90eXBlU2xvdCgpKTsKIH0KIAogSlNH
bG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCgpCkBAIC0yMDIsMTE3ICsyMDIsMTE3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogCiAgICAgLy8gUHJv
dG90eXBlcwogCi0gICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZSA9IG5ldyAoZXhlYykgRnVuY3Rp
b25Qcm90b3R5cGUoZXhlYywgdGhpcywgRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShqc051bGwoKSkpOyAvLyBUaGUgcmVhbCBwcm90b3R5cGUgd2lsbCBiZSBzZXQgb25jZSBPYmpl
Y3RQcm90b3R5cGUgaXMgY3JlYXRlZC4KLSAgICBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlID0gUHJvdG90eXBlRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJv
dG90eXBlKTsKLSAgICBkKCktPmludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7CisgICAgZCgp
LT5mdW5jdGlvblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4
ZWMpIEZ1bmN0aW9uUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEZ1bmN0aW9uUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoanNOdWxsKCkpKSk7IC8vIFRoZSByZWFsIHByb3RvdHlwZSB3aWxsIGJlIHNl
dCBvbmNlIE9iamVjdFByb3RvdHlwZSBpcyBjcmVhdGVkLgorICAgIGQoKS0+cHJvdG90eXBlRnVu
Y3Rpb25TdHJ1Y3R1cmUgPSBQcm90b3R5cGVGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIGQoKS0+aW50ZXJuYWxGdW5jdGlvblN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJv
dG90eXBlLmdldCgpKTsKICAgICBOYXRpdmVGdW5jdGlvbldyYXBwZXIqIGNhbGxGdW5jdGlvbiA9
IDA7CiAgICAgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKiBhcHBseUZ1bmN0aW9uID0gMDsKICAgICBk
KCktPmZ1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblByb3BlcnRpZXMoZXhlYywgdGhpcywg
ZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgJmNhbGxGdW5jdGlvbiwgJmFw
cGx5RnVuY3Rpb24pOwotICAgIGQoKS0+Y2FsbEZ1bmN0aW9uID0gY2FsbEZ1bmN0aW9uOwotICAg
IGQoKS0+YXBwbHlGdW5jdGlvbiA9IGFwcGx5RnVuY3Rpb247Ci0gICAgZCgpLT5vYmplY3RQcm90
b3R5cGUgPSBuZXcgKGV4ZWMpIE9iamVjdFByb3RvdHlwZShleGVjLCB0aGlzLCBPYmplY3RQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCkpOwotICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgp
LT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihkKCktPm9iamVjdFByb3RvdHlwZSk7Cisg
ICAgZCgpLT5jYWxsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY2FsbEZ1
bmN0aW9uKTsKKyAgICBkKCktPmFwcGx5RnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgYXBwbHlGdW5jdGlvbik7CisgICAgZCgpLT5vYmplY3RQcm90b3R5cGUuc2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBPYmplY3RQcm90b3R5cGUoZXhlYywgdGhp
cywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpLCBkKCktPnByb3Rv
dHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7CisgICAgZCgpLT5mdW5jdGlvblByb3RvdHlw
ZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKGQoKS0+b2JqZWN0
UHJvdG90eXBlLmdldCgpKTsKIAogICAgIGQoKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUgPSBkKCkt
Pm9iamVjdFByb3RvdHlwZS0+aW5oZXJpdG9ySUQoKTsKIAotICAgIGQoKS0+ZnVuY3Rpb25TdHJ1
Y3R1cmUgPSBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlw
ZSk7Ci0gICAgZCgpLT5jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlID0gSlNDYWxsYmFja0Z1bmN0
aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgZCgpLT5h
cmd1bWVudHNTdHJ1Y3R1cmUgPSBBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVj
dFByb3RvdHlwZSk7Ci0gICAgZCgpLT5jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlID0gSlND
YWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUp
OwotICAgIGQoKS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrT2JqZWN0PEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3Rv
dHlwZSk7CisgICAgZCgpLT5mdW5jdGlvblN0cnVjdHVyZSA9IEpTRnVuY3Rpb246OmNyZWF0ZVN0
cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPmNhbGxiYWNr
RnVuY3Rpb25TdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShk
KCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPmFyZ3VtZW50c1N0cnVjdHVy
ZSA9IEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgp
KTsKKyAgICBkKCktPmNhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgZCgpLT5jYWxsYmFja09iamVjdFN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBl
LmdldCgpKTsKIAotICAgIGQoKS0+YXJyYXlQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEFycmF5UHJv
dG90eXBlKHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQ
cm90b3R5cGUpKTsKLSAgICBkKCktPmFycmF5U3RydWN0dXJlID0gSlNBcnJheTo6Y3JlYXRlU3Ry
dWN0dXJlKGQoKS0+YXJyYXlQcm90b3R5cGUpOwotICAgIGQoKS0+cmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlID0gUmVnRXhwTWF0Y2hlc0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5hcnJh
eVByb3RvdHlwZSk7CisgICAgZCgpLT5hcnJheVByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEFycmF5UHJvdG90eXBlKHRoaXMsIEFycmF5UHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgZCgp
LT5hcnJheVN0cnVjdHVyZSA9IEpTQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmFycmF5UHJv
dG90eXBlLmdldCgpKTsKKyAgICBkKCktPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSA9IFJl
Z0V4cE1hdGNoZXNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+YXJyYXlQcm90b3R5cGUuZ2V0
KCkpOwogCi0gICAgZCgpLT5zdHJpbmdQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIFN0cmluZ1Byb3Rv
dHlwZShleGVjLCB0aGlzLCBTdHJpbmdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9i
amVjdFByb3RvdHlwZSkpOwotICAgIGQoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlID0gU3RyaW5n
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5zdHJpbmdQcm90b3R5cGUpOworICAgIGQoKS0+
c3RyaW5nUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykg
U3RyaW5nUHJvdG90eXBlKGV4ZWMsIHRoaXMsIFN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOworICAgIGQoKS0+c3RyaW5nT2JqZWN0
U3RydWN0dXJlID0gU3RyaW5nT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5zdHJpbmdQcm90
b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5ib29sZWFuUHJvdG90eXBlID0gbmV3IChleGVjKSBC
b29sZWFuUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEJvb2xlYW5Qcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZShkKCktPm9iamVjdFByb3RvdHlwZSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCkpOwotICAgIGQoKS0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSA9IEJvb2xlYW5PYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmJvb2xlYW5Qcm90b3R5cGUpOworICAgIGQoKS0+Ym9v
bGVhblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEJv
b2xlYW5Qcm90b3R5cGUoZXhlYywgdGhpcywgQm9vbGVhblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0
cnVjdHVyZS5nZXQoKSkpOworICAgIGQoKS0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSA9IEJvb2xl
YW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmJvb2xlYW5Qcm90b3R5cGUuZ2V0KCkpOwog
Ci0gICAgZCgpLT5udW1iZXJQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE51bWJlclByb3RvdHlwZShl
eGVjLCB0aGlzLCBOdW1iZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFBy
b3RvdHlwZSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIGQo
KS0+bnVtYmVyT2JqZWN0U3RydWN0dXJlID0gTnVtYmVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5udW1iZXJQcm90b3R5cGUpOworICAgIGQoKS0+bnVtYmVyUHJvdG90eXBlLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTnVtYmVyUHJvdG90eXBlKGV4ZWMsIHRo
aXMsIE51bWJlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBl
LmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOworICAgIGQo
KS0+bnVtYmVyT2JqZWN0U3RydWN0dXJlID0gTnVtYmVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5udW1iZXJQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5kYXRlUHJvdG90eXBlID0g
bmV3IChleGVjKSBEYXRlUHJvdG90eXBlKGV4ZWMsIHRoaXMsIERhdGVQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSkpOwotICAgIGQoKS0+ZGF0ZVN0cnVjdHVy
ZSA9IERhdGVJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZGF0ZVByb3RvdHlwZSk7Cisg
ICAgZCgpLT5kYXRlUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAo
ZXhlYykgRGF0ZVByb3RvdHlwZShleGVjLCB0aGlzLCBEYXRlUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgZCgpLT5kYXRlU3RydWN0
dXJlID0gRGF0ZUluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5kYXRlUHJvdG90eXBlLmdl
dCgpKTsKIAotICAgIGQoKS0+cmVnRXhwUHJvdG90eXBlID0gbmV3IChleGVjKSBSZWdFeHBQcm90
b3R5cGUoZXhlYywgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5v
YmplY3RQcm90b3R5cGUpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsK
LSAgICBkKCktPnJlZ0V4cFN0cnVjdHVyZSA9IFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KGQoKS0+cmVnRXhwUHJvdG90eXBlKTsKKyAgICBkKCktPnJlZ0V4cFByb3RvdHlwZS5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJlZ0V4cFByb3RvdHlwZShleGVjLCB0
aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlw
ZS5nZXQoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICBk
KCktPnJlZ0V4cFN0cnVjdHVyZSA9IFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+
cmVnRXhwUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQoKS0+bWV0aG9kQ2FsbER1bW15ID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgZCgpLT5tZXRob2RDYWxsRHVtbXkuc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykpOwogCi0g
ICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBFcnJvclByb3Rv
dHlwZShleGVjLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2Jq
ZWN0UHJvdG90eXBlKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7Cisg
ICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBFcnJvclByb3Rv
dHlwZShleGVjLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2Jq
ZWN0UHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQo
KSk7CiAgICAgZCgpLT5lcnJvclN0cnVjdHVyZSA9IEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVj
dHVyZShlcnJvclByb3RvdHlwZSk7CiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpTQ2Vs
bCogb2JqZWN0Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE9iamVjdENvbnN0cnVjdG9yKGV4ZWMs
IHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblBy
b3RvdHlwZSksIGQoKS0+b2JqZWN0UHJvdG90eXBlLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpKTsKLSAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBuZXcgKGV4
ZWMpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgdGhpcywgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPmZ1bmN0aW9uUHJv
dG90eXBlKTsKLSAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEFycmF5
Q29uc3RydWN0b3IoZXhlYywgdGhpcywgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPmFycmF5UHJvdG90eXBlLCBkKCktPnByb3Rv
dHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKLSAgICBKU0NlbGwqIHN0cmluZ0NvbnN0cnVj
dG9yID0gbmV3IChleGVjKSBTdHJpbmdDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBTdHJpbmdDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPnBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCBkKCktPnN0cmluZ1Byb3RvdHlwZSk7Ci0g
ICAgSlNDZWxsKiBib29sZWFuQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEJvb2xlYW5Db25zdHJ1
Y3RvcihleGVjLCB0aGlzLCBCb29sZWFuQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCkt
PmZ1bmN0aW9uUHJvdG90eXBlKSwgZCgpLT5ib29sZWFuUHJvdG90eXBlKTsKLSAgICBKU0NlbGwq
IG51bWJlckNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBOdW1iZXJDb25zdHJ1Y3RvcihleGVjLCB0
aGlzLCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90
b3R5cGUpLCBkKCktPm51bWJlclByb3RvdHlwZSk7Ci0gICAgSlNDZWxsKiBkYXRlQ29uc3RydWN0
b3IgPSBuZXcgKGV4ZWMpIERhdGVDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBEYXRlQ29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKSwgZCgpLT5wcm90b3R5
cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgZCgpLT5kYXRlUHJvdG90eXBlKTsKKyAgICBKU0Nl
bGwqIG9iamVjdENvbnN0cnVjdG9yID0gbmV3IChleGVjKSBPYmplY3RDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSwgZCgpLT5wcm90b3R5
cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7CisgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVj
dG9yID0gbmV3IChleGVjKSBGdW5jdGlvbkNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEZ1bmN0aW9u
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBhcnJheUNvbnN0
cnVjdG9yID0gbmV3IChleGVjKSBBcnJheUNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEFycmF5Q29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
ZCgpLT5hcnJheVByb3RvdHlwZS5nZXQoKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKSk7CisgICAgSlNDZWxsKiBzdHJpbmdDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgU3Ry
aW5nQ29uc3RydWN0b3IoZXhlYywgdGhpcywgU3RyaW5nQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSwgZCgpLT5zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOworICAgIEpTQ2Vs
bCogYm9vbGVhbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBCb29sZWFuQ29uc3RydWN0b3IoZXhl
YywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5nZXQoKSk7CisgICAgSlND
ZWxsKiBudW1iZXJDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTnVtYmVyQ29uc3RydWN0b3IoZXhl
YywgdGhpcywgTnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgZCgpLT5udW1iZXJQcm90b3R5cGUuZ2V0KCkpOworICAgIEpTQ2Vs
bCogZGF0ZUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBEYXRlQ29uc3RydWN0b3IoZXhlYywgdGhp
cywgRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIGQoKS0+ZGF0
ZVByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICBkKCktPnJlZ0V4cENvbnN0cnVjdG9yID0gbmV3IChl
eGVjKSBSZWdFeHBDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPnJlZ0V4cFByb3RvdHlw
ZSk7CisgICAgZCgpLT5yZWdFeHBDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBuZXcgKGV4ZWMpIFJlZ0V4cENvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIFJlZ0V4cENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQo
KS0+cmVnRXhwUHJvdG90eXBlLmdldCgpKSk7CiAKLSAgICBkKCktPmVycm9yQ29uc3RydWN0b3Ig
PSBuZXcgKGV4ZWMpIEVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgRXJyb3JDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBlcnJvclByb3RvdHlw
ZSk7CisgICAgZCgpLT5lcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIG5ldyAoZXhlYykgRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBFcnJvckNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGVycm9y
UHJvdG90eXBlKSk7CiAKICAgICBSZWZQdHI8U3RydWN0dXJlPiBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXJyb3JQ
cm90b3R5cGUpOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5hdGl2ZUVycm9yU3RydWN0dXJlID0g
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90
b3R5cGUpOwotICAgIGQoKS0+ZXZhbEVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2
ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiRXZhbEVycm9yIik7Ci0gICAgZCgpLT5yYW5nZUVy
cm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywg
dGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJl
LCAiUmFuZ2VFcnJvciIpOwotICAgIGQoKS0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvciA9IG5l
dyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0
cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIp
OwotICAgIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJy
b3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJTeW50YXhFcnJvciIpOwotICAgIGQoKS0+dHlwZUVycm9y
Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhp
cywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAi
VHlwZUVycm9yIik7Ci0gICAgZCgpLT5VUklFcnJvckNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBu
YXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVycm9yIik7Ci0KLSAgICBkKCktPm9i
amVjdFByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7
Ci0gICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKLSAgICBkKCktPmFycmF5UHJvdG90eXBlLT5wdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
YXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIGQoKS0+Ym9vbGVhblByb3RvdHlwZS0+
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIGJvb2xlYW5Db25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIGQoKS0+c3Ry
aW5nUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
LSAgICBkKCktPm51bWJlclByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG51bWJlckNvbnN0cnVjdG9y
LCBEb250RW51bSk7Ci0gICAgZCgpLT5kYXRlUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZGF0ZUNv
bnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5yZWdFeHBQcm90b3R5cGUtPnB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCBkKCktPnJlZ0V4cENvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZXJyb3JQcm90b3R5
cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1l
cygpLmNvbnN0cnVjdG9yLCBkKCktPmVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBS
ZWZQdHI8U3RydWN0dXJlPiBuYXRpdmVFcnJvclN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAg
ICBkKCktPmV2YWxFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJv
clN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJFdmFsRXJyb3IiKSk7
CisgICAgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2
ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJhbmdlRXJy
b3IiKSk7CisgICAgZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0
aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUs
ICJSZWZlcmVuY2VFcnJvciIpKTsKKyAgICBkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSwgIlN5bnRheEVycm9yIikpOworICAgIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0
b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclBy
b3RvdHlwZVN0cnVjdHVyZSwgIlR5cGVFcnJvciIpKTsKKyAgICBkKCktPlVSSUVycm9yQ29uc3Ry
dWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJv
clByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVycm9yIikpOworCisgICAgZCgpLT5vYmplY3RQcm90
b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9y
LCBEb250RW51bSk7CisgICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIGQo
KS0+YXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGFycmF5
Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBkKCktPmJvb2xlYW5Qcm90b3R5cGUtPnB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGJvb2xlYW5Db25zdHJ1Y3RvciwgRG9udEVudW0p
OworICAgIGQoKS0+c3RyaW5nUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCBzdHJpbmdDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIGQoKS0+bnVtYmVyUHJvdG90
eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBudW1iZXJDb25zdHJ1Y3Rvciwg
RG9udEVudW0pOworICAgIGQoKS0+ZGF0ZVByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3RvciwgZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgZCgpLT5yZWdFeHBQ
cm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGQoKS0+cmVnRXhwQ29u
c3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBlcnJvclByb3RvdHlwZS0+cHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZCgpLT5lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250
RW51bSk7CiAKICAgICAvLyBTZXQgZ2xvYmFsIGNvbnN0cnVjdG9ycwogCiAgICAgLy8gRklYTUU6
IFRoZXNlIHByb3BlcnRpZXMgY291bGQgYmUgaGFuZGxlZCBieSBhIHN0YXRpYyBoYXNoIHRhYmxl
LgogCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4
ZWMsICJPYmplY3QiKSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkZ1bmN0aW9uIiks
IGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkFycmF5IiksIGFycmF5Q29uc3RydWN0
b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElk
ZW50aWZpZXIoZXhlYywgIkJvb2xlYW4iKSwgYm9vbGVhbkNvbnN0cnVjdG9yLCBEb250RW51bSk7
Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMs
ICJTdHJpbmciKSwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIk51bWJlciIpLCBudW1i
ZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiRGF0ZSIpLCBkYXRlQ29uc3RydWN0b3IsIERvbnRF
bnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIo
ZXhlYywgIlJlZ0V4cCIpLCBkKCktPnJlZ0V4cENvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJFcnJv
ciIpLCBkKCktPmVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkV2YWxFcnJvciIpLCBkKCkt
PmV2YWxFcnJvckNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJSYW5nZUVycm9yIiksIGQoKS0+cmFu
Z2VFcnJvckNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJSZWZlcmVuY2VFcnJvciIpLCBkKCktPnJl
ZmVyZW5jZUVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlN5bnRheEVycm9yIiksIGQoKS0+
c3ludGF4RXJyb3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiVHlwZUVycm9yIiksIGQoKS0+dHlw
ZUVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlVSSUVycm9yIiksIGQoKS0+VVJJRXJyb3JD
b25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSwgb2Jq
ZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRnVuY3Rpb24i
KSwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJB
cnJheSIpLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywg
IkJvb2xlYW4iKSwgYm9vbGVhbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
ZXhlYywgIlN0cmluZyIpLCBzdHJpbmdDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJOdW1iZXIiKSwgbnVtYmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCAiRGF0ZSIpLCBkYXRlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCAiUmVnRXhwIiksIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRXJyb3IiKSwgZCgpLT5lcnJvckNvbnN0cnVj
dG9yLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkV2YWxFcnJvciIpLCBk
KCktPmV2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
ZXhlYywgIlJhbmdlRXJyb3IiKSwgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVmZXJlbmNlRXJyb3IiKSwgZCgpLT5yZWZl
cmVuY2VFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgIlN5bnRheEVycm9yIiksIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJUeXBlRXJyb3IiKSwgZCgpLT50eXBlRXJyb3JD
b25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJVUklFcnJv
ciIpLCBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKIAogICAgIC8v
IFNldCBnbG9iYWwgdmFsdWVzLgogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxz
W10gPSB7Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJNYXRo
IiksIG5ldyAoZXhlYykgTWF0aE9iamVjdChleGVjLCB0aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpKSwgRG9udEVudW0gfCBEb250RGVsZXRlKSwK
KyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIk1hdGgiKSwgbmV3
IChleGVjKSBNYXRoT2JqZWN0KGV4ZWMsIHRoaXMsIE1hdGhPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSB8IERvbnREZWxldGUpLAog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihleGVjLCAiTmFOIiksIGpzTmFO
KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIkluZmluaXR5IiksIGpzTnVtYmVyKEluZiksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKElkZW50aWZpZXIoZXhlYywgInVuZGVmaW5lZCIpLCBqc1VuZGVmaW5lZCgpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJ
ZGVudGlmaWVyKGV4ZWMsICJKU09OIiksIG5ldyAoZXhlYykgSlNPTk9iamVjdCh0aGlzLCBKU09O
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpKSwgRG9udEVudW0g
fCBEb250RGVsZXRlKQorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihleGVj
LCAiSlNPTiIpLCBuZXcgKGV4ZWMpIEpTT05PYmplY3QodGhpcywgSlNPTk9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSkKICAgICB9OwogCiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZf
QVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKIAogICAgIC8vIFNldCBnbG9iYWwgZnVuY3Rp
b25zLgogCi0gICAgZCgpLT5ldmFsRnVuY3Rpb24gPSBuZXcgKGV4ZWMpIEdsb2JhbEV2YWxGdW5j
dGlvbihleGVjLCB0aGlzLCBHbG9iYWxFdmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCkt
PmZ1bmN0aW9uUHJvdG90eXBlKSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwsIGdsb2Jh
bEZ1bmNFdmFsLCB0aGlzKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIGQoKS0+ZXZhbEZ1bmN0aW9uLCBEb250RW51bSk7CisgICAgZCgpLT5ldmFsRnVuY3Rp
b24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBHbG9iYWxFdmFsRnVu
Y3Rpb24oZXhlYywgdGhpcywgR2xvYmFsRXZhbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgp
LT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFs
LCBnbG9iYWxGdW5jRXZhbCwgdGhpcykpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgZCgpLT5ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZl
RnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCksIDIsIElkZW50aWZpZXIoZXhlYywgInBhcnNlSW50IiksIGdsb2JhbEZ1bmNQYXJz
ZUludCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHRoaXMsIGQoKS0+
cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgInBh
cnNlRmxvYXQiKSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQpLCBEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0
aW9uV3JhcHBlcihleGVjLCB0aGlzLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdl
dCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJpc05hTiIpLCBnbG9iYWxGdW5jSXNOYU4pLCBEb250
RW51bSk7CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90
b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgc2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CiAK
ICAgICBKU09iamVjdCogb2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gPSBsYXN0SW5Qcm90b3R5cGVD
aGFpbih0aGlzKTsKLSAgICBKU09iamVjdCogb2JqZWN0UHJvdG90eXBlID0gZCgpLT5vYmplY3RQ
cm90b3R5cGU7CisgICAgSlNPYmplY3QqIG9iamVjdFByb3RvdHlwZSA9IGQoKS0+b2JqZWN0UHJv
dG90eXBlLmdldCgpOwogICAgIGlmIChvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbiAhPSBvYmplY3RQ
cm90b3R5cGUpCiAgICAgICAgIG9sZExhc3RJblByb3RvdHlwZUNoYWluLT5zZXRQcm90b3R5cGUo
b2JqZWN0UHJvdG90eXBlKTsKIH0KQEAgLTM0OSwyOSArMzQ5LDI5IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKICAgICBmb3IgKEhhc2hT
ZXQ8R2xvYmFsQ29kZUJsb2NrKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29kZUJsb2NrcygpLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgKCppdCktPm1hcmtBZ2dyZWdhdGUobWFy
a1N0YWNrKTsKIAotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+cmVnRXhwQ29uc3Ry
dWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZXJyb3JDb25zdHJ1Y3Rv
cik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5ldmFsRXJyb3JDb25zdHJ1Y3Rv
cik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0
b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+cmVmZXJlbmNlRXJyb3JDb25z
dHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5zeW50YXhFcnJvckNv
bnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPnR5cGVFcnJvckNv
bnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPlVSSUVycm9yQ29u
c3RydWN0b3IpOwotCi0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5ldmFsRnVuY3Rp
b24pOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+Y2FsbEZ1bmN0aW9uKTsKLSAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPmFwcGx5RnVuY3Rpb24pOwotCi0gICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5vYmplY3RQcm90b3R5cGUpOwotICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssIGQoKS0+YXJyYXlQcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssIGQoKS0+Ym9vbGVhblByb3RvdHlwZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgZCgpLT5zdHJpbmdQcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQo
KS0+bnVtYmVyUHJvdG90eXBlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPmRh
dGVQcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+cmVnRXhwUHJv
dG90eXBlKTsKLQotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+bWV0aG9kQ2FsbER1
bW15KTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5yZWdFeHBDb25zdHJ1Y3Rv
cik7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+ZXJyb3JDb25zdHJ1Y3Rvcik7
CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+ZXZhbEVycm9yQ29uc3RydWN0b3Ip
OworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPnJhbmdlRXJyb3JDb25zdHJ1Y3Rv
cik7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+cmVmZXJlbmNlRXJyb3JDb25z
dHJ1Y3Rvcik7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+c3ludGF4RXJyb3JD
b25zdHJ1Y3Rvcik7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+dHlwZUVycm9y
Q29uc3RydWN0b3IpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPlVSSUVycm9y
Q29uc3RydWN0b3IpOworCisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+ZXZhbEZ1
bmN0aW9uKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5jYWxsRnVuY3Rpb24p
OworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPmFwcGx5RnVuY3Rpb24pOworCisg
ICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+b2JqZWN0UHJvdG90eXBlKTsKKyAgICBt
YXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7CisgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+YXJyYXlQcm90b3R5cGUpOworICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssICZkKCktPmJvb2xlYW5Qcm90b3R5cGUpOworICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssICZkKCktPnN0cmluZ1Byb3RvdHlwZSk7CisgICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgJmQoKS0+bnVtYmVyUHJvdG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCAmZCgpLT5kYXRlUHJvdG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAm
ZCgpLT5yZWdFeHBQcm90b3R5cGUpOworCisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQo
KS0+bWV0aG9kQ2FsbER1bW15KTsKIAogICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+
ZXJyb3JTdHJ1Y3R1cmUpOwogICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+YXJndW1l
bnRzU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDI0YmMyZjg4YjcxYzIzZjVjZTBhYTA5YTlmMWZlZGZhOTUzM2Y1ODAu
LjJiNTA2NTFlOGNiMGEzMDkzMTk0ZWJkMjc1MzUwZDQxNWQ5ZTQ5MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNzMsMjYgKzczLDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgLCBkZXN0cnVjdG9yKGRlc3RydWN0
b3IpCiAgICAgICAgICAgICAgICAgLCByZWdpc3RlckFycmF5U2l6ZSgwKQogICAgICAgICAgICAg
ICAgICwgZ2xvYmFsU2NvcGVDaGFpbihOb1Njb3BlQ2hhaW4oKSkKLSAgICAgICAgICAgICAgICAs
IHJlZ0V4cENvbnN0cnVjdG9yKDApCi0gICAgICAgICAgICAgICAgLCBlcnJvckNvbnN0cnVjdG9y
KDApCi0gICAgICAgICAgICAgICAgLCBldmFsRXJyb3JDb25zdHJ1Y3RvcigwKQotICAgICAgICAg
ICAgICAgICwgcmFuZ2VFcnJvckNvbnN0cnVjdG9yKDApCi0gICAgICAgICAgICAgICAgLCByZWZl
cmVuY2VFcnJvckNvbnN0cnVjdG9yKDApCi0gICAgICAgICAgICAgICAgLCBzeW50YXhFcnJvckNv
bnN0cnVjdG9yKDApCi0gICAgICAgICAgICAgICAgLCB0eXBlRXJyb3JDb25zdHJ1Y3RvcigwKQot
ICAgICAgICAgICAgICAgICwgVVJJRXJyb3JDb25zdHJ1Y3RvcigwKQotICAgICAgICAgICAgICAg
ICwgZXZhbEZ1bmN0aW9uKDApCi0gICAgICAgICAgICAgICAgLCBjYWxsRnVuY3Rpb24oMCkKLSAg
ICAgICAgICAgICAgICAsIGFwcGx5RnVuY3Rpb24oMCkKLSAgICAgICAgICAgICAgICAsIG9iamVj
dFByb3RvdHlwZSgwKQotICAgICAgICAgICAgICAgICwgZnVuY3Rpb25Qcm90b3R5cGUoMCkKLSAg
ICAgICAgICAgICAgICAsIGFycmF5UHJvdG90eXBlKDApCi0gICAgICAgICAgICAgICAgLCBib29s
ZWFuUHJvdG90eXBlKDApCi0gICAgICAgICAgICAgICAgLCBzdHJpbmdQcm90b3R5cGUoMCkKLSAg
ICAgICAgICAgICAgICAsIG51bWJlclByb3RvdHlwZSgwKQotICAgICAgICAgICAgICAgICwgZGF0
ZVByb3RvdHlwZSgwKQotICAgICAgICAgICAgICAgICwgcmVnRXhwUHJvdG90eXBlKDApCi0gICAg
ICAgICAgICAgICAgLCBtZXRob2RDYWxsRHVtbXkoMCkKICAgICAgICAgICAgICAgICAsIHdlYWtS
YW5kb20oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmRvbU51bWJlcigpICogKHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSArIDEuMCkpKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgfQpAQCAtMTA5LDI5ICs4OSwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IFNjb3BlQ2hhaW4gZ2xvYmFsU2NvcGVDaGFpbjsKICAgICAgICAgICAgIFJlZ2lzdGVyIGdsb2Jh
bENhbGxGcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemVdOwogCi0gICAgICAg
ICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3I7Ci0gICAgICAgICAgICBF
cnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3RydWN0b3I7Ci0gICAgICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3I7Ci0gICAgICAgICAgICBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yOwotICAgICAgICAg
ICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1Y3RvcjsKLSAgICAg
ICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHR5cGVFcnJvckNvbnN0cnVjdG9yOwotICAg
ICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogVVJJRXJyb3JDb25zdHJ1Y3RvcjsKLQot
ICAgICAgICAgICAgR2xvYmFsRXZhbEZ1bmN0aW9uKiBldmFsRnVuY3Rpb247Ci0gICAgICAgICAg
ICBOYXRpdmVGdW5jdGlvbldyYXBwZXIqIGNhbGxGdW5jdGlvbjsKLSAgICAgICAgICAgIE5hdGl2
ZUZ1bmN0aW9uV3JhcHBlciogYXBwbHlGdW5jdGlvbjsKLQotICAgICAgICAgICAgT2JqZWN0UHJv
dG90eXBlKiBvYmplY3RQcm90b3R5cGU7Ci0gICAgICAgICAgICBGdW5jdGlvblByb3RvdHlwZSog
ZnVuY3Rpb25Qcm90b3R5cGU7Ci0gICAgICAgICAgICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90
b3R5cGU7Ci0gICAgICAgICAgICBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlOwot
ICAgICAgICAgICAgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGU7Ci0gICAgICAgICAg
ICBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZTsKLSAgICAgICAgICAgIERhdGVQcm90
b3R5cGUqIGRhdGVQcm90b3R5cGU7Ci0gICAgICAgICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4
cFByb3RvdHlwZTsKLQotICAgICAgICAgICAgSlNPYmplY3QqIG1ldGhvZENhbGxEdW1teTsKKyAg
ICAgICAgICAgIFdyaXRlQmFycmllcjxSZWdFeHBDb25zdHJ1Y3Rvcj4gcmVnRXhwQ29uc3RydWN0
b3I7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8RXJyb3JDb25zdHJ1Y3Rvcj4gZXJyb3JDb25z
dHJ1Y3RvcjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9y
PiBldmFsRXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVF
cnJvckNvbnN0cnVjdG9yPiByYW5nZUVycm9yQ29uc3RydWN0b3I7CisgICAgICAgICAgICBXcml0
ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rv
cjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBzeW50
YXhFcnJvckNvbnN0cnVjdG9yOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I+IHR5cGVFcnJvckNvbnN0cnVjdG9yOworICAgICAgICAgICAgV3JpdGVCYXJy
aWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IFVSSUVycm9yQ29uc3RydWN0b3I7CisKKyAgICAg
ICAgICAgIFdyaXRlQmFycmllcjxHbG9iYWxFdmFsRnVuY3Rpb24+IGV2YWxGdW5jdGlvbjsKKyAg
ICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVGdW5jdGlvbldyYXBwZXI+IGNhbGxGdW5jdGlv
bjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVGdW5jdGlvbldyYXBwZXI+IGFwcGx5
RnVuY3Rpb247CisKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxPYmplY3RQcm90b3R5cGU+IG9i
amVjdFByb3RvdHlwZTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlw
ZT4gZnVuY3Rpb25Qcm90b3R5cGU7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90
b3R5cGU+IGFycmF5UHJvdG90eXBlOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEJvb2xlYW5Q
cm90b3R5cGU+IGJvb2xlYW5Qcm90b3R5cGU7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
aW5nUHJvdG90eXBlPiBzdHJpbmdQcm90b3R5cGU7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8
TnVtYmVyUHJvdG90eXBlPiBudW1iZXJQcm90b3R5cGU7CisgICAgICAgICAgICBXcml0ZUJhcnJp
ZXI8RGF0ZVByb3RvdHlwZT4gZGF0ZVByb3RvdHlwZTsKKyAgICAgICAgICAgIFdyaXRlQmFycmll
cjxSZWdFeHBQcm90b3R5cGU+IHJlZ0V4cFByb3RvdHlwZTsKKworICAgICAgICAgICAgV3JpdGVC
YXJyaWVyPEpTT2JqZWN0PiBtZXRob2RDYWxsRHVtbXk7CiAKICAgICAgICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IGFyZ3VtZW50c1N0cnVjdHVyZTsKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IGFycmF5U3RydWN0dXJlOwpAQCAtMjA5LDI4ICsxODksMjggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYWNjZXNzb3JzIHJldHVybiBwcmlzdGluZSB2YWx1
ZXMsIGV2ZW4gaWYgYSBzY3JpcHQgCiAgICAgICAgIC8vIHJlcGxhY2VzIHRoZSBnbG9iYWwgb2Jq
ZWN0J3MgYXNzb2NpYXRlZCBwcm9wZXJ0eS4KIAotICAgICAgICBSZWdFeHBDb25zdHJ1Y3Rvciog
cmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnJlZ0V4cENvbnN0cnVjdG9y
OyB9CisgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IuZ2V0KCk7IH0KIAotICAgICAgICBFcnJv
ckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5lcnJv
ckNvbnN0cnVjdG9yOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJv
ckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5ldmFsRXJyb3JDb25zdHJ1Y3Rvcjsg
fQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBkKCktPnJhbmdlRXJyb3JDb25zdHJ1Y3RvcjsgfQotICAgICAgICBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yOyB9Ci0gICAgICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIHN5bnRheEVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3I7IH0KLSAgICAgICAgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvciogdHlwZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnR5cGVF
cnJvckNvbnN0cnVjdG9yOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIFVSSUVy
cm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPlVSSUVycm9yQ29uc3RydWN0b3I7
IH0KKyAgICAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIGQoKS0+ZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgICAgICBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+
ZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvciogcmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5yYW5nZUVy
cm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciog
cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cmVmZXJlbmNl
RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiBzeW50YXhFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5zeW50YXhFcnJv
ckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHR5
cGVFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT50eXBlRXJyb3JDb25zdHJ1
Y3Rvci5nZXQoKTsgfQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5VUklFcnJvckNvbnN0cnVjdG9yLmdldCgp
OyB9CiAKLSAgICAgICAgR2xvYmFsRXZhbEZ1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBkKCktPmV2YWxGdW5jdGlvbjsgfQorICAgICAgICBHbG9iYWxFdmFsRnVuY3Rpb24q
IGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXZhbEZ1bmN0aW9uLmdldCgpOyB9
CiAKLSAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBkKCktPm9iamVjdFByb3RvdHlwZTsgfQotICAgICAgICBGdW5jdGlvblByb3RvdHlwZSog
ZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmZ1bmN0aW9uUHJvdG90eXBl
OyB9Ci0gICAgICAgIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIGQoKS0+YXJyYXlQcm90b3R5cGU7IH0KLSAgICAgICAgQm9vbGVhblByb3RvdHlwZSogYm9v
bGVhblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+Ym9vbGVhblByb3RvdHlwZTsgfQot
ICAgICAgICBTdHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IGQoKS0+c3RyaW5nUHJvdG90eXBlOyB9Ci0gICAgICAgIE51bWJlclByb3RvdHlwZSogbnVtYmVy
UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5udW1iZXJQcm90b3R5cGU7IH0KLSAgICAg
ICAgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZGF0
ZVByb3RvdHlwZTsgfQotICAgICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIGQoKS0+cmVnRXhwUHJvdG90eXBlOyB9CisgICAgICAgIE9iamVjdFBy
b3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5vYmplY3RQcm90
b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAg
ICAgICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCkt
PmFycmF5UHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xl
YW5Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmJvb2xlYW5Qcm90b3R5cGUuZ2V0KCk7
IH0KKyAgICAgICAgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBkKCktPnN0cmluZ1Byb3RvdHlwZS5nZXQoKTsgfQorICAgICAgICBOdW1iZXJQcm90b3R5
cGUqIG51bWJlclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+bnVtYmVyUHJvdG90eXBl
LmdldCgpOyB9CisgICAgICAgIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBkKCktPmRhdGVQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgUmVnRXhwUHJvdG90
eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPnJlZ0V4cFByb3RvdHlw
ZS5nZXQoKTsgfQogCi0gICAgICAgIEpTT2JqZWN0KiBtZXRob2RDYWxsRHVtbXkoKSBjb25zdCB7
IHJldHVybiBkKCktPm1ldGhvZENhbGxEdW1teTsgfQorICAgICAgICBKU09iamVjdCogbWV0aG9k
Q2FsbER1bW15KCkgY29uc3QgeyByZXR1cm4gZCgpLT5tZXRob2RDYWxsRHVtbXkuZ2V0KCk7IH0K
IAogICAgICAgICBTdHJ1Y3R1cmUqIGFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IGQoKS0+YXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogYXJy
YXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPmFycmF5U3RydWN0dXJlLmdldCgpOyB9
CkBAIC0zODUsNyArMzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTVmFsdWUg
U3RydWN0dXJlOjpwcm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKHR5cGVJbmZvKCkudHlwZSgpID09IE9iamVjdFR5cGUpCi0gICAgICAg
ICAgICByZXR1cm4gbV9wcm90b3R5cGU7CisgICAgICAgICAgICByZXR1cm4gbV9wcm90b3R5cGUu
Z2V0KCk7CiAKICAgICAgICAgQVNTRVJUKHR5cGVJbmZvKCkudHlwZSgpID09IFN0cmluZ1R5cGUp
OwogICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90
b3R5cGUoKTsKQEAgLTQ1NywxMiArNDM3LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAg
ICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgdmFsdWVzOwogICAgICAgICB2YWx1ZXMuYXBwZW5k
KHNpbmdsZUl0ZW1WYWx1ZSk7Ci0gICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpLCB2YWx1ZXMpOworICAg
ICAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpLCB2YWx1ZXMpOwogICAgIH0K
IAogICAgIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIHZhbHVlcykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpT
QXJyYXkoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpLCB2YWx1
ZXMpOworICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpLCB2YWx1ZXMp
OwogICAgIH0KIAogICAgIGNsYXNzIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDVhODI1MGYwNzdj
NjNlZGYwMzc1OGQxZTVkM2VhNTAxYzU0NWE4YWUuLjBmN2E1NzYxOTdjM2YzYmVkOTM1OGFmMjgx
YTc4NWRhNjJkNzNiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuY3BwCkBAIC04NCwxMiArODQsMTMgQEAgcHJpdmF0ZToKICAgICBwdWJsaWM6CiAgICAg
ICAgIEhvbGRlcihKU09iamVjdCopOwogCi0gICAgICAgIEpTT2JqZWN0KiBvYmplY3QoKSBjb25z
dCB7IHJldHVybiBtX29iamVjdDsgfQorICAgICAgICBKU09iamVjdCogb2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9vYmplY3QuZ2V0KCk7IH0KKyAgICAgICAgRGVwcmVjYXRlZFB0cjxKU09iamVj
dD4qIG9iamVjdFNsb3QoKSB7IHJldHVybiAmbV9vYmplY3Q7IH0KIAogICAgICAgICBib29sIGFw
cGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmllciYsIFVTdHJpbmdCdWlsZGVyJik7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBKU09iamVjdCogY29uc3QgbV9vYmplY3Q7CisgICAgICAgIERlcHJl
Y2F0ZWRQdHI8SlNPYmplY3Q+IG1fb2JqZWN0OwogICAgICAgICBjb25zdCBib29sIG1faXNBcnJh
eTsKICAgICAgICAgYm9vbCBtX2lzSlNBcnJheTsKICAgICAgICAgdW5zaWduZWQgbV9pbmRleDsK
QEAgLTI1OCw3ICsyNTksNyBAQCB2b2lkIFN0cmluZ2lmaWVyOjptYXJrQWdncmVnYXRlKE1hcmtT
dGFjayYgbWFya1N0YWNrKQogICAgIGZvciAoU3RyaW5naWZpZXIqIHN0cmluZ2lmaWVyID0gdGhp
czsgc3RyaW5naWZpZXI7IHN0cmluZ2lmaWVyID0gc3RyaW5naWZpZXItPm1fbmV4dFN0cmluZ2lm
aWVyVG9NYXJrKSB7CiAgICAgICAgIHNpemVfdCBzaXplID0gbV9ob2xkZXJTdGFjay5zaXplKCk7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAg
bWFya1N0YWNrLmFwcGVuZChtX2hvbGRlclN0YWNrW2ldLm9iamVjdCgpKTsKKyAgICAgICAgICAg
IG1hcmtTdGFjay5hcHBlbmQobV9ob2xkZXJTdGFja1tpXS5vYmplY3RTbG90KCkpOwogICAgIH0K
IH0KIApAQCAtMjY5LDcgKzI3MCw3IEBAIEpTVmFsdWUgU3RyaW5naWZpZXI6OnN0cmluZ2lmeShK
U1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBQcm9wZXJ0eU5h
bWVGb3JGdW5jdGlvbkNhbGwgZW1wdHlQcm9wZXJ0eU5hbWUobV9leGVjLT5nbG9iYWxEYXRhKCku
cHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCht
X2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIsIHZhbHVl
KTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKSwgbV9leGVjLT5n
bG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCB2YWx1ZSk7CiAKICAg
ICBVU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgaWYgKGFwcGVuZFN0cmluZ2lmaWVkVmFsdWUo
cmVzdWx0LCB2YWx1ZSwgb2JqZWN0LCBlbXB0eVByb3BlcnR5TmFtZSkgIT0gU3RyaW5naWZ5U3Vj
Y2VlZGVkKQpAQCAtNDk5LDcgKzUwMCw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBw
ZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0cmluZ0J1CiAgICAg
Ly8gRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplLgogICAgIGlmICghbV9pbmRleCkgewog
ICAgICAgICBpZiAobV9pc0FycmF5KSB7Ci0gICAgICAgICAgICBtX2lzSlNBcnJheSA9IGlzSlNB
cnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdCk7CisgICAgICAgICAgICBtX2lzSlNB
cnJheSA9IGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdC5nZXQoKSk7CiAg
ICAgICAgICAgICBtX3NpemUgPSBtX29iamVjdC0+Z2V0KGV4ZWMsIGV4ZWMtPmdsb2JhbERhdGEo
KS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwogICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJ1snKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTUzMiwxMCArNTMzLDEwIEBA
IGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVy
JiBzdHJpbmdpZmllciwgVVN0cmluZ0J1CiAgICAgaWYgKG1faXNBcnJheSkgewogICAgICAgICAv
LyBHZXQgdGhlIHZhbHVlLgogICAgICAgICBKU1ZhbHVlIHZhbHVlOwotICAgICAgICBpZiAobV9p
c0pTQXJyYXkgJiYgYXNBcnJheShtX29iamVjdCktPmNhbkdldEluZGV4KGluZGV4KSkKLSAgICAg
ICAgICAgIHZhbHVlID0gYXNBcnJheShtX29iamVjdCktPmdldEluZGV4KGluZGV4KTsKKyAgICAg
ICAgaWYgKG1faXNKU0FycmF5ICYmIGFzQXJyYXkobV9vYmplY3QuZ2V0KCkpLT5jYW5HZXRJbmRl
eChpbmRleCkpCisgICAgICAgICAgICB2YWx1ZSA9IGFzQXJyYXkobV9vYmplY3QuZ2V0KCkpLT5n
ZXRJbmRleChpbmRleCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QobV9vYmplY3QpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QobV9vYmplY3Qu
Z2V0KCkpOwogICAgICAgICAgICAgaWYgKCFtX29iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KGV4
ZWMsIGluZGV4LCBzbG90KSkKICAgICAgICAgICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwog
ICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNTQ5LDEwICs1NTAsMTAg
QEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZp
ZXImIHN0cmluZ2lmaWVyLCBVU3RyaW5nQnUKICAgICAgICAgc3RyaW5naWZpZXIuc3RhcnROZXdM
aW5lKGJ1aWxkZXIpOwogCiAgICAgICAgIC8vIEFwcGVuZCB0aGUgc3RyaW5naWZpZWQgdmFsdWUu
Ci0gICAgICAgIHN0cmluZ2lmeVJlc3VsdCA9IHN0cmluZ2lmaWVyLmFwcGVuZFN0cmluZ2lmaWVk
VmFsdWUoYnVpbGRlciwgdmFsdWUsIG1fb2JqZWN0LCBpbmRleCk7CisgICAgICAgIHN0cmluZ2lm
eVJlc3VsdCA9IHN0cmluZ2lmaWVyLmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoYnVpbGRlciwgdmFs
dWUsIG1fb2JqZWN0LmdldCgpLCBpbmRleCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gR2V0
IHRoZSB2YWx1ZS4KLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QobV9vYmplY3QpOworICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChtX29iamVjdC5nZXQoKSk7CiAgICAgICAgIElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSA9IG1fcHJvcGVydHlOYW1lcy0+cHJvcGVydHlOYW1lVmVjdG9yKClbaW5k
ZXhdOwogICAgICAgICBpZiAoIW1fb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTc0LDcgKzU3
NSw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmlu
Z2lmaWVyJiBzdHJpbmdpZmllciwgVVN0cmluZ0J1CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnICcpOwogCiAgICAgICAgIC8vIEFwcGVuZCB0aGUgc3RyaW5naWZpZWQgdmFsdWUuCi0gICAg
ICAgIHN0cmluZ2lmeVJlc3VsdCA9IHN0cmluZ2lmaWVyLmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUo
YnVpbGRlciwgdmFsdWUsIG1fb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzdHJpbmdp
ZnlSZXN1bHQgPSBzdHJpbmdpZmllci5hcHBlbmRTdHJpbmdpZmllZFZhbHVlKGJ1aWxkZXIsIHZh
bHVlLCBtX29iamVjdC5nZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICB9CiAKICAgICAvLyBGcm9t
IHRoaXMgcG9pbnQgb24sIG5vIGFjY2VzcyB0byB0aGUgdGhpcyBwb2ludGVyIG9yIHRvIGFueSBt
ZW1iZXJzLCBiZWNhdXNlIHRoZQpAQCAtNjQxLDEzICs2NDIsMTMgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgICAgIEpTVmFsdWUgYXJnc1tdID0geyBwcm9wZXJ0eSwgdW5maWx0ZXJlZCB9OwogICAg
ICAgICBBcmdMaXN0IGFyZ0xpc3QoYXJncywgMik7Ci0gICAgICAgIHJldHVybiBjYWxsKG1fZXhl
YywgbV9mdW5jdGlvbiwgbV9jYWxsVHlwZSwgbV9jYWxsRGF0YSwgdGhpc09iaiwgYXJnTGlzdCk7
CisgICAgICAgIHJldHVybiBjYWxsKG1fZXhlYywgbV9mdW5jdGlvbi5nZXQoKSwgbV9jYWxsVHlw
ZSwgbV9jYWxsRGF0YSwgdGhpc09iaiwgYXJnTGlzdCk7CiAgICAgfQogCiAgICAgZnJpZW5kIGNs
YXNzIEhvbGRlcjsKIAogICAgIEV4ZWNTdGF0ZSogbV9leGVjOwotICAgIEpTT2JqZWN0KiBtX2Z1
bmN0aW9uOworICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IG1fZnVuY3Rpb247CiAgICAgQ2Fs
bFR5cGUgbV9jYWxsVHlwZTsKICAgICBDYWxsRGF0YSBtX2NhbGxEYXRhOwogfTsKQEAgLTcyNiw3
ICs3MjcsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZp
bHRlcmVkKQogICAgICAgICAgICAgICAgICAgICBhcnJheS0+ZGVsZXRlUHJvcGVydHkobV9leGVj
LCBpbmRleFN0YWNrLmxhc3QoKSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheSkgJiYg
YXJyYXktPmNhblNldEluZGV4KGluZGV4U3RhY2subGFzdCgpKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGFycmF5LT5zZXRJbmRleChpbmRleFN0YWNrLmxhc3QoKSwgZmlsdGVyZWRWYWx1ZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS0+c2V0SW5kZXgobV9leGVjLT5nbG9iYWxE
YXRhKCksIGluZGV4U3RhY2subGFzdCgpLCBmaWx0ZXJlZFZhbHVlKTsKICAgICAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXktPnB1dChtX2V4ZWMsIGlu
ZGV4U3RhY2subGFzdCgpLCBmaWx0ZXJlZFZhbHVlKTsKICAgICAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggNmVjYzczZjhjN2Jk
ZGMwYWU2ODM1MTJjYTU2MjY5YjdjZjZkNzQ5Yi4uN2ExZTdlMTA1Yzg4MzkyNzZiZTI2YTUxZTdj
YmFkZmNkMmQ1NmVmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgSlNPYmplY3Q6OmRlZmluZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPCiAgICAgSlNW
YWx1ZSBvYmplY3QgPSBnZXREaXJlY3QocHJvcGVydHlOYW1lKTsKICAgICBpZiAob2JqZWN0ICYm
IG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7CiAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICAgICAgYXNHZXR0ZXJTZXR0ZXIob2Jq
ZWN0KS0+c2V0R2V0dGVyKGdldHRlckZ1bmN0aW9uKTsKKyAgICAgICAgYXNHZXR0ZXJTZXR0ZXIo
b2JqZWN0KS0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2V0dGVyRnVuY3Rpb24pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBKU09iamVj
dDo6ZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU08KICAgICB9CiAKICAgICBtX3N0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcyh0cnVlKTsKLSAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihnZXR0ZXJGdW5j
dGlvbik7CisgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBn
ZXR0ZXJGdW5jdGlvbik7CiB9CiAKIHZvaWQgSlNPYmplY3Q6OmRlZmluZVNldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRl
ckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQg
SlNPYmplY3Q6OmRlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNPCiAgICAgSlNWYWx1ZSBvYmplY3QgPSBnZXREaXJlY3QocHJvcGVy
dHlOYW1lKTsKICAgICBpZiAob2JqZWN0ICYmIG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7CiAg
ICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsK
LSAgICAgICAgYXNHZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0U2V0dGVyKHNldHRlckZ1bmN0aW9u
KTsKKyAgICAgICAgYXNHZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0U2V0dGVyKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgc2V0dGVyRnVuY3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0z
NTgsNyArMzU4LDcgQEAgdm9pZCBKU09iamVjdDo6ZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU08KICAgICB9CiAKICAgICBtX3N0
cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyh0cnVlKTsKLSAgICBnZXR0ZXJT
ZXR0ZXItPnNldFNldHRlcihzZXR0ZXJGdW5jdGlvbik7CisgICAgZ2V0dGVyU2V0dGVyLT5zZXRT
ZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzZXR0ZXJGdW5jdGlvbik7CiB9CiAKIEpTVmFsdWUg
SlNPYmplY3Q6Omxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCkBAIC01MTIsMzQgKzUxMiwzNCBAQCB2b2lkIEpTT2JqZWN0OjpyZW1vdmVEaXJl
Y3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIGlmIChtX3N0cnVjdHVyZS0+
aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBtX3N0cnVjdHVy
ZS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgICAgICBwdXREaXJlY3RPZmZz
ZXQob2Zmc2V0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGly
ZWN0T2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlv
bihtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwogICAgIHNldFN0cnVjdHVyZShz
dHJ1Y3R1cmUucmVsZWFzZSgpKTsKICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0g
ICAgICAgIHB1dERpcmVjdE9mZnNldChvZmZzZXQsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBw
dXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwogfQogCiB2b2lkIEpTT2JqZWN0Ojpw
dXREaXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0
aW9uLCB1bnNpZ25lZCBhdHRyKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uKElkZW50aWZpZXIo
ZXhlYywgZnVuY3Rpb24tPm5hbWUoZXhlYykpLCBmdW5jdGlvbiwgYXR0cik7CisgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9u
LT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNp
Z25lZCBhdHRyKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uKElkZW50aWZpZXIoZXhlYywgZnVu
Y3Rpb24tPm5hbWUoZXhlYykpLCBmdW5jdGlvbiwgYXR0cik7CisgICAgcHV0RGlyZWN0RnVuY3Rp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4
ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJuYWxGdW5jdGlvbiog
ZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpKSwgZnVuY3Rp
b24sIGF0dHIpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpKSwgZnVu
Y3Rpb24sIGF0dHIpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2ln
bmVkIGF0dHIpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJZGVu
dGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOworICAg
IHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOwog
fQogCiBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQ
cm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUqIGxvY2F0aW9uKQpAQCAtNTk1LDExICs1OTUsMTEg
QEAgc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0
YXJnZXQsIGNvbnN0IElkZW50aWZpZXImIHAKICAgICAgICAgICAgIEdldHRlclNldHRlciogYWNj
ZXNzb3IgPSBuZXcgKGV4ZWMpIEdldHRlclNldHRlcihleGVjKTsKICAgICAgICAgICAgIGlmIChv
bGREZXNjcmlwdG9yLmdldHRlcigpKSB7CiAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBH
ZXR0ZXI7Ci0gICAgICAgICAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcihhc09iamVjdChvbGRE
ZXNjcmlwdG9yLmdldHRlcigpKSk7CisgICAgICAgICAgICAgICAgYWNjZXNzb3ItPnNldEdldHRl
cihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KG9sZERlc2NyaXB0b3IuZ2V0dGVyKCkpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvbGREZXNjcmlwdG9yLnNldHRlcigpKSB7
CiAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBTZXR0ZXI7Ci0gICAgICAgICAgICAgICAg
YWNjZXNzb3ItPnNldFNldHRlcihhc09iamVjdChvbGREZXNjcmlwdG9yLnNldHRlcigpKSk7Cisg
ICAgICAgICAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFz
T2JqZWN0KG9sZERlc2NyaXB0b3Iuc2V0dGVyKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHRhcmdldC0+cHV0V2l0aEF0dHJpYnV0ZXMoZXhlYywgcHJvcGVydHlOYW1lLCBhY2Nlc3Nv
ciwgYXR0cmlidXRlcyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTcyMCw5ICs3MjAs
OSBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZQogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYWNjZXNzb3IpOwogICAgIGlmIChjdXJyZW50LmF0dHJpYnV0
ZXNFcXVhbChkZXNjcmlwdG9yKSkgewogICAgICAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXIoKSkK
LSAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGFzT2JqZWN0KGRlc2NyaXB0b3Iu
c2V0dGVyKCkpKTsKKyAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGV4ZWMtPmds
b2JhbERhdGEoKSwgYXNPYmplY3QoZGVzY3JpcHRvci5zZXR0ZXIoKSkpOwogICAgICAgICBpZiAo
ZGVzY3JpcHRvci5nZXR0ZXIoKSkKLSAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVy
KGFzT2JqZWN0KGRlc2NyaXB0b3IuZ2V0dGVyKCkpKTsKKyAgICAgICAgICAgIGdldHRlclNldHRl
ci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3QoZGVzY3JpcHRvci5nZXR0
ZXIoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgZGVsZXRlUHJvcGVydHko
ZXhlYywgcHJvcGVydHlOYW1lKTsKQEAgLTczMSw3ICs3MzEsNyBAQCBib29sIEpTT2JqZWN0Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZQogICAgICAgICBhdHRycyB8PSBTZXR0ZXI7CiAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0
dGVyKCkpCiAgICAgICAgIGF0dHJzIHw9IEdldHRlcjsKLSAgICBwdXREaXJlY3QocHJvcGVydHlO
YW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cnMpOwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA4MDNh
YmZkNzNiNGM0OWJlZWEzNWRlMWExMWM4ODMyYmEwNWU5NzRlLi43OWI4MGYxMmFkMWFiYzU5MWJj
YjA4YjBiYWZmZmYyZGFkMDEyMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKQEAgLTcwLDggKzcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNldHRl
ciAgICAgICA9IDEgPDwgNiAgIC8vIHByb3BlcnR5IGlzIGEgc2V0dGVyCiAgICAgfTsKIAotICAg
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUqIFByb3BlcnR5U3RvcmFnZTsKLSAgICB0eXBlZGVmIGNv
bnN0IEVuY29kZWRKU1ZhbHVlKiBDb25zdFByb3BlcnR5U3RvcmFnZTsKKyAgICB0eXBlZGVmIFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4qIFByb3BlcnR5U3RvcmFnZTsKKyAgICB0eXBlZGVmIGNv
bnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIENvbnN0UHJvcGVydHlTdG9yYWdlOwogCiAg
ICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOwpAQCAtMTc5LDIzICsxNzksMjQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuICFt
X3N0cnVjdHVyZS0+aXNFbXB0eSgpOyB9CiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcygpIHsgcmV0dXJuIG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCk7IH0KIAotICAgICAgICBib29sIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7
Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
dW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICAgICAgdm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIGJvb2wgcHV0
RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlv
bihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVk
IGF0dHIgPSAwKTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hl
Y2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAgdm9pZCBwdXREaXJl
Y3RGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTQ2VsbCosIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5j
dGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2Vs
bCosIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90Jik7
CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5h
bEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0ciA9IDApOwogICAgICAgICB2b2lkIHB1
dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogZnVuY3Rpb24sIHVu
c2lnbmVkIGF0dHIgPSAwKTsKIAotICAgICAgICB2b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0ciA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNp
Z25lZCBhdHRyID0gMCk7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICAgdm9pZCBwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJuYWxGdW5j
dGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICAgdm9pZCBwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiog
ZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAogICAgICAgICAvLyBGYXN0IGFjY2VzcyB0
byBrbm93biBwcm9wZXJ0eSBvZmZzZXRzLgotICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNl
dChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUocHJvcGVydHlT
dG9yYWdlKClbb2Zmc2V0XSk7IH0KLSAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoc2l6ZV90
IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdID0gSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQorICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChz
aXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdl
dCgpOyB9CisgICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtv
ZmZzZXRdLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0KKyAgICAgICAgdm9pZCBwdXRV
bmRlZmluZWRBdERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7IHByb3BlcnR5U3RvcmFnZSgp
W29mZnNldF0uc2V0VW5kZWZpbmVkKCk7IH0KIAogICAgICAgICB2b2lkIGZpbGxHZXR0ZXJQcm9w
ZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSogbG9jYXRpb24pOwogCkBAIC0yMjUsOSAr
MjI2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUocHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFu
b255bW91c1Nsb3RDb3VudCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGZsYXR0ZW5EaWN0
aW9uYXJ5T2JqZWN0KCkKKyAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJl
LT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgICAgIG1fc3RydWN0
dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShnbG9iYWxEYXRhLCB0aGlzKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgcHV0QW5vbnltb3VzVmFsdWUodW5zaWduZWQgaW5kZXgsIEpT
VmFsdWUgdmFsdWUpCkBAIC0yNjcsOCArMjY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oJnByb3BlcnR5U3RvcmFnZSgp
W29mZnNldF0pOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwqKTsK
LSAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wg
Y2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAgYm9vbCBwdXRE
aXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVy
dHlTbG90JiwgSlNDZWxsKik7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9i
YWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2
b2lkIHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwogCiAgICAgICAg
IGJvb2wgaW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC0yNzgsNyArMjc5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgUHJvcGVydHlTdG9y
YWdlIG1fZXh0ZXJuYWxTdG9yYWdlOwotICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUgbV9pbmxp
bmVTdG9yYWdlW2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CisgICAgICAgICAgICBXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtpbmxpbmVTdG9yYWdlQ2FwYWNpdHldOwog
ICAgICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1faW5oZXJpdG9ySUQ7CkBA
IC00NTAsNyArNDUxLDcgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldChFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCog
c3BlY2lmaWNGdW5jdGlvbikKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbikKIHsKICAg
ICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6
aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CkBAIC00NjcsNyArNDY4LDcgQEAgaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgaWYgKGNoZWNrUmVhZE9ubHkgJiYgY3Vy
cmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgICAgIHB1dERpcmVjdE9mZnNldChvZmZzZXQsIHZhbHVlKTsKKyAgICAgICAg
ICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAg
ICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZSBvYmplY3RzIHN0cnVjdHVyZSBvbmx5IGhhcyBhIHNw
ZWNpZmljIHZhbHVlIHNldCBpZiBwcmV2aW91c2x5IHRoZXJlCiAgICAgICAgICAgICAvLyBoYWQg
YmVlbiBvbmUgc2V0LCBhbmQgaWYgdGhlIG5ldyB2YWx1ZSBiZWluZyBzcGVjaWZpZWQgaXMgdGhl
IHNhbWUgKG90aGVyd2lzZSB3ZSB3b3VsZAogICAgICAgICAgICAgLy8gaGF2ZSBkZXNwZWNpZmll
ZCwgYWJvdmUpLiAgU28sIGlmIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uIGlzIG5vdCBzZXQsIG9y
IGlmIHRoZSBuZXcKQEAgLTQ4NSw3ICs0ODYsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAg
ICAgICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIG1fc3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKIAogICAgICAgICBBU1NFUlQob2Zm
c2V0IDwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgICAgICBw
dXREaXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1ZSk7CisgICAgICAgIHB1dERpcmVjdE9mZnNldChn
bG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gU2VlIGNvbW1lbnQgb24gc2V0
TmV3UHJvcGVydHkgY2FsbCBiZWxvdy4KICAgICAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0aW9uKQog
ICAgICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwpAQCAtNTAwLDcg
KzUwMSw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKIAogICAgICAgICBBU1NFUlQob2Zmc2V0
IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICAgICAgc2V0U3Ry
dWN0dXJlKHN0cnVjdHVyZS5yZWxlYXNlKCkpOwotICAgICAgICBwdXREaXJlY3RPZmZzZXQob2Zm
c2V0LCB2YWx1ZSk7CisgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQs
IHZhbHVlKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyBwcm9wZXJ0eTsgdHJhbnNpdGlvbnMg
d2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50bHkgY2FjaGFibGUsCiAgICAgICAg
IC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUgc3RhdGUuCiAgICAgICAgIGlm
ICghc3BlY2lmaWNGdW5jdGlvbikKQEAgLTUyNyw3ICs1MjgsNyBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlCiAgICAgICAgIGlmIChjdXJyZW50U3BlY2lmaWNGdW5jdGlvbikgewogICAgICAgICAg
ICAgLy8gY2FzZSAoMSkgRG8gdGhlIHB1dCwgdGhlbiByZXR1cm4gbGVhdmluZyB0aGUgc2xvdCB1
bmNhY2hhYmxlLgogICAgICAgICAgICAgaWYgKHNwZWNpZmljRnVuY3Rpb24gPT0gY3VycmVudFNw
ZWNpZmljRnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBwdXREaXJlY3RPZmZzZXQob2Zmc2V0
LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9m
ZnNldCwgdmFsdWUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgLy8gY2FzZSAoMikgRGVzcGVjaWZ5LCBmYWxsIHRocm91Z2ggdG8gKDMp
LgpAQCAtNTM2LDcgKzUzNyw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKIAogICAgICAgICAv
LyBjYXNlICgzKSBzZXQgdGhlIHNsb3QsIGRvIHRoZSBwdXQsIHJldHVybi4KICAgICAgICAgc2xv
dC5zZXRFeGlzdGluZ1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7Ci0gICAgICAgIHB1dERpcmVjdE9m
ZnNldChvZmZzZXQsIHZhbHVlKTsKKyAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEs
IG9mZnNldCwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTU1Nyw3
ICs1NTgsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAKICAgICBBU1NFUlQob2Zmc2V0IDwg
c3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICBzZXRTdHJ1Y3R1cmUo
c3RydWN0dXJlLnJlbGVhc2UoKSk7Ci0gICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUp
OworICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAv
LyBUaGlzIGlzIGEgbmV3IHByb3BlcnR5OyB0cmFuc2l0aW9ucyB3aXRoIHNwZWNpZmljIHZhbHVl
cyBhcmUgbm90IGN1cnJlbnRseSBjYWNoYWJsZSwKICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBp
biBhbiB1bmNhY2hhYmxlIHN0YXRlLgogICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKQEAgLTU3
MCw2MSArNTcxLDYxIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09
IEhlYXA6OmhlYXAodGhpcykpOwogCi0gICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsKHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIGdldEpTRnVu
Y3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUpKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwo
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25s
eSwgc2xvdCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwogfQogCiBpbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCiB7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgcHV0RGlyZWN0
SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgZmFsc2UsIHNsb3QsIGdl
dEpTRnVuY3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUpKTsKKyAgICBwdXREaXJlY3RJbnRlcm5hbChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxzZSwgc2xvdCwg
Z2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwogfQogCi1pbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVh
cCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKLSAg
ICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRl
cywgY2hlY2tSZWFkT25seSwgc2xvdCwgMCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFs
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9u
bHksIHNsb3QsIDApOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgcHV0
RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgZmFsc2UsIHNs
b3QsIDApOworICAgIHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBzbG90LCAwKTsKIH0KIAotaW5saW5lIGJvb2wgSlNP
YmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1
cm4gcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgZmFsc2UsIHNsb3Qs
IDApOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCAwLCBmYWxzZSwgc2xvdCwgMCk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2Vs
bCogdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQoraW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHks
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCB2YWx1ZSk7Cisg
ICAgcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9pZCBK
U09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyKQoraW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyKQogewogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90OwotICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHIsIGZhbHNlLCBzbG90LCB2YWx1ZSk7CisgICAgcHV0RGlyZWN0SW50ZXJuYWwo
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwgZmFsc2UsIHNsb3QsIHZhbHVl
KTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBzaXplX3Qg
Y3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7
CiAgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgMCk7CiAgICAgaWYgKGN1cnJlbnRDYXBh
Y2l0eSAhPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKICAgICAgICAg
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFs
dWUpOworICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKIH0K
IAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQoraW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAg
ICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpOwogICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHZhbHVlKTsKICAgICBp
ZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKQogICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIG1f
c3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBwdXREaXJlY3RPZmZz
ZXQob2Zmc2V0LCB2YWx1ZSk7CisgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNl
dCwgdmFsdWUpOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dHJhbnNpdGlvblRvKFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlKQpAQCAtNzAzLDcgKzcwNCw3IEBAIGlubGluZSB2b2lkIEpTVmFs
dWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1CiBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXREaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQoaXNDZWxsKCkgJiYgaXNPYmplY3QoKSk7Ci0gICAg
aWYgKCFhc09iamVjdChhc0NlbGwoKSktPnB1dERpcmVjdChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghYXNPYmplY3QoYXNDZWxsKCkp
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogfQogCkBAIC03MjUsNyArNzI2
LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZUlubGluZShzaXplX3Qgb2xkU2l6ZSwgc2l6ZV8KICAgICBib29sIHdhc0lubGluZSA9IChvbGRT
aXplID09IEpTT2JqZWN0OjppbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOwogCiAgICAgUHJvcGVydHlT
dG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9ICh3YXNJbmxpbmUgPyBtX2lubGluZVN0b3JhZ2Ug
OiBtX2V4dGVybmFsU3RvcmFnZSk7Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3Rv
cmFnZSA9IG5ldyBFbmNvZGVkSlNWYWx1ZVtuZXdTaXplXTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ug
bmV3UHJvcGVydHlTdG9yYWdlID0gbmV3IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj5bbmV3U2l6
ZV07CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2xkU2l6ZTsgKytpKQogICAgICAg
IG5ld1Byb3BlcnR5U3RvcmFnZVtpXSA9IG9sZFByb3BlcnR5U3RvcmFnZVtpXTsKQEAgLTc0MCw4
ICs3NDEsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6Om1hcmtDaGlsZHJlbkRpcmVj
dChNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBKU0NlbGw6Om1hcmtDaGlsZHJlbihtYXJr
U3RhY2spOwogCi0gICAgbWFya1N0YWNrLmFwcGVuZChwcm90b3R5cGUoKSk7Ci0gICAgCisgICAg
bWFya1N0YWNrLmFwcGVuZChtX3N0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlU2xvdCgpKTsKICAg
ICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwogICAgIHNpemVf
dCBzdG9yYWdlU2l6ZSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CiAgICAg
bWFya1N0YWNrLmFwcGVuZFZhbHVlcyhyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihzdG9yYWdl
KSwgc3RvcmFnZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAppbmRleCA3YWIxZDFjMTA3NDRmNTAzYmZhODFkMTc5
YTdiM2Y0YjNkYjA2NDQzLi5hYmQ0ZWQzMjBiMjI5Y2E1NzA4Y2ExZWRjNjZkODJhMGE1NGZlYmQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3Bl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmNwcApAQCAtMzQsNyArMzQsNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxM
KEpTU3RhdGljU2NvcGVPYmplY3QpOwogdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjptYXJrQ2hp
bGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNWYXJpYWJsZU9iamVjdDo6bWFy
a0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0gICAgbWFya1N0YWNrLmFwcGVuZChkKCktPnJlZ2lzdGVy
U3RvcmUuanNWYWx1ZSgpKTsKKyAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZChkKCktPnJl
Z2lzdGVyU3RvcmUuanNWYWx1ZVNsb3QoKSk7CiB9CiAKIEpTT2JqZWN0KiBKU1N0YXRpY1Njb3Bl
T2JqZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmluZGV4IGJhMjgxMzlhNGNhZWQyMjJiYzFj
YmJmODRiNGFmYzNhNzRiODJhOWEuLjg0OGM0MzFhYzBjNGI0MGZkNDZjN2Y3NDgxZTQ5NzEzNzI4
ZDdiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAg
LTI1NSw3ICsyNTUsNyBAQCBVU3RyaW5nIEpTU3RyaW5nOjp0b1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiAKIGlubGluZSBTdHJpbmdPYmplY3QqIFN0cmluZ09iamVjdDo6Y3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykKIHsKLSAgICByZXR1cm4gbmV3IChleGVj
KSBTdHJpbmdPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdPYmplY3RT
dHJ1Y3R1cmUoKSwgc3RyaW5nKTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBTdHJpbmdPYmplY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ09i
amVjdFN0cnVjdHVyZSgpLCBzdHJpbmcpOwogfQogCiBKU09iamVjdCogSlNTdHJpbmc6OnRvT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFsdWUuaAppbmRleCBjYWQ5NjYyODFkYjdjZDdiMGU2NjdhNjliOTBkMmRiYzRkOGY3Y2U2Li5i
MmU3YTUxZTU4MTE5ODg2MmRiYmQ4NmVkOTU4ZWVmNmMwZWVlMWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCkBAIC00Nyw2ICs0Nyw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHN0cnVjdCBDbGFzc0luZm87CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwogCisgICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIERlcHJlY2F0ZWRQdHI7CisgICAgdGVtcGxhdGUgPGNs
YXNzIFQ+IGNsYXNzIFdyaXRlQmFycmllckJhc2U7CisKICAgICBlbnVtIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07CiAK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMjEyLDYgKzIxNSw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2VuZGlmCiAKICAgICBwcml2YXRlOgorICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNW
YWx1ZShEZXByZWNhdGVkUHRyPFQ+KTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFs
dWUoV3JpdGVCYXJyaWVyQmFzZTxUPik7CisKICAgICAgICAgZW51bSBIYXNoVGFibGVEZWxldGVk
VmFsdWVUYWcgeyBIYXNoVGFibGVEZWxldGVkVmFsdWUgfTsKICAgICAgICAgSlNWYWx1ZShIYXNo
VGFibGVEZWxldGVkVmFsdWVUYWcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAppbmRleCAyYzM5ZjVjMjM4NDlmZWUyYWZmYTE5NGQ0
YzZlZTU5Mzk5YWJhNzQxLi42YzczYjJmMGRhOGE1ODBlMWUxMGQxYmNlOGUzMDhkNGZjMTg2YzQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVj
dC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgdm9pZCBKU1dyYXBwZXJPYmplY3Q6Om1hcmtDaGlsZHJl
bihNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBKU09iamVjdDo6bWFya0NoaWxkcmVuKG1h
cmtTdGFjayk7CiAgICAgaWYgKG1faW50ZXJuYWxWYWx1ZSkKLSAgICAgICAgbWFya1N0YWNrLmFw
cGVuZChtX2ludGVybmFsVmFsdWUpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2ludGVy
bmFsVmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKaW5kZXggZjE5Y2QzMGM4NTA0OTQwOWEz
MzhjY2UyN2Y2MTdlODk5ZWRlMzQwYi4uNGVhZjJjMDQwOWUzNzhmNTlmNDc4Yjc5N2UzNTA5NTcx
YWVhODkxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFw
cGVyT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVy
T2JqZWN0LmgKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGV4cGxp
Y2l0IEpTV3JhcHBlck9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAogICAg
IHB1YmxpYzoKLSAgICAgICAgSlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbFZhbHVlOyB9Ci0gICAgICAgIHZvaWQgc2V0SW50ZXJuYWxWYWx1ZShKU1ZhbHVl
KTsKKyAgICAgICAgSlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbnRl
cm5hbFZhbHVlLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0SW50ZXJuYWxWYWx1ZShKU0dsb2Jh
bERhdGEmLCBKU1ZhbHVlKTsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgICAgIHsgCkBAIC00Nyw3
ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVl
IG1faW50ZXJuYWxWYWx1ZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1faW50ZXJu
YWxWYWx1ZTsKICAgICB9OwogCiAgICAgaW5saW5lIEpTV3JhcHBlck9iamVjdDo6SlNXcmFwcGVy
T2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQpAQCAtNTYsMTEg
KzU2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBwdXRBbm9ueW1vdXNWYWx1ZSgwLCBq
c051bGwoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgSlNXcmFwcGVyT2JqZWN0OjpzZXRJ
bnRlcm5hbFZhbHVlKEpTVmFsdWUgdmFsdWUpCisgICAgaW5saW5lIHZvaWQgSlNXcmFwcGVyT2Jq
ZWN0OjpzZXRJbnRlcm5hbFZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSB2
YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVCghdmFs
dWUuaXNPYmplY3QoKSk7Ci0gICAgICAgIG1faW50ZXJuYWxWYWx1ZSA9IHZhbHVlOworICAgICAg
ICBtX2ludGVybmFsVmFsdWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKICAgICAgICAg
cHV0QW5vbnltb3VzVmFsdWUoMCwgdmFsdWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRleCBkZjg3ZTdmODZiNTZlZDA1
NzE4OTIwYWQwMjZlMWU1YzJiNjdmZTI5Li5iYzJlNzM2MjQ2OTU4M2JkYmY1YzM1MDQ0ZTEwYzdk
ZDdhODE0NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRl
cmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFs
UGFyc2VyLmNwcApAQCAtMzczLDcgKzM3Myw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjo6cGFy
c2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y2FzZSBEb1BhcnNlT2JqZWN0RW5kRXhwcmVzc2lvbjoKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBhc09iamVjdChvYmplY3RTdGFjay5sYXN0KCkpLT5wdXREaXJlY3QoaWRlbnRpZmll
clN0YWNrLmxhc3QoKSwgbGFzdFZhbHVlKTsKKyAgICAgICAgICAgICAgICBhc09iamVjdChvYmpl
Y3RTdGFjay5sYXN0KCkpLT5wdXREaXJlY3QobV9leGVjLT5nbG9iYWxEYXRhKCksIGlkZW50aWZp
ZXJTdGFjay5sYXN0KCksIGxhc3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0
YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9r
ZW4oKS50eXBlID09IFRva0NvbW1hKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvUGFyc2VP
YmplY3RTdGFydEV4cHJlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmNwcAppbmRleCBkYWMxYzk0ZGM1ZWIzMmNhNjBkNzhlNzY2ZTg3YWIyODE3YmFkYjIzLi4xM2Vh
OTIzMDMwNTlkNWU5NmM3NzEzZGI2YTA1NzYwYWNjMmIxMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBzZXRVcFN0YXRp
Y0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpT
T2JqZWN0KgogI2VuZGlmCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG5ldyAoZXhlYykgTmF0aXZl
RnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5wcm90b3R5
cGVGdW5jdGlvblN0cnVjdHVyZSgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJvcGVydHlO
YW1lLCBlbnRyeS0+ZnVuY3Rpb24oKSk7CiAKLSAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0RnVu
Y3Rpb24ocHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAg
ICAgIHRoaXNPYmotPnB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVy
dHlOYW1lLCBmdW5jdGlvbiwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CiAgICAgICAgIGxvY2F0aW9u
ID0gdGhpc09iai0+Z2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggMGQ2ZDk4ZmI0YWM0NDMzMmMy
OTZiMTdjZWRlMTA4YzlhMDZlNjNjNi4uNDMxODRlNTZkY2FhZWQ1ZTU0YTNkYWFhMzE2NWU3YmM0
NWY5YTAzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTMxMiw5
ICszMTIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0
ZXMoKSAmIEZ1bmN0aW9uKSB7IC8vIGZ1bmN0aW9uOiBwdXQgYXMgb3ZlcnJpZGUgcHJvcGVydHkK
ICAgICAgICAgICAgIGlmIChMSUtFTFkodmFsdWUuaXNDZWxsKCkpKQotICAgICAgICAgICAgICAg
IHRoaXNPYmotPnB1dERpcmVjdEZ1bmN0aW9uKHByb3BlcnR5TmFtZSwgdmFsdWUuYXNDZWxsKCkp
OworICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgdmFsdWUp
OworICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKCEoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIFJlYWRPbmx5KSkKICAgICAgICAgICAgIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigp
KGV4ZWMsIHRoaXNPYmosIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFya1N0YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXJrU3RhY2suaAppbmRleCBjM2NiNGYyZDcyYTg0ZGZkNjU1ZGNjOThiZTU0YTc2NWVlNTg4OWU1
Li5hZGRlN2JjOGQ5Y2E4YzI1YjUyZjhkZDdkNjE4MDZjNTg2MzU5NzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmlu
ZSBNYXJrU3RhY2tfaAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIldyaXRlQmFy
cmllci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0b3IuaD4KQEAgLTQ5LDE2ICs1MCwxOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgICAgICB7CiAgICAgICAgIH0KLQotICAgICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKEpTVmFsdWUpOwotICAgICAgICB2b2lkIGFwcGVuZChK
U0NlbGwqKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgZGVwcmVjYXRlZEFwcGVuZChKU1ZhbHVl
Kik7CisgICAgICAgIHZvaWQgZGVwcmVjYXRlZEFwcGVuZChKU0NlbGwqKik7CisgICAgICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFwcGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+Kik7Cisg
ICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFwcGVuZChEZXByZWNhdGVkUHRyPFQ+
Kik7CiAgICAgICAgIAogICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kVmFsdWVzKFJl
Z2lzdGVyKiB2YWx1ZXMsIHNpemVfdCBjb3VudCwgTWFya1NldFByb3BlcnRpZXMgcHJvcGVydGll
cyA9IE5vTnVsbFZhbHVlcykKICAgICAgICAgewogICAgICAgICAgICAgYXBwZW5kVmFsdWVzKHJl
aW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHZhbHVlcyksIGNvdW50LCBwcm9wZXJ0aWVzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmRWYWx1ZXMoSlNWYWx1
ZSogdmFsdWVzLCBzaXplX3QgY291bnQsIE1hcmtTZXRQcm9wZXJ0aWVzIHByb3BlcnRpZXMgPSBO
b051bGxWYWx1ZXMpCisgICAgICAgIHZvaWQgYXBwZW5kVmFsdWVzKEpTVmFsdWUqIHZhbHVlcywg
c2l6ZV90IGNvdW50LCBNYXJrU2V0UHJvcGVydGllcyBwcm9wZXJ0aWVzID0gTm9OdWxsVmFsdWVz
KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoY291bnQpCiAgICAgICAgICAgICAgICAgbV9t
YXJrU2V0cy5hcHBlbmQoTWFya1NldCh2YWx1ZXMsIHZhbHVlcyArIGNvdW50LCBwcm9wZXJ0aWVz
KSk7CkBAIC03NCw2ICs3Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBw
cml2YXRlOgorICAgICAgICB2b2lkIGludGVybmFsQXBwZW5kKEpTQ2VsbCopOworICAgICAgICB2
b2lkIGludGVybmFsQXBwZW5kKEpTVmFsdWUpOwogICAgICAgICB2b2lkIG1hcmtDaGlsZHJlbihK
U0NlbGwqKTsKIAogICAgICAgICBzdHJ1Y3QgTWFya1NldCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDA4MGQ3ZDIxZTkxNGU0MjhhMzUwYzg0
MTIwM2ZjNGExOTg2ZTljMDguLmM3OTMxNmJlYTZjOTUwNzEwNTliZjZhYzZhYWY5MjdkNTZjNjMz
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCkBA
IC04OSwxNCArODksMTQgQEAgY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmplY3Q6OmluZm8gPSB7ICJN
YXRoIiwgMCwgMCwgRXhlY1N0YXRlOjptYXRoVGFibGUgfTsKIE1hdGhPYmplY3Q6Ok1hdGhPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJFIiksIGpzTnVtYmVyKGV4cCgxLjApKSwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkxOMiIpLCBqc051bWJlcihsb2coMi4wKSksIERvbnRE
ZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihJZGVudGlmaWVyKGV4ZWMsICJMTjEwIiksIGpzTnVtYmVyKGxvZygxMC4wKSksIERvbnRE
ZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihJZGVudGlmaWVyKGV4ZWMsICJMT0cyRSIpLCBqc051bWJlcigxLjAgLyBsb2coMi4wKSks
IERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJMT0cxMEUiKSwganNOdW1iZXIoMS4wIC8gbG9n
KDEwLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlBJIiksIGpzTnVtYmVyKHBpRG91
YmxlKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlNRUlQxXzIiKSwganNOdW1iZXIoc3Fy
dCgwLjUpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlNRUlQyIiksIGpzTnVtYmVyKHNx
cnQoMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywg
IkUiKSwganNOdW1iZXIoZXhwKDEuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25s
eSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJMTjIiKSwganNOdW1iZXIobG9nKDIuMCkpLCBEb250RGVsZXRlIHwg
RG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJMTjEwIiksIGpzTnVtYmVyKGxvZygx
MC4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkxP
RzJFIiksIGpzTnVtYmVyKDEuMCAvIGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwg
UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihleGVjLCAiTE9HMTBFIiksIGpzTnVtYmVyKDEuMCAvIGxvZygxMC4w
KSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlBJIiks
IGpzTnVtYmVyKHBpRG91YmxlKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCAiU1FSVDFfMiIpLCBqc051bWJlcihzcXJ0KDAuNSkpLCBEb250RGVsZXRlIHwg
RG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJTUVJUMiIpLCBqc051bWJlcihzcXJ0
KDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CiB9CiAKIC8vIEVDTUEg
MTUuOApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBlYjUwOGViZDNhODhhYmVkZDYyZWFmOTQzYmYxN2Vl
NDJhZTAwZDE0Li40MjFlZWNmZDBkYmRjNzlmY2UyZWIwNDA1NWJkODQxODEzOWUwMmQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcApAQCAtMzcsOCArMzcsOCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqCiB7
CiAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoZXhlYykgTmF0aXZl
RXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5h
bWVBbmRNZXNzYWdlLCB0aGlzKTsKIAotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OyAvLyBFQ01BIDE1LjExLjcuNQotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAv
LyBFQ01BIDE1LjExLjcuNQorICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5IHwgRG9udEVudW0pOwogICAgIG1fZXJyb3JTdHJ1Y3R1cmUgPSBFcnJvckluc3RhbmNlOjpj
cmVhdGVTdHJ1Y3R1cmUocHJvdG90eXBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IDU0MDIyMGE2
MjJjNmI3ZjZkNDRkMmI2YjZlZmRhOWI0YTQ3OTUyZGEuLjRlMTAyNjhlZWIyZmUwZTZiNzUwZTBh
ZGQxNDZmN2NkNzI2ZGJlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKQEAgLTM0LDkgKzM0LDkgQEAgQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChOYXRpdmVFcnJvclByb3RvdHlwZSk7CiBOYXRpdmVFcnJvclBy
b3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKQogewotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFt
ZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCAwKTsKLSAgICBwdXREaXJlY3QoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UsIGpzU3RyaW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdl
KSwgMCk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
Y29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3Nh
Z2UpLCAwKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubWVzc2FnZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCAwKTsKKyAg
ICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuY3BwCmluZGV4IDUzNjljYTBjZmRkMmFiMDRiNDA2MDc2OWMyMjJmMjE2YmYzOGE3MTguLjIz
OGRjOTNjMzY2M2U1MzZhOTJiNmY4NDFiNzczYWUwNjhkOWMxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTU4LDEw
ICs1OCwxMCBAQCBOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIDogSW50ZXJuYWxGdW5jdGlv
bigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmll
cihleGVjLCBudW1iZXJQcm90b3R5cGUtPmluZm8uY2xhc3NOYW1lKSkKIHsKICAgICAvLyBOdW1i
ZXIuUHJvdG90eXBlCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnByb3RvdHlwZSwgbnVtYmVyUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBudW1iZXJQcm90b3R5
cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogICAgIC8vIG5vLiBvZiBh
cmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9u
dEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEp
LCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiB9CiAKIGJvb2wgTnVtYmVyQ29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMTA0LDcgKzEwNCw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhOdW1i
ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4CiB7CiAgICAgTnVtYmVyT2JqZWN0KiBvYmplY3Qg
PSBuZXcgKGV4ZWMpIE51bWJlck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm51
bWJlck9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBkb3VibGUgbiA9IGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA/IGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpIDogMDsKLSAgICBvYmplY3Qt
PnNldEludGVybmFsVmFsdWUoanNOdW1iZXIobikpOworICAgIG9iamVjdC0+c2V0SW50ZXJuYWxW
YWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVtYmVyKG4pKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKG9iamVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJPYmplY3QuY3BwCmluZGV4IDFhN2U0NGNjZWRmZDkyNWViMWE1OTQxYTkzZDE3NzVl
MjFkMmYyYzkuLjU2OWRiZWRiNjY5ODA4MTM2YzUwNWM2NjIwMDNjMjE3YTRhOGU0NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcApAQCAtNDQs
NyArNDQsNyBAQCBKU1ZhbHVlIE51bWJlck9iamVjdDo6Z2V0SlNOdW1iZXIoKQogTnVtYmVyT2Jq
ZWN0KiBjb25zdHJ1Y3ROdW1iZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG51bWJlcikKIHsK
ICAgICBOdW1iZXJPYmplY3QqIG9iamVjdCA9IG5ldyAoZXhlYykgTnVtYmVyT2JqZWN0KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+bnVtYmVyT2JqZWN0U3RydWN0dXJlKCkpOwotICAgIG9i
amVjdC0+c2V0SW50ZXJuYWxWYWx1ZShudW1iZXIpOworICAgIG9iamVjdC0+c2V0SW50ZXJuYWxW
YWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIG51bWJlcik7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5j
cHAKaW5kZXggMGI4NmMwMDRhYTBhMDZlODM0Mjk0ZGE2NmZkZmM3ZmNmZDU3YWI3ZS4uMzU1MDg5
NDcwOWQyOGI3ODA0ODllNWEwNzJjNWU5MjlmNjkyYzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC00OSw3ICs0OSw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvUHJl
Y2lzaW9uKEV4ZWNTdGF0ZSopOwogTnVtYmVyUHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0
cnVjdHVyZSkKICAgICA6IE51bWJlck9iamVjdChzdHJ1Y3R1cmUpCiB7Ci0gICAgc2V0SW50ZXJu
YWxWYWx1ZShqc051bWJlcigwKSk7CisgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxE
YXRhKCksIGpzTnVtYmVyKDApKTsKIAogICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFk
ZGVkIGxhdGVyLCBhZnRlciBOdW1iZXJDb25zdHJ1Y3RvciBoYXMgYmVlbiBjb25zdHJ1Y3RlZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggY2EzZGNkN2MyZDUzOTNjYTg4ZTE1ZDQxYjljM2RlNGRkYzdmMjJlZS4uZjMx
ZGE2N2U1ZjE3ZDc1NzJmOWM1MjhlMjIxMzdmYjRmYjkyMjI2OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtNDcsMTAg
KzQ3LDEwIEBAIE9iamVjdENvbnN0cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiA6IEludGVybmFsRnVuY3Rpb24oJmV4
ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhl
YywgIk9iamVjdCIpKQogewogICAgIC8vIEVDTUEgMTUuMi4zLjEKLSAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90
b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpOwogICAgIAogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCi0g
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9u
dERlbGV0ZSk7CiAgICAgCiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0
UHJvdG90eXBlT2YsIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YpLCBEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMp
IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0
aW9uU3RydWN0dXJlLCAyLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciksIERvbnRF
bnVtKTsKQEAgLTExNywxNSArMTE3LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlCiAKICAg
ICBKU09iamVjdCogZGVzY3JpcHRpb24gPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKICAg
ICBpZiAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewotICAgICAgICBkZXNj
cmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZSwgZGVzY3JpcHRv
ci52YWx1ZSgpID8gZGVzY3JpcHRvci52YWx1ZSgpIDoganNVbmRlZmluZWQoKSwgMCk7Ci0gICAg
ICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLndyaXRhYmxl
LCBqc0Jvb2xlYW4oZGVzY3JpcHRvci53cml0YWJsZSgpKSwgMCk7CisgICAgICAgIGRlc2NyaXB0
aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
dmFsdWUsIGRlc2NyaXB0b3IudmFsdWUoKSA/IGRlc2NyaXB0b3IudmFsdWUoKSA6IGpzVW5kZWZp
bmVkKCksIDApOworICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRv
ci53cml0YWJsZSgpKSwgMCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGVzY3JpcHRpb24tPnB1
dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0LCBkZXNjcmlwdG9yLmdldHRlcigpID8g
ZGVzY3JpcHRvci5nZXR0ZXIoKSA6IGpzVW5kZWZpbmVkKCksIDApOwotICAgICAgICBkZXNjcmlw
dGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5zZXQsIGRlc2NyaXB0b3Iuc2V0
dGVyKCkgPyBkZXNjcmlwdG9yLnNldHRlcigpIDoganNVbmRlZmluZWQoKSwgMCk7CisgICAgICAg
IGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZ2V0LCBkZXNjcmlwdG9yLmdldHRlcigpID8gZGVzY3JpcHRvci5nZXR0ZXIoKSA6
IGpzVW5kZWZpbmVkKCksIDApOworICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnNldCwgZGVzY3JpcHRvci5zZXR0
ZXIoKSA/IGRlc2NyaXB0b3Iuc2V0dGVyKCkgOiBqc1VuZGVmaW5lZCgpLCAwKTsKICAgICB9CiAg
ICAgCi0gICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW51
bWVyYWJsZSwganNCb29sZWFuKGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKSwgMCk7Ci0gICAgZGVz
Y3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uZmlndXJhYmxlLCBq
c0Jvb2xlYW4oZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSksIDApOworICAgIGRlc2NyaXB0aW9u
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW51
bWVyYWJsZSwganNCb29sZWFuKGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKSwgMCk7CisgICAgZGVz
Y3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jb25maWd1cmFibGUsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSwg
MCk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlc2NyaXB0aW9uKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCAxMjUyMzQ1MzcxNDE1
MDJhNWJmMzY1YzcxNzhkMWU3OWI0YWIwMjcyLi42ZTg0MTIzOWFlZDc2NzY5ZDE4N2Q3NDMxOWFm
YmI2YWYxN2Y5ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5oCkBAIC00MjksNyArNDI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAvLyBT
aW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBi
ZXQgdGhhdCBpdAogICAgICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGlj
dGlvbmFyeS4KICAgICAgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5
KCkpIHsKLSAgICAgICAgICAgICAgICBhc09iamVjdChjZWxsKS0+ZmxhdHRlbkRpY3Rpb25hcnlP
YmplY3QoKTsKKyAgICAgICAgICAgICAgICBhc09iamVjdChjZWxsKS0+ZmxhdHRlbkRpY3Rpb25h
cnlPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgICAgIGlmIChz
bG90QmFzZSA9PSBjZWxsKQogICAgICAgICAgICAgICAgICAgICBzbG90T2Zmc2V0ID0gY2VsbC0+
c3RydWN0dXJlKCktPmdldChwcm9wZXJ0eU5hbWUpOyAKICAgICAgICAgICAgIH0KQEAgLTQ1NCw3
ICs0NTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFj
Y2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAg
ICAgICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAg
ICAgICAgICAgaWYgKGJhc2UtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKLSAgICAgICAg
ICAgICAgICBhc09iamVjdChiYXNlKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoKTsKKyAgICAg
ICAgICAgICAgICBhc09iamVjdChiYXNlKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCkpOwogCiAgICAgICAgICAgICArK2NvdW50OwogICAgICAgICB9CkBA
IC00NzEsNyArNDcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90OwogICAgICAgICBKU09iamVjdCogYmFzZTsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgICAgIGJhc2UgPSAqaXRlcjsKKyAgICAgICAgICAgIGJhc2UgPSBpdGVyLT5nZXQoKTsK
ICAgICAgICAgICAgIGlmIChuZXh0ID09IGVuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gaXNT
dHJpY3RQdXQgPyBKU1ZhbHVlKCkgOiBiYXNlOwogICAgICAgICAgICAgaWYgKGJhc2UtPmdldFBy
b3BlcnR5U2xvdChjYWxsRnJhbWUsIHByb3BlcnR5LCBzbG90KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmNwcAppbmRleCAzNTI5MDgw
NWNjOTE2MjE5YTAyYThkY2I0MmYzZmQ1ZTI4ZWZmNWYwLi45NWUxMDMzODQ4MWVkMDUxZDVmNzI4
MmNhNzhhMDVhMDNhOWUzMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm90b3R5cGVGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3BwCkBAIC0zNyw3ICszNyw3IEBAIFByb3RvdHlwZUZ1
bmN0aW9uOjpQcm90b3R5cGVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplCiAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogewogICAgIEFTU0VSVF9B
UkcoZnVuY3Rpb24sIGZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKIH0KIAogUHJvdG90eXBlRnVuY3Rpb246OlByb3RvdHlwZUZ1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgaW50IGxlbmd0aCwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24pCkBAIC00NSw3
ICs0NSw3IEBAIFByb3RvdHlwZUZ1bmN0aW9uOjpQcm90b3R5cGVGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0
aW9uKQogewogICAgIEFTU0VSVF9BUkcoZnVuY3Rpb24sIGZ1bmN0aW9uKTsKLSAgICBwdXREaXJl
Y3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KICAgICAKIENhbGxUeXBlIFByb3Rv
dHlwZUZ1bmN0aW9uOjpnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCmluZGV4IDRiMGIzOTQ4
ZmJiMjlmMDgyYTMxNjIxZDY2NWQzNWMzZGMyNmY3MTcuLjRjOWUwZTYyZmNlZThhMTA5MzE0NWE1
ZDZlYmM0NDEyZDY5MTY5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1B1dFByb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1B1dFByb3BlcnR5U2xvdC5oCkBAIC00NSwxNCArNDUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9wZXJ0eShK
U09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1By
b3BlcnR5KERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IGJhc2UsIHNpemVfdCBvZmZzZXQpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1fdHlwZSA9IEV4aXN0aW5nUHJvcGVydHk7CiAgICAgICAgICAg
ICBtX2Jhc2UgPSBiYXNlOwogICAgICAgICAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIHNldE5ld1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qg
b2Zmc2V0KQorICAgICAgICB2b2lkIHNldE5ld1Byb3BlcnR5KERlcHJlY2F0ZWRQdHI8SlNPYmpl
Y3Q+IGJhc2UsIHNpemVfdCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdHlwZSA9
IE5ld1Byb3BlcnR5OwogICAgICAgICAgICAgbV9iYXNlID0gYmFzZTsKQEAgLTYwLDcgKzYwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgSlNPYmplY3QqIGJhc2UoKSBjb25zdCB7IHJl
dHVybiBtX2Jhc2U7IH0KKyAgICAgICAgSlNPYmplY3QqIGJhc2UoKSBjb25zdCB7IHJldHVybiBt
X2Jhc2UuZ2V0KCk7IH0KIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQpAQCAtNzAsNyArNzAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFR5cGUgbV90eXBlOwot
ICAgICAgICBKU09iamVjdCogbV9iYXNlOworICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0
PiBtX2Jhc2U7CiAgICAgICAgIHNpemVfdCBtX29mZnNldDsKICAgICAgICAgYm9vbCBtX2lzU3Ry
aWN0TW9kZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IDMwZDNlYWI1M2E2NGFkNzI3MzEzOTIwNDM1NjNi
ZThkNWIzMTNlMDAuLjFiMzA1MTQ5ZmQ0YmMwODJjNDlmYTI3MDhkZTQ3M2JlOTZkMWUyMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTEwMCwxMCArMTAwLDEwIEBAIFJlZ0V4cENvbnN0cnVjdG9yOjpSZWdFeHBDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAg
LCBkKGFkb3B0UHRyKG5ldyBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUpKQogewogICAgIC8vIEVD
TUEgMTUuMTAuNS4xIFJlZ0V4cC5wcm90b3R5cGUKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCByZWdFeHBQcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUsIHJlZ0V4cFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwog
CiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKLSAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigy
KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKIH0K
IAogUmVnRXhwTWF0Y2hlc0FycmF5OjpSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiBleGVj
LCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCmluZGV4IDU0YzUwODJjNWU0Y2JkY2JlYjFiYjdmNDZh
NThiOTlmN2VlYWQ2ZmYuLjk3NmNmZjY0YjQ5OWNlYjA5YWZjMWIyYTI4NzEzODY3NjQxYmMxZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCkBAIC0z
NSwxMiArMzUsMTIgQEAgdm9pZCBTY29wZUNoYWluTm9kZTo6cHJpbnQoKSBjb25zdAogewogICAg
IFNjb3BlQ2hhaW5JdGVyYXRvciBzY29wZUVuZCA9IGVuZCgpOwogICAgIGZvciAoU2NvcGVDaGFp
bkl0ZXJhdG9yIHNjb3BlSXRlciA9IGJlZ2luKCk7IHNjb3BlSXRlciAhPSBzY29wZUVuZDsgKytz
Y29wZUl0ZXIpIHsKLSAgICAgICAgSlNPYmplY3QqIG8gPSAqc2NvcGVJdGVyOworICAgICAgICBE
ZXByZWNhdGVkUHRyPEpTT2JqZWN0PiBvID0gKnNjb3BlSXRlcjsKICAgICAgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydHlOYW1lcyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7CiAgICAg
ICAgIG8tPmdldFByb3BlcnR5TmFtZXMoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHByb3Bl
cnR5TmFtZXMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgcHJv
cEVuZCA9IHByb3BlcnR5TmFtZXMuZW5kKCk7CiAKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIt
LS0tLSBbc2NvcGUgJXBdIC0tLS0tXG4iLCBvKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIt
LS0tLSBbc2NvcGUgJXBdIC0tLS0tXG4iLCBvLmdldCgpKTsKICAgICAgICAgZm9yIChQcm9wZXJ0
eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgcHJvcEl0ZXIgPSBwcm9wZXJ0eU5hbWVzLmJlZ2lu
KCk7IHByb3BJdGVyICE9IHByb3BFbmQ7IHByb3BJdGVyKyspIHsKICAgICAgICAgICAgIElkZW50
aWZpZXIgbmFtZSA9ICpwcm9wSXRlcjsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMs
ICIsIG5hbWUudXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVDaGFpbi5oCmluZGV4IGIxMDRlNzUzYzIzZmNiMzZiNzI0MGY5MmViNzky
NmY0M2NhNDJhNjMuLjExZjM2OTI4NTkwMWY4OGFlYmE0OTA2YjlhZjQzYWFiZTE4YzU5MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKQEAgLTIxLDYgKzIx
LDcgQEAKICNpZm5kZWYgU2NvcGVDaGFpbl9oCiAjZGVmaW5lIFNjb3BlQ2hhaW5faAogCisjaW5j
bHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC01Miw3ICs1Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB+U2NvcGVDaGFpbk5vZGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBuZXh0ID0gMDsKLSAg
ICAgICAgICAgIG9iamVjdCA9IDA7CiAgICAgICAgICAgICBnbG9iYWxEYXRhID0gMDsKICAgICAg
ICAgICAgIGdsb2JhbE9iamVjdCA9IDA7CiAgICAgICAgICAgICBnbG9iYWxUaGlzID0gMDsKQEAg
LTYwLDcgKzYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgICAgICBTY29wZUNo
YWluTm9kZSogbmV4dDsKLSAgICAgICAgSlNPYmplY3QqIG9iamVjdDsKKyAgICAgICAgRGVwcmVj
YXRlZFB0cjxKU09iamVjdD4gb2JqZWN0OwogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGE7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Q7CiAgICAgICAgIEpTT2Jq
ZWN0KiBnbG9iYWxUaGlzOwpAQCAtMTMxLDggKzEzMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBKU09iamVjdCogY29uc3QgJiBvcGVyYXRvcioo
KSBjb25zdCB7IHJldHVybiBtX25vZGUtPm9iamVjdDsgfQotICAgICAgICBKU09iamVjdCogY29u
c3QgKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVyYXRvciooKSk7IH0KKyAgICAg
ICAgRGVwcmVjYXRlZFB0cjxKU09iamVjdD4gY29uc3QgJiBvcGVyYXRvciooKSBjb25zdCB7IHJl
dHVybiBtX25vZGUtPm9iamVjdDsgfQorICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0PiBj
b25zdCAqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQogICAg
IAogICAgICAgICBTY29wZUNoYWluSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IG1fbm9kZSA9IG1f
bm9kZS0+bmV4dDsgcmV0dXJuICp0aGlzOyB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBTY29wZUNoYWluTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbm9kZTsgfQogCi0gICAgICAgIEpTT2JqZWN0KiB0b3AoKSBjb25zdCB7IHJldHVybiBtX25v
ZGUtPm9iamVjdDsgfQorICAgICAgICBKU09iamVjdCogdG9wKCkgY29uc3QgeyByZXR1cm4gbV9u
b2RlLT5vYmplY3QuZ2V0KCk7IH0KIAogICAgICAgICBTY29wZUNoYWluSXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBtX25vZGUtPmJlZ2luKCk7IH0KICAgICAgICAgU2NvcGVDaGFpbkl0
ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+ZW5kKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW5NYXJrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluTWFyay5oCmluZGV4IDk4NGQxMDEzNjhh
OWJjOWNhMDc4ZGEyN2FjY2IwMmY3NWExZGVlZDYuLmZhYTQ4MjRjZGZjY2Y3ZjIyNGRhYjYwYzMw
YjQxMzRmYzNkNmY4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlQ2hhaW5NYXJrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Nv
cGVDaGFpbk1hcmsuaApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxp
bmUgdm9pZCBTY29wZUNoYWluOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKSBj
b25zdAogICAgIHsKICAgICAgICAgZm9yIChTY29wZUNoYWluTm9kZSogbiA9IG1fbm9kZTsgbjsg
biA9IG4tPm5leHQpCi0gICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG4tPm9iamVjdCk7Cisg
ICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZuLT5vYmplY3QpOwogICAgIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
bWFsbFN0cmluZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJp
bmdzLmNwcAppbmRleCA1NjE0OTMyZmZlMDBlZjliZmI2OTJmYTRjNzJlYzMxYmU0ZGJkZjExLi5j
NjNhMjBkYTEwYjFkMDk0NzYxOTE4YjYyMmUyYWQ0YzE0MWQ2ODVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzVG9T
dG9yZSA9IDB4MTAwOwogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNNYXJrZWQoSlNTdHJpbmcqIHN0
cmluZykKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc01hcmtlZChKU0NlbGwqIHN0cmluZykKIHsKICAg
ICByZXR1cm4gc3RyaW5nICYmIEhlYXA6OmlzQ2VsbE1hcmtlZChzdHJpbmcpOwogfQpAQCAtODMs
OSArODMsOSBAQCB2b2lkIFNtYWxsU3RyaW5nczo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFy
a1N0YWNrKQogICAgICAgIHNvLCBpdCdzIHByb2JhYmx5IHJlYXNvbmFibGUgdG8gbWFyayB0aGUg
cmVzdC4gSWYgbm90LCB3ZSBjbGVhciB0aGUgY2FjaGUuCiAgICAgICovCiAKLSAgICBib29sIGlz
QW55U3RyaW5nTWFya2VkID0gaXNNYXJrZWQobV9lbXB0eVN0cmluZyk7CisgICAgYm9vbCBpc0Fu
eVN0cmluZ01hcmtlZCA9IGlzTWFya2VkKG1fZW1wdHlTdHJpbmcuZ2V0KCkpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzVG9TdG9yZSAmJiAhaXNBbnlTdHJpbmdN
YXJrZWQ7ICsraSkKLSAgICAgICAgaXNBbnlTdHJpbmdNYXJrZWQgPSBpc01hcmtlZChtX3Npbmds
ZUNoYXJhY3RlclN0cmluZ3NbaV0pOworICAgICAgICBpc0FueVN0cmluZ01hcmtlZCA9IGlzTWFy
a2VkKG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tpXS5nZXQoKSk7CiAgICAgCiAgICAgaWYgKCFp
c0FueVN0cmluZ01hcmtlZCkgewogICAgICAgICBjbGVhcigpOwpAQCAtOTMsMTAgKzkzLDEwIEBA
IHZvaWQgU21hbGxTdHJpbmdzOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAg
ICAgfQogICAgIAogICAgIGlmIChtX2VtcHR5U3RyaW5nKQotICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKG1fZW1wdHlTdHJpbmcpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2VtcHR5U3Ry
aW5nKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyc1RvU3RvcmU7
ICsraSkgewogICAgICAgICBpZiAobV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2ldKQotICAgICAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZChtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbaV0pOworICAg
ICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2ldKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nt
YWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdz
LmgKaW5kZXggYWM4NGZlODg3MzU1MTY5OGNlNjk4OTMxM2I2ZWUxN2YxODhiNjQyMy4uZWU3OTVi
NjIyMzgxNTQ4NGZjYmFmY2MxYmNmZDZjOWQ3MDQ4NTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUg
U21hbGxTdHJpbmdzX2gKIAogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlICJXcml0ZUJh
cnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvRml4ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KIApAQCAtNDcsMTMgKzQ4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIW1fZW1wdHlTdHJpbmcpCiAgICAgICAgICAgICAgICAgY3JlYXRlRW1w
dHlTdHJpbmcoZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9lbXB0eVN0cmluZzsK
KyAgICAgICAgICAgIHJldHVybiBtX2VtcHR5U3RyaW5nLmdldCgpOwogICAgICAgICB9CiAgICAg
ICAgIEpTU3RyaW5nKiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCB1bnNpZ25lZCBjaGFyIGNoYXJhY3RlcikKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXSkKICAgICAgICAgICAgICAgICBj
cmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgY2hhcmFjdGVyKTsKLSAgICAg
ICAgICAgIHJldHVybiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXTsKKyAgICAg
ICAgICAgIHJldHVybiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXS5nZXQoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIFN0cmluZ0ltcGwqIHNpbmdsZUNoYXJhY3RlclN0cmluZ1Jl
cCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7CkBAIC02MywxNCArNjQsMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgdW5zaWduZWQgY291bnQoKSBjb25zdDsKICNpZiBFTkFCTEUoSklU
KQotICAgICAgICBKU1N0cmluZyoqIHNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSB7IHJldHVybiBt
X3NpbmdsZUNoYXJhY3RlclN0cmluZ3MuZGF0YSgpOyB9CisgICAgICAgIEpTQ2VsbCoqIHNpbmds
ZUNoYXJhY3RlclN0cmluZ3MoKSB7IHJldHVybiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbMF0u
c2xvdCgpOyB9CiAjZW5kaWYKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGNyZWF0ZUVtcHR5
U3RyaW5nKEpTR2xvYmFsRGF0YSopOwogICAgICAgICB2b2lkIGNyZWF0ZVNpbmdsZUNoYXJhY3Rl
clN0cmluZyhKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCBjaGFyKTsKIAotICAgICAgICBKU1N0cmlu
ZyogbV9lbXB0eVN0cmluZzsKLSAgICAgICAgRml4ZWRBcnJheTxKU1N0cmluZyosIDB4MTAwPiBt
X3NpbmdsZUNoYXJhY3RlclN0cmluZ3M7CisgICAgICAgIERlcHJlY2F0ZWRQdHI8SlNTdHJpbmc+
IG1fZW1wdHlTdHJpbmc7CisgICAgICAgIEZpeGVkQXJyYXk8RGVwcmVjYXRlZFB0cjxKU1N0cmlu
Zz4sIDB4MTAwPiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3M7CiAgICAgICAgIE93blB0cjxTbWFs
bFN0cmluZ3NTdG9yYWdlPiBtX3N0b3JhZ2U7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCmluZGV4IDEwMTY1MGMz
YzIxYjVkYjI4MmFkMDg2N2Q2MzNmNDc1Yjk4OTFmNDEuLjYwNDQ3M2JkYzI4MzgyNWU2NjgwNWY0
MWRiOWRhNjAzOGIxM2U0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgU3RyaW5nQ29uc3Ry
dWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamUKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgc3RyaW5nUHJvdG90eXBl
LT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAgICAvLyBFQ01BIDE1LjUuMy4xIFN0cmlu
Zy5wcm90b3R5cGUKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBzdHJpbmdQcm90b3R5cGUsIFJlYWRPbmx5IHwgRG9udEVudW0g
fCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHN0cmluZ1Byb3RvdHlw
ZSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogCiAgICAgLy8gRUNNQSAxNS41
LjMuMiBmcm9tQ2hhckNvZGUoKQogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShKSVRfT1BUSU1J
WkVfTkFUSVZFX0NBTEwpCkBAIC02Miw3ICs2Miw3IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJp
bmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMp
IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0
aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZnJvbUNoYXJDb2RlLCBzdHJp
bmdGcm9tQ2hhckNvZGUpLCBEb250RW51bSk7CiAjZW5kaWYKICAgICAvLyBuby4gb2YgYXJndW1l
bnRzIGZvciBjb25zdHJ1Y3RvcgotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVt
IHwgRG9udERlbGV0ZSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCiAvLyBFQ01BIDE1LjUuMgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggZGMy
NzYxODgxYTQ2MWI0YzUwYWRkNzU0Y2JmYjE2NmFhZTI5MGJkMy4uNjNlNDE0NDU2MzFkNTQxODIz
ZGQ1NThhYTI4MTEzOWI2YjM0NDkwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0zMiwxOSArMzIsMTkgQEAgY29uc3QgQ2xhc3NJbmZv
IFN0cmluZ09iamVjdDo6aW5mbyA9IHsgIlN0cmluZyIsIDAsIDAsIDAgfTsKIFN0cmluZ09iamVj
dDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmUpCiAgICAgOiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAg
IHNldEludGVybmFsVmFsdWUoanNFbXB0eVN0cmluZyhleGVjKSk7CisgICAgc2V0SW50ZXJuYWxW
YWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzRW1wdHlTdHJpbmcoZXhlYykpOwogfQogCi1TdHJp
bmdPYmplY3Q6OlN0cmluZ09iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVj
dHVyZSwgSlNTdHJpbmcqIHN0cmluZykKK1N0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1
cmUsIEpTU3RyaW5nKiBzdHJpbmcpCiAgICAgOiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQog
ewotICAgIHNldEludGVybmFsVmFsdWUoc3RyaW5nKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVlKGds
b2JhbERhdGEsIHN0cmluZyk7CiB9CiAKIFN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNT
dGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmIHN0cmluZykKICAgICA6IEpTV3JhcHBlck9iamVjdChzdHJ1Y3R1cmUpCiB7Ci0g
ICAgc2V0SW50ZXJuYWxWYWx1ZShqc1N0cmluZyhleGVjLCBzdHJpbmcpKTsKKyAgICBzZXRJbnRl
cm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNTdHJpbmcoZXhlYywgc3RyaW5nKSk7CiB9
CiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggZTNhZGQ3
N2I5MmJiZmY1ODQzMTg2YjQ2ZGVjNGVkNWNlZGMwNzczOC4uMDM0ODhmNTcxZTcwNzUzNzlkZjhk
ZWYzODViY2I3NTAwNGU5ZDA1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmgKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1dyYXBwZXJPYmplY3Q6OlN0cnVjdHVyZUZsYWdz
OwotICAgICAgICBTdHJpbmdPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlNT
dHJpbmcqKTsKKyAgICAgICAgU3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYsIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4sIEpTU3RyaW5nKik7CiAgIH07CiAKICAgICBTdHJpbmdPYmplY3Qq
IGFzU3RyaW5nT2JqZWN0KEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggOGIzZDA1NmM4ZWFhYzg2YmJiNDNkZjQx
OWRmNTkzNGQ1OGFkNmQ0Yy4uNmNmMDc5MjE5Yjk3MjY3OTM0NjNhNGIzNmMwM2ZkNDIyZmRlNDlm
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgU3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQcm90b3R5
cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAg
IHB1dEFub255bW91c1ZhbHVlKDAsIGdsb2JhbE9iamVjdCk7CiAgICAgLy8gVGhlIGNvbnN0cnVj
dG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIsIGFmdGVyIFN0cmluZ0NvbnN0cnVjdG9yIGhhcyBiZWVu
IGJ1aWx0Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIGJvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCAmc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCmluZGV4IDAxNzllZWRiMGM0OWNlMTdkN2FjYTU5YzY5NGZkOWI1Yjk5ZWJlZGYu
LmU4ZjVkN2E5OTc5MTBkNmJmY2E5NzI5MWQ3Y2E0OTI4NGU0ZWI3YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIFN0
cnVjdHVyZTo6U3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlw
ZUluZm8sIHVuc2lnbmVkIGFub255CiAgICAgbV90cmFuc2l0aW9ucy5tX3NpbmdsZVRyYW5zaXRp
b24gPSAwOwogCiAgICAgQVNTRVJUKG1fcHJvdG90eXBlKTsKLSAgICBBU1NFUlQobV9wcm90b3R5
cGUuaXNPYmplY3QoKSB8fCBtX3Byb3RvdHlwZS5pc051bGwoKSk7CisgICAgQVNTRVJUKG1fcHJv
dG90eXBlLT5pc09iamVjdCgpIHx8IG1fcHJvdG90eXBlLT5pc051bGwoKSk7CiAKICNpZm5kZWYg
TkRFQlVHCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQpAQCAtNDc2LDcgKzQ3Niw3
IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlv
bihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uCiAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uLnJl
bGVhc2UoKTsKICAgICB9CiAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3Jl
YXRlKHN0cnVjdHVyZS0+bV9wcm90b3R5cGUsIHN0cnVjdHVyZS0+dHlwZUluZm8oKSwgc3RydWN0
dXJlLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNp
dGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUtPm1fcHJvdG90eXBlLmdldCgpLCBzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCksIHN0cnVjdHVyZS0+YW5vbnltb3VzU2xvdENvdW50KCkpOwogCiAgICAgdHJhbnNp
dGlvbi0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbiA9IHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5
cGVDaGFpbjsKICAgICB0cmFuc2l0aW9uLT5tX3ByZXZpb3VzID0gc3RydWN0dXJlOwpAQCAtNTk1
LDcgKzU5NSw3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFy
eVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERpCiB7CiAgICAgQVNTRVJUKCFzdHJ1
Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIAotICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlLT5tX3Byb3RvdHlwZSwgc3RydWN0
dXJlLT50eXBlSW5mbygpLCBzdHJ1Y3R1cmUtPmFub255bW91c1Nsb3RDb3VudCgpKTsKKyAgICBS
ZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZS0+bV9wcm90b3R5
cGUuZ2V0KCksIHN0cnVjdHVyZS0+dHlwZUluZm8oKSwgc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90
Q291bnQoKSk7CiAgICAgdHJhbnNpdGlvbi0+bV9kaWN0aW9uYXJ5S2luZCA9IGtpbmQ7CiAgICAg
dHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSA9IHN0cnVjdHVyZS0+bV9wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eTsKICAgICB0cmFuc2l0aW9uLT5tX2hhc0dldHRlclNldHRlclBy
b3BlcnRpZXMgPSBzdHJ1Y3R1cmUtPm1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsKQEAgLTYy
MCw3ICs2MjAsNyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjp0b1VuY2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdAogICAgIHJldHVybiB0b0RpY3Rp
b25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSwgVW5jYWNoZWREaWN0aW9uYXJ5S2luZCk7CiB9CiAK
LVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0
dXJlKEpTT2JqZWN0KiBvYmplY3QpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpm
bGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2Jq
ZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKGlzRGljdGlvbmFyeSgpKTsKICAgICBpZiAoaXNV
bmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewpAQCAtNjUxLDcgKzY1MSw3IEBAIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTT2JqZWN0
KiBvYmplY3QpCiAgICAgICAgIAogICAgICAgICAvLyBDb3B5IHRoZSBvcmlnaW5hbCBwcm9wZXJ0
eSB2YWx1ZXMgaW50byB0aGVpciBmaW5hbCBsb2NhdGlvbnMKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7IGkrKykKLSAgICAgICAgICAgIG9iamVjdC0+cHV0
RGlyZWN0T2Zmc2V0KGFub255bW91c1Nsb3RDb3VudCArIGksIHZhbHVlc1tpXSk7CisgICAgICAg
ICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBhbm9ueW1vdXNTbG90Q291
bnQgKyBpLCB2YWx1ZXNbaV0pOwogCiAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUtPmRlbGV0
ZWRPZmZzZXRzKSB7CiAgICAgICAgICAgICBkZWxldGUgbV9wcm9wZXJ0eVRhYmxlLT5kZWxldGVk
T2Zmc2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXgg
ZjQ4MDA1MWUwYjg2ODgxNDk2MThiMzcxYWY1N2NlMThiNzE2YTRjOC4uNzc3MjRhY2ZmMzU0NjYw
YzgyNTIyYTdhNTc1MTQ4ZjZlODlmNzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKQEAgLTgwLDcgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNp
dGlvbihTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0
b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKik7CiAKLSAgICAgICAg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTT2JqZWN0
Kik7CisgICAgICAgIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBmbGF0dGVuRGljdGlvbmFyeVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwogCiAgICAgICAgIH5TdHJ1Y3R1cmUoKTsK
IApAQCAtOTQsNyArOTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBjb25zdCBUeXBl
SW5mbyYgdHlwZUluZm8oKSBjb25zdCB7IHJldHVybiBtX3R5cGVJbmZvOyB9CiAKLSAgICAgICAg
SlNWYWx1ZSBzdG9yZWRQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZTsgfQor
ICAgICAgICBKU1ZhbHVlIHN0b3JlZFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90
eXBlLmdldCgpOyB9CisgICAgICAgIERlcHJlY2F0ZWRQdHI8VW5rbm93bj4qIHN0b3JlZFByb3Rv
dHlwZVNsb3QoKSB7IHJldHVybiAmbV9wcm90b3R5cGU7IH0KICAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZUNoYWlu
KiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKIApAQCAtMjA2LDcgKzIwNyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFR5cGVJbmZvIG1fdHlwZUluZm87CiAKLSAgICAg
ICAgSlNWYWx1ZSBtX3Byb3RvdHlwZTsKKyAgICAgICAgRGVwcmVjYXRlZFB0cjxVbmtub3duPiBt
X3Byb3RvdHlwZTsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U3RydWN0dXJlQ2hhaW4+IG1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW47CiAKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9wcmV2aW91
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKaW5kZXggYzA2M2Rk
Mjc4YTYxZGRkNDQ0ZTZhNTJlYzM5MDEwYjU0MmNjZDA5ZS4uOTE1YWQwZjZlMjBkNzkxZDhhNzc5
MDJlMDg0MTE0NTk3MTE1MjIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a0dDTWFwLmgKQEAgLTQ2LDIyICs0NiwyOSBAQCBjbGFzcyBXZWFrR0NNYXAgewogICAgICovCiAK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8S2V5VHlwZSwgTWFwcGVkVHlw
ZT46Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxLZXlU
eXBlLCBNYXBwZWRUeXBlPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlw
ZWRlZiB0eXBlbmFtZSBIYXNoTWFwPEtleVR5cGUsIERlcHJlY2F0ZWRQdHI8TWFwcGVkVHlwZT4g
Pjo6aXRlcmF0b3IgaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPEtleVR5
cGUsIERlcHJlY2F0ZWRQdHI8TWFwcGVkVHlwZT4gPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRl
cmF0b3I7CiAgICAgCiAgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9tYXAuaXNFbXB0eSgp
OyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQogCi0gICAgTWFwcGVkVHlw
ZSBnZXQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdDsKLSAgICBwYWlyPGl0ZXJhdG9yLCBib29s
PiBzZXQoY29uc3QgS2V5VHlwZSYsIGNvbnN0IE1hcHBlZFR5cGUmKTsgCi0gICAgTWFwcGVkVHlw
ZSB0YWtlKGNvbnN0IEtleVR5cGUmIGtleSk7CisgICAgTWFwcGVkVHlwZSogZ2V0KGNvbnN0IEtl
eVR5cGUmKSBjb25zdDsKKyAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlw
ZSYsIE1hcHBlZFR5cGUqKTsgCisgICAgTWFwcGVkVHlwZSogdGFrZShjb25zdCBLZXlUeXBlJik7
CiAKICAgICAvLyBUaGVzZSB1bmNoZWNrZWQgZnVuY3Rpb25zIHByb3ZpZGUgYWNjZXNzIHRvIGEg
dmFsdWUgZXZlbiBpZiB0aGUgdmFsdWUncwogICAgIC8vIG1hcmsgYml0IGlzIG5vdCBzZXQuIFRo
aXMgaXMgdXNlZCwgYW1vbmcgb3RoZXIgdGhpbmdzLCB0byByZXRyaWV2ZSB2YWx1ZXMKICAgICAv
LyBkdXJpbmcgdGhlIEdDIG1hcmsgcGhhc2UsIHdoaWNoIGJlZ2lucyBieSBjbGVhcmluZyBhbGwg
bWFyayBiaXRzLgogCi0gICAgTWFwcGVkVHlwZSB1bmNoZWNrZWRHZXQoY29uc3QgS2V5VHlwZSYg
a2V5KSBjb25zdCB7IHJldHVybiBtX21hcC5nZXQoa2V5KTsgfQotICAgIGJvb2wgdW5jaGVja2Vk
UmVtb3ZlKGNvbnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRUeXBlJik7CisgICAgTWFwcGVkVHlw
ZSogdW5jaGVja2VkR2V0KGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QgeyByZXR1cm4gbV9tYXAu
Z2V0KGtleSkuZ2V0KCk7IH0KKyAgICBEZXByZWNhdGVkUHRyPE1hcHBlZFR5cGU+KiB1bmNoZWNr
ZWRHZXRTbG90KGNvbnN0IEtleVR5cGUmIGtleSkKKyAgICB7CisgICAgICAgIGl0ZXJhdG9yIGl0
ZXIgPSBtX21hcC5maW5kKGtleSk7CisgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAmaXRlci0+c2Vjb25kOworICAg
IH0KKyAgICBib29sIHVuY2hlY2tlZFJlbW92ZShjb25zdCBLZXlUeXBlJiwgTWFwcGVkVHlwZSop
OwogCiAgICAgaXRlcmF0b3IgdW5jaGVja2VkQmVnaW4oKSB7IHJldHVybiBtX21hcC5iZWdpbigp
OyB9CiAgICAgaXRlcmF0b3IgdW5jaGVja2VkRW5kKCkgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0K
QEAgLTY5LDU0ICs3Niw1NCBAQCBwdWJsaWM6CiAgICAgY29uc3RfaXRlcmF0b3IgdW5jaGVja2Vk
QmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0
b3IgdW5jaGVja2VkRW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KIAotICAgIGJv
b2wgaXNWYWxpZChpdGVyYXRvciBpdCkgY29uc3QgeyByZXR1cm4gSGVhcDo6aXNDZWxsTWFya2Vk
KGl0LT5zZWNvbmQpOyB9Ci0gICAgYm9vbCBpc1ZhbGlkKGNvbnN0X2l0ZXJhdG9yIGl0KSBjb25z
dCB7IHJldHVybiBIZWFwOjppc0NlbGxNYXJrZWQoaXQtPnNlY29uZCk7IH0KKyAgICBib29sIGlz
VmFsaWQoaXRlcmF0b3IgaXQpIGNvbnN0IHsgcmV0dXJuIEhlYXA6OmlzQ2VsbE1hcmtlZChpdC0+
c2Vjb25kLmdldCgpKTsgfQorICAgIGJvb2wgaXNWYWxpZChjb25zdF9pdGVyYXRvciBpdCkgY29u
c3QgeyByZXR1cm4gSGVhcDo6aXNDZWxsTWFya2VkKGl0LT5zZWNvbmQuZ2V0KCkpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgSGFzaE1hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPiBtX21hcDsKKyAgICBIYXNo
TWFwPEtleVR5cGUsIERlcHJlY2F0ZWRQdHI8TWFwcGVkVHlwZT4gPiBtX21hcDsKIH07CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+Ci1pbmxpbmUgTWFw
cGVkVHlwZSBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46OmdldChjb25zdCBLZXlUeXBl
JiBrZXkpIGNvbnN0CitpbmxpbmUgTWFwcGVkVHlwZSogV2Vha0dDTWFwPEtleVR5cGUsIE1hcHBl
ZFR5cGU+OjpnZXQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAogewotICAgIE1hcHBlZFR5cGUg
cmVzdWx0ID0gbV9tYXAuZ2V0KGtleSk7Ci0gICAgaWYgKHJlc3VsdCA9PSBIYXNoVHJhaXRzPE1h
cHBlZFR5cGU+OjplbXB0eVZhbHVlKCkpCisgICAgTWFwcGVkVHlwZSogcmVzdWx0ID0gbV9tYXAu
Z2V0KGtleSkuZ2V0KCk7CisgICAgaWYgKHJlc3VsdCA9PSBIYXNoVHJhaXRzPE1hcHBlZFR5cGUq
Pjo6ZW1wdHlWYWx1ZSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGlmICghSGVhcDo6
aXNDZWxsTWFya2VkKHJlc3VsdCkpCi0gICAgICAgIHJldHVybiBIYXNoVHJhaXRzPE1hcHBlZFR5
cGU+OjplbXB0eVZhbHVlKCk7CisgICAgICAgIHJldHVybiBIYXNoVHJhaXRzPE1hcHBlZFR5cGUq
Pjo6ZW1wdHlWYWx1ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+Ci1NYXBwZWRUeXBlIFdlYWtHQ01hcDxL
ZXlUeXBlLCBNYXBwZWRUeXBlPjo6dGFrZShjb25zdCBLZXlUeXBlJiBrZXkpCitNYXBwZWRUeXBl
KiBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46OnRha2UoY29uc3QgS2V5VHlwZSYga2V5
KQogewotICAgIE1hcHBlZFR5cGUgcmVzdWx0ID0gbV9tYXAudGFrZShrZXkpOwotICAgIGlmIChy
ZXN1bHQgPT0gSGFzaFRyYWl0czxNYXBwZWRUeXBlPjo6ZW1wdHlWYWx1ZSgpKQorICAgIE1hcHBl
ZFR5cGUqIHJlc3VsdCA9IG1fbWFwLnRha2Uoa2V5KS5nZXQoKTsKKyAgICBpZiAocmVzdWx0ID09
IEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+OjplbXB0eVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgaWYgKCFIZWFwOjppc0NlbGxNYXJrZWQocmVzdWx0KSkKLSAgICAgICAgcmV0
dXJuIEhhc2hUcmFpdHM8TWFwcGVkVHlwZT46OmVtcHR5VmFsdWUoKTsKKyAgICAgICAgcmV0dXJu
IEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+OjplbXB0eVZhbHVlKCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4K
LXBhaXI8dHlwZW5hbWUgSGFzaE1hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6aXRlcmF0b3IsIGJv
b2w+IFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtl
eSwgY29uc3QgTWFwcGVkVHlwZSYgdmFsdWUpCitwYWlyPHR5cGVuYW1lIFdlYWtHQ01hcDxLZXlU
eXBlLCBNYXBwZWRUeXBlPjo6aXRlcmF0b3IsIGJvb2w+IFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBw
ZWRUeXBlPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkVHlwZSogdmFsdWUpCiB7CiAg
ICAgSGVhcDo6bWFya0NlbGwodmFsdWUpOyAvLyBJZiB2YWx1ZSBpcyBuZXdseSBhbGxvY2F0ZWQs
IGl0J3Mgbm90IG1hcmtlZCwgc28gbWFyayBpdCBub3cuCiAgICAgcGFpcjxpdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgdmFsdWUpOwogICAgIGlmICghcmVzdWx0LnNlY29u
ZCkgeyAvLyBwcmUtZXhpc3RpbmcgZW50cnkKLSAgICAgICAgcmVzdWx0LnNlY29uZCA9ICFIZWFw
Ojppc0NlbGxNYXJrZWQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICByZXN1bHQuc2Vj
b25kID0gIUhlYXA6OmlzQ2VsbE1hcmtlZChyZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKSk7CiAg
ICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gdmFsdWU7CiAgICAgfQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5
cGU+Ci1ib29sIFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6dW5jaGVja2VkUmVtb3Zl
KGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgdmFsdWUpCitib29sIFdlYWtH
Q01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6dW5jaGVja2VkUmVtb3ZlKGNvbnN0IEtleVR5cGUm
IGtleSwgTWFwcGVkVHlwZSogdmFsdWUpCiB7CiAgICAgaXRlcmF0b3IgaXQgPSBtX21hcC5maW5k
KGtleSk7CiAgICAgaWYgKGl0ID09IG1fbWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKGl0LT5zZWNvbmQgIT0gdmFsdWUpCisgICAgaWYgKGl0LT5zZWNvbmQuZ2V0KCkg
IT0gdmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX21hcC5yZW1vdmUoaXQpOwog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV3JpdGVCYXJyaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJh
cnJpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NTU4NjE0MTA2YTA2OTUxODE2NGJhYmQ4MzNjZDVlMjZjNTFm
N2RlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3Jp
dGVCYXJyaWVyLmgKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdyaXRl
QmFycmllcl9oCisjZGVmaW5lIFdyaXRlQmFycmllcl9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgSlNDZWxsOworY2xhc3MgSlNHbG9iYWxEYXRhOwor
Cit0eXBlZGVmIGVudW0geyB9IFVua25vd247CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBE
ZXByZWNhdGVkUHRyIHsKK3B1YmxpYzoKKyAgICBEZXByZWNhdGVkUHRyKCkgOiBtX2NlbGwoMCkg
eyB9CisgICAgRGVwcmVjYXRlZFB0cihUKiBjZWxsKSA6IG1fY2VsbChyZWludGVycHJldF9jYXN0
PEpTQ2VsbCo+KGNlbGwpKSB7IH0KKyAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PFQqPihtX2NlbGwpOyB9CisgICAgVCogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8VCo+KG1fY2VsbCk7IH0KKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fY2VsbCk7IH0KKyAgICAKKyAgICBKU0NlbGwqKiBz
bG90KCkgeyByZXR1cm4gJm1fY2VsbDsgfQorICAgIAorICAgIHR5cGVkZWYgVCogKERlcHJlY2F0
ZWRQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJv
b2xUeXBlKigpIGNvbnN0IHsgcmV0dXJuIG1fY2VsbCA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVj
aWZpZWRCb29sVHlwZSo+KDEpIDogMDsgfQorCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhbV9jZWxsOyB9CisKK3Byb3RlY3RlZDoKKyAgICBKU0NlbGwqIG1fY2VsbDsKK307
CisKK3RlbXBsYXRlIDw+IGNsYXNzIERlcHJlY2F0ZWRQdHI8VW5rbm93bj4geworcHVibGljOgor
ICAgIERlcHJlY2F0ZWRQdHIoKSB7IH0KKyAgICBEZXByZWNhdGVkUHRyKEpTVmFsdWUgdmFsdWUp
IDogbV92YWx1ZSh2YWx1ZSkgeyB9CisgICAgRGVwcmVjYXRlZFB0cihKU0NlbGwqIHZhbHVlKSA6
IG1fdmFsdWUodmFsdWUpIHsgfQorICAgIGNvbnN0IEpTVmFsdWUmIGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KKyAgICBjb25zdCBKU1ZhbHVlKiBvcGVyYXRvciooKSBjb25zdCB7IHJl
dHVybiAmbV92YWx1ZTsgfQorICAgIGNvbnN0IEpTVmFsdWUqIG9wZXJhdG9yLT4oKSBjb25zdCB7
IHJldHVybiAmbV92YWx1ZTsgfQorICAgIAorICAgIEpTVmFsdWUqIHNsb3QoKSB7IHJldHVybiAm
bV92YWx1ZTsgfQorICAgIAorICAgIHR5cGVkZWYgSlNWYWx1ZSAoRGVwcmVjYXRlZFB0cjo6KlVu
c3BlY2lmaWVkQm9vbFR5cGUpOworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29s
VHlwZSo+KDEpIDogMDsgfQorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
dmFsdWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgSlNWYWx1ZSBtX3ZhbHVlOworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBXcml0ZUJhcnJpZXJDaGVjayB7CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgSXNKU1ZhbHVlID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
V3JpdGVCYXJyaWVyQ2hlY2s8SlNWYWx1ZT4geworICAgIHN0YXRpYyBjb25zdCBib29sIElzSlNW
YWx1ZSA9IHRydWU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJy
aWVyQmFzZSB7CitwdWJsaWM6CisgICAgQ09NUElMRV9BU1NFUlQoIVdyaXRlQmFycmllckNoZWNr
PFQ+OjpJc0pTVmFsdWUsIFdyaXRlQmFycmllcl9KU1ZhbHVlX2lzX2ludmFsaWRfX3VzZV91bmtu
b3duKTsKKyAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmLCBjb25zdCBKU0NlbGwqLCBUKiB2YWx1
ZSkgeyB0aGlzLT5tX2NlbGwgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsgfQor
ICAgIAorICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG1f
Y2VsbCk7IH0KKyAgICBUKiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
Kj4obV9jZWxsKTsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxUKj4obV9jZWxsKTsgfQorICAgIAorICAgIEpTQ2VsbCoqIHNsb3QoKSB7IHJldHVybiAm
bV9jZWxsOyB9CisgICAgCisgICAgdHlwZWRlZiBUKiAoV3JpdGVCYXJyaWVyQmFzZTo6KlVuc3Bl
Y2lmaWVkQm9vbFR5cGUpOworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29u
c3QgeyByZXR1cm4gbV9jZWxsID8gcmVpbnRlcnByZXRfY2FzdDxVbnNwZWNpZmllZEJvb2xUeXBl
Kj4oMSkgOiAwOyB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAh
bV9jZWxsOyB9CisKK3Byb3RlY3RlZDoKKyAgICBKU0NlbGwqIG1fY2VsbDsKK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXcml0ZUJhcnJpZXIgOiBwdWJsaWMgV3JpdGVCYXJyaWVy
QmFzZTxUPiB7CitwdWJsaWM6CisgICAgV3JpdGVCYXJyaWVyKCkgeyB0aGlzLT5tX2NlbGwgPSAw
OyB9CisgICAgV3JpdGVCYXJyaWVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlND
ZWxsKiBvd25lciwgVCogdmFsdWUpCisgICAgeworICAgICAgICBzZXQoZ2xvYmFsRGF0YSwgb3du
ZXIsIHZhbHVlKTsKKyAgICB9CisKK307CisKK3RlbXBsYXRlIDw+IGNsYXNzIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4geworcHVibGljOgorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYsIGNv
bnN0IEpTQ2VsbCosIEpTVmFsdWUgdmFsdWUpIHsgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2
YWx1ZSk7IH0KKyAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIoSlNWYWx1ZSB2YWx1ZSkg
eyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQorICAgIEpTVmFsdWUgZ2V0KCkg
Y29uc3QgeyByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fdmFsdWUpOyB9CisgICAgdm9pZCBjbGVh
cigpIHsgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOyB9CisgICAgdm9pZCBz
ZXRVbmRlZmluZWQoKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
IH0KKyAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkuaXNOdW1iZXIoKTsg
fQorICAgIEpTVmFsdWUqIHNsb3QoKQorICAgIHsgCisgICAgICAgIHVuaW9uIHsKKyAgICAgICAg
ICAgIEVuY29kZWRKU1ZhbHVlKiB2OworICAgICAgICAgICAgSlNWYWx1ZSogc2xvdDsKKyAgICAg
ICAgfSB1OworICAgICAgICB1LnYgPSAmbV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIHUuc2xvdDsK
KyAgICB9CisgICAgCisgICAgdHlwZWRlZiBKU1ZhbHVlIChXcml0ZUJhcnJpZXJCYXNlOjoqVW5z
cGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlID8gcmVpbnRlcnByZXRfY2FzdDxVbnNwZWNpZmllZEJvb2xU
eXBlKj4oMSkgOiAwOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV92
YWx1ZTsgfSAKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBFbmNvZGVkSlNWYWx1ZSBtX3ZhbHVlOwor
fTsKKwordGVtcGxhdGUgPD4gY2xhc3MgV3JpdGVCYXJyaWVyPFVua25vd24+IDogcHVibGljIFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4geworcHVibGljOgorICAgIFdyaXRlQmFycmllcigpIHsg
bV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOyB9CisgICAgV3JpdGVCYXJyaWVy
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlNDZWxsKiBvd25lciwgSlNWYWx1ZSB2
YWx1ZSkKKyAgICB7CisgICAgICAgIHNldChnbG9iYWxEYXRhLCBvd25lciwgdmFsdWUpOworICAg
IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IERlcHJlY2F0ZWRQdHI8VT4mIGxocywgY29uc3QgRGVwcmVjYXRlZFB0
cjxWPiYgcmhzKQoreworICAgIHJldHVybiBsaHMuZ2V0KCkgPT0gcmhzLmdldCgpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBXcml0ZUJhcnJpZXJCYXNlPFU+JiBsaHMsIGNvbnN0IFdyaXRlQmFycmllckJhc2U8Vj4m
IHJocykKK3sKKyAgICByZXR1cm4gbGhzLmdldCgpID09IHJocy5nZXQoKTsKK30KKworfQorCisj
ZW5kaWYgLy8gV3JpdGVCYXJyaWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCmluZGV4IDJiZTRj
ZWJhOTI2OTI3NTVkZjk4OTFjZWEyMTFkYTk0OGYzOGM0MzIuLmRmZjhkMWRhMTc3NWViZDhlMDA5
MWQ0NDJjNDZkMDAyYjIyYzFmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDExLTAxLTI3ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBtYXJr
c3RhY2sgdG8gYSBzbG90IHZpc2l0b3IgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MzIxOQorCisgICAgICAgIFRoZXJlJ3Mgbm8gcmVhc29uIHRv
IHJlY3Vyc2UgaGVyZSwgdGhlIHZhbHVlIHdlCisgICAgICAgIHdlcmUgbWFya2luZyB3YXMgcHJv
dGVjdGVkLgorCisgICAgICAgICogSlNWYWx1ZVdyYXBwZXIuY3BwOgorICAgICAgICAoSlNWYWx1
ZVdyYXBwZXI6OkpTT2JqZWN0TWFyayk6CisKIDIwMTEtMDEtMjMgIE1hcmsgUm93ZSAgPG1yb3dl
QGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xsb3ctdXAgdG8gcjc2NDc3LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAKaW5kZXggZTA4NzlhMDBlYjI2OGNjNWIzN2NkNjlh
YTUwMjgwMTVkNTkyOGU4ZC4uZDlhYzQ5N2Q5MTk0MmRjYmFlNzc4NWNkN2MzYjFhNTQ1Mjc2OGY5
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBwZXIuY3BwCkBAIC0xOTQsMTUg
KzE5NCw0IEBAIENGVHlwZVJlZiBKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RDb3B5Q0ZWYWx1ZSh2
b2lkICpkYXRhKQogCiB2b2lkIEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdE1hcmsodm9pZCAqZGF0
YSkKIHsKLSAgICBKU1ZhbHVlV3JhcHBlciogcHRyID0gKEpTVmFsdWVXcmFwcGVyKilkYXRhOwot
ICAgIGlmIChwdHIpCi0gICAgewotICAgICAgICAvLyBUaGlzIHJlc3VsdHMgaW4gcmVjdXJzaXZl
IG1hcmtpbmcgYnV0IHdpbGwgYmUgb3RoZXJ3aXNlIHNhZmUgYW5kIGNvcnJlY3QuCi0gICAgICAg
IC8vIFdlIGNsYWltIHRoZSBhcnJheSB2cHRyIGlzIDAgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGFj
Y2VzcyB0byBpdCBoZXJlLCBhbmQKLSAgICAgICAgLy8gY2xhaW1pbmcgMCBpcyBmdW5jdGlvbmFs
bHkgaGFybWxlc3MgLS0gaXQgbWVyZWx5IG1lYW5zIHRoYXQgd2UgY2FuJ3QKLSAgICAgICAgLy8g
ZGV2aXJ0dWFsaXNlIG1hcmtpbmcgb2YgYXJyYXlzIHdoZW4gcmVjdXJzaW5nIGZyb20gdGhpcyBw
b2ludC4KLSAgICAgICAgTWFya1N0YWNrIG1hcmtTdGFjaygwKTsKLSAgICAgICAgbWFya1N0YWNr
LmFwcGVuZChwdHItPmZWYWx1ZS5nZXQoKSk7Ci0gICAgICAgIG1hcmtTdGFjay5kcmFpbigpOwot
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YTYwMTUwNTI2ZDFmZDViYjgzMjg1NzI1MjZkNzdiNTYw
ODdhN2Q1Li5lMWRlYWIyOWQyYzU2ODRjZDdiZWY2NmE4ODg4YmVlNmZjZTRjM2I4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTEtMDEtMjcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb252ZXJ0IG1hcmtzdGFjayB0byBhIHNsb3QgdmlzaXRvciBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMjE5CisKKyAgICAgICAgVXBkYXRl
IFdlYkNvcmUgdG8gdGhlIG5ldyBtYXJraW5nIGFwaXMsIGNvcnJlY3QgYmluZGluZ3MKKyAgICAg
ICAgY29kZWdlbi4gCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1dyaXRl
QmFycmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBw
ZXJXb3JsZDo6Z2xvYmFsRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9Db25zdHJ1Y3Rvcjo6SlNBdWRp
b0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bWFya0RPTU5vZGVzRm9yRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6bWFya0RPTU9iamVjdFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6bWFya0RPTU5v
ZGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpzZXRJbmplY3RlZFNjcmlwdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6aW5qZWN0ZWRTY3JpcHQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmplY3REYXRhOjpKU0RPTUdsb2JhbE9i
amVjdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NQ29uc3RydWN0b3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93OjpzZXRMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEaWFsb2dIYW5k
bGVyOjpkaWFsb2dDcmVhdGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OkpTRE9NV2luZG93
U2hlbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6Om1hcmtDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp1bndyYXBwZWRPYmplY3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93U2hlbGw6OndpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1No
ZWxsOjpzZXRXaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om1hcmtKU0Z1bmN0aW9uKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6
OnNldEFsbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6SlNJbWFnZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxs
RnJhbWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1l
OjpzY29wZUNoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSmF2YVNjcmlwdENhbGxGcmFtZTo6
c2NvcGVUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVyQ29uZGl0aW9uOjptYXJrQWdncmVn
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9k
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTT3B0
aW9uQ29uc3RydWN0b3I6OkpTT3B0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENhY2hlZEZyYW1lRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWNoZWRGcmFt
ZURhdGE6OnJlc3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OnNldCk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsb25lRGVzZXJpYWxpemVyOjpwdXRQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKIDIw
MTEtMDEtMjggIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1dyaXRlQmFycmllci5oIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODU3
ZDJmZjY2ZmI1YzNlZGQ4YWRiOGIyN2E5Njg4OGYxNWFlYjRiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApA
QCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfV3JpdGVCYXJyaWVyX2gKKyNkZWZp
bmUgV2ViQ29yZV9GV0RfV3JpdGVCYXJyaWVyX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9X
cml0ZUJhcnJpZXIuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA5MzZkYzA5M2Ux
ZmNkNjNkM2RjYTEzNzI5NTQ3NGI4YzM1ODE2M2ZiLi4wMzU0NGE2Y2MzNGY5OGZiMzdhZDQ2OWI4
MTRhYjc0MTE2NTRkNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNDQ2LDcgKzQ0Niw2IEBA
IF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1cEVQS05TXzVSYW5nZUUKIF9fWk43V2ViQ29y
ZTE2ZW5jbG9zaW5nSW50UmVjdEVSSzdfTlNSZWN0CiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0lu
dFJlY3RFUktOU185RmxvYXRSZWN0RQogX19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJL
TlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCi1f
X1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTlMwXzlXZWFr
R0NNYXBJUE4zV1RGMTBTdHJpbmdJbXBsRVBOUzBfOEpTU3RyaW5nRUVFUzZfCiBfX1pON1dlYkNv
cmUxN0NyZWRlbnRpYWxTdG9yYWdlM2dldEVSS05TXzE1UHJvdGVjdGlvblNwYWNlRQogX19aTjdX
ZWJDb3JlMTdET01JbXBsZW1lbnRhdGlvbjEzaXNYTUxNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UK
IF9fWk43V2ViQ29yZTE3RE9NSW1wbGVtZW50YXRpb24xNGlzVGV4dE1JTUVUeXBlRVJLTjNXVEY2
U3RyaW5nRQpAQCAtMTQzNCw2ICsxNDMzLDcgQEAgX19OUE5fU2V0UHJvcGVydHkKIF9fTlBOX1VU
RjhGcm9tSWRlbnRpZmllcgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjB3aW5kb3dT
Y3JpcHROUE9iamVjdEV2CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIyOWNsZWFudXBT
Y3JpcHRPYmplY3RzRm9yUGx1Z2luRVB2CitfX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VF
UE4zSlNDOUV4ZWNTdGF0ZUVSTlMwXzlXZWFrR0NNYXBJUE4zV1RGMTBTdHJpbmdJbXBsRU5TMF84
SlNTdHJpbmdFRUVTNl8KIF9fWk43V2ViQ29yZTE3SFRNTFBsdWdJbkVsZW1lbnQxMWdldE5QT2Jq
ZWN0RXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDR2aWV3RXYKIF9fWk5LN1dlYkNvcmUx
NFNlY3VyaXR5T3JpZ2luOWNhbkFjY2Vzc0VQS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01XcmFwcGVyV29ybGQuaAppbmRleCA1ZTdiNTUxM2ZlNjI2NWM5YzBkNTZmZWQyMTU2
OWYwYjBlYjNlODdmLi45ODI1YTA4ZjMwYWQ5ZjVmMzU0YTQ0OWMxN2I3NmY0ZjgwMGZjMjI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaApAQCAtMzIs
OCArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXI7
CiAKLXR5cGVkZWYgSlNDOjpXZWFrR0NNYXA8dm9pZCosIERPTU9iamVjdCo+IERPTU9iamVjdFdy
YXBwZXJNYXA7Ci10eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFN0cmluZ0ltcGwqLCBKU0M6OkpTU3Ry
aW5nKj4gSlNTdHJpbmdDYWNoZTsgCit0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPHZvaWQqLCBET01P
YmplY3Q+IERPTU9iamVjdFdyYXBwZXJNYXA7Cit0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFN0cmlu
Z0ltcGwqLCBKU0M6OkpTU3RyaW5nPiBKU1N0cmluZ0NhY2hlOyAKIAogY2xhc3MgRE9NV3JhcHBl
cldvcmxkIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NV3JhcHBlcldvcmxkPiB7CiBwdWJsaWM6CkBA
IC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNOb3JtYWwoKSBjb25zdCB7IHJl
dHVybiBtX2lzTm9ybWFsOyB9CiAKKyAgICBKU0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRE9NV3Jh
cHBlcldvcmxkKEpTQzo6SlNHbG9iYWxEYXRhKiwgYm9vbCBpc05vcm1hbCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwCmluZGV4IDFl
YTVhZTQwMWRkZDBhNDY3ZDEzYzg2NWJlZDcwOTY3MDQ4NzM4YzMuLmMxOWQ3OTU3ZDc5YzU5YTg1
NDllZDUxOTQwOTJmZjI1YWRkYzkwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcApAQCAtNDIsOCArNDIsOCBAQCBjb25zdCBDbGFz
c0luZm8gSlNBdWRpb0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBdWRpb0NvbnN0cnVjdG9yIiwg
MCwgMCwgMCB9OwogSlNBdWRpb0NvbnN0cnVjdG9yOjpKU0F1ZGlvQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogRE9NQ29u
c3RydWN0b3JXaXRoRG9jdW1lbnQoSlNBdWRpb0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSksIGdsb2JhbE9iamVjdCkKIHsKLSAgICBw
dXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNIVE1MQXVkaW9FbGVt
ZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOwotICAgIHB1dERp
cmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkg
fCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTSFRNTEF1ZGlvRWxlbWVudFBy
b3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKKyAgICBwdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJl
cigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogfQogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBdWRpbyhFeGVjU3RhdGUqIGV4ZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBlNTNk
Y2ZiNjAxYWEyYjkyZmExZTViMDhmNDQ2NjJmNzM0MjNjNzZkLi43ZGUyNzE5ZTc3MWYwNDIxZDE5
OWZkYmM3MjE3NDI0YWRjODgyMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAKQEAgLTMzNSw5ICszMzUsOSBAQCB2b2lkIG1hcmtET01Ob2Rlc0ZvckRv
Y3VtZW50KE1hcmtTdGFjayYgbWFya1N0YWNrLCBEb2N1bWVudCogZG9jdW1lbnQpCiAKICAgICAg
ICAgSlNXcmFwcGVyQ2FjaGU6Oml0ZXJhdG9yIG5vZGVFbmQgPSBub2RlRGljdC0+dW5jaGVja2Vk
RW5kKCk7CiAgICAgICAgIGZvciAoSlNXcmFwcGVyQ2FjaGU6Oml0ZXJhdG9yIG5vZGVJdCA9IG5v
ZGVEaWN0LT51bmNoZWNrZWRCZWdpbigpOyBub2RlSXQgIT0gbm9kZUVuZDsgKytub2RlSXQpIHsK
LSAgICAgICAgICAgIEpTTm9kZSoganNOb2RlID0gbm9kZUl0LT5zZWNvbmQ7Ci0gICAgICAgICAg
ICBpZiAoaXNPYnNlcnZhYmxlVGhyb3VnaERPTShqc05vZGUsIHdvcmxkKSkKLSAgICAgICAgICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKGpzTm9kZSk7CisgICAgICAgICAgICBEZXByZWNhdGVkUHRy
PEpTTm9kZT4mIGpzTm9kZSA9IG5vZGVJdC0+c2Vjb25kOworICAgICAgICAgICAgaWYgKGlzT2Jz
ZXJ2YWJsZVRocm91Z2hET00oanNOb2RlLmdldCgpLCB3b3JsZCkpCisgICAgICAgICAgICAgICAg
bWFya1N0YWNrLmFwcGVuZCgmanNOb2RlKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTQxNiw4
ICs0MTYsOCBAQCB2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKE1hcmtTdGFjayYgbWFya1N0YWNr
LCBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHZvaWQqCiAgICAgICAgIHJldHVybjsKIAogICAg
IGZvciAoSlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvciB3b3JsZEl0ZXIoJmdsb2JhbERhdGEpOyB3
b3JsZEl0ZXI7ICsrd29ybGRJdGVyKSB7Ci0gICAgICAgIGlmIChET01PYmplY3QqIHdyYXBwZXIg
PSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0KG9iamVjdCkpCi0gICAgICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKHdyYXBwZXIpOworICAgICAgICBpZiAoRGVwcmVjYXRlZFB0cjxE
T01PYmplY3Q+KiB3cmFwcGVyU2xvdCA9IHdvcmxkSXRlci0+bV93cmFwcGVycy51bmNoZWNrZWRH
ZXRTbG90KG9iamVjdCkpCisgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHdyYXBwZXJTbG90
KTsKICAgICB9CiB9CiAKQEAgLTQyNiwxNSArNDI2LDE1IEBAIHZvaWQgbWFya0RPTU5vZGVXcmFw
cGVyKE1hcmtTdGFjayYgbWFya1N0YWNrLCBEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUp
CiAgICAgaWYgKGRvY3VtZW50KSB7CiAgICAgICAgIEpTV3JhcHBlckNhY2hlTWFwJiB3cmFwcGVy
Q2FjaGVNYXAgPSBkb2N1bWVudC0+d3JhcHBlckNhY2hlTWFwKCk7CiAgICAgICAgIGZvciAoSlNX
cmFwcGVyQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0ZXIgPSB3cmFwcGVyQ2FjaGVNYXAuYmVnaW4oKTsg
aXRlciAhPSB3cmFwcGVyQ2FjaGVNYXAuZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgaWYg
KEpTTm9kZSogd3JhcHBlciA9IGl0ZXItPnNlY29uZC0+dW5jaGVja2VkR2V0KG5vZGUpKQotICAg
ICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQod3JhcHBlcik7CisgICAgICAgICAgICBpZiAo
RGVwcmVjYXRlZFB0cjxKU05vZGU+KiB3cmFwcGVyU2xvdCA9IGl0ZXItPnNlY29uZC0+dW5jaGVj
a2VkR2V0U2xvdChub2RlKSkKKyAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHdyYXBw
ZXJTbG90KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChK
U0dsb2JhbERhdGFXb3JsZEl0ZXJhdG9yIHdvcmxkSXRlcihKU0RPTVdpbmRvdzo6Y29tbW9uSlNH
bG9iYWxEYXRhKCkpOyB3b3JsZEl0ZXI7ICsrd29ybGRJdGVyKSB7Ci0gICAgICAgIGlmIChET01P
YmplY3QqIHdyYXBwZXIgPSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0KG5vZGUp
KQotICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCh3cmFwcGVyKTsKKyAgICAgICAgaWYgKERl
cHJlY2F0ZWRQdHI8RE9NT2JqZWN0Piogd3JhcHBlclNsb3QgPSB3b3JsZEl0ZXItPm1fd3JhcHBl
cnMudW5jaGVja2VkR2V0U2xvdChub2RlKSkKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
d3JhcHBlclNsb3QpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGUwYjViODkxZDQwYmZjMDA3YjkzYWI3YmZj
MWI3NjY0YzlhMzhmZTYuLmEzMjhlZTk0NmE4OWM2OTY3YzZjYjY4ZTFlNDk0YjVhOGYyMzc4OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKQEAgLTUzLDE0ICs1MywxNCBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRy
ZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAKICAgICBKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0
b3IgZW5kID0gc3RydWN0dXJlcygpLmVuZCgpOwogICAgIGZvciAoSlNET01TdHJ1Y3R1cmVNYXA6
Oml0ZXJhdG9yIGl0ID0gc3RydWN0dXJlcygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZChpdC0+c2Vjb25kLT5zdG9yZWRQcm90b3R5cGUoKSk7Cisg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQoaXQtPnNlY29uZC0+c3RvcmVkUHJvdG90eXBlU2xvdCgp
KTsKIAogICAgIEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGVuZDIgPSBjb25zdHJ1Y3Rv
cnMoKS5lbmQoKTsKICAgICBmb3IgKEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGl0MiA9
IGNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0MiAhPSBlbmQyOyArK2l0MikKLSAgICAgICAgbWFy
a1N0YWNrLmFwcGVuZChpdDItPnNlY29uZCk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJml0
Mi0+c2Vjb25kKTsKIAogICAgIGlmIChkKCktPm1faW5qZWN0ZWRTY3JpcHQpCi0gICAgICAgIG1h
cmtTdGFjay5hcHBlbmQoZCgpLT5tX2luamVjdGVkU2NyaXB0KTsKKyAgICAgICAgbWFya1N0YWNr
LmFwcGVuZCgmZCgpLT5tX2luamVjdGVkU2NyaXB0KTsKIH0KIAogdm9pZCBKU0RPTUdsb2JhbE9i
amVjdDo6c2V0Q3VycmVudEV2ZW50KEV2ZW50KiBldnQpCkBAIC03NSwxMiArNzUsMTIgQEAgRXZl
bnQqIEpTRE9NR2xvYmFsT2JqZWN0OjpjdXJyZW50RXZlbnQoKSBjb25zdAogCiB2b2lkIEpTRE9N
R2xvYmFsT2JqZWN0OjpzZXRJbmplY3RlZFNjcmlwdChKU09iamVjdCogaW5qZWN0ZWRTY3JpcHQp
CiB7Ci0gICAgZCgpLT5tX2luamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHQ7CisgICAgZCgp
LT5tX2luamVjdGVkU2NyaXB0LnNldChnbG9iYWxEYXRhKCksIHRoaXMsIGluamVjdGVkU2NyaXB0
KTsKIH0KIAogSlNPYmplY3QqIEpTRE9NR2xvYmFsT2JqZWN0OjppbmplY3RlZFNjcmlwdCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGQoKS0+bV9pbmplY3RlZFNjcmlwdDsKKyAgICByZXR1cm4gZCgp
LT5tX2luamVjdGVkU2NyaXB0LmdldCgpOwogfQogCiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojpk
ZXN0cm95SlNET01HbG9iYWxPYmplY3REYXRhKHZvaWQqIGpzRE9NR2xvYmFsT2JqZWN0RGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4
IDhlYjU1YzE0ODQ3Y2JlOTdkNDE4MjQyYjM3ZmI3NGQ0MzdkNWNlNzMuLjRkY2U3YTUxNWMzZGJh
MjMzMDVhZjQ0NmI3MzdhNjZkZDk4ZmYwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDxjb25zdCBKU0M6OkNsYXNzSW5mbyosIFJlZlB0cjxKU0M6OlN0cnVjdHVyZT4gPiBK
U0RPTVN0cnVjdHVyZU1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0lu
Zm8qLCBKU0M6OkpTT2JqZWN0Kj4gSlNET01Db25zdHJ1Y3Rvck1hcDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8Y29uc3QgSlNDOjpDbGFzc0luZm8qLCBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2Jq
ZWN0PiA+IEpTRE9NQ29uc3RydWN0b3JNYXA7CiAKICAgICBjbGFzcyBKU0RPTUdsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU0M6OkpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgdHlwZWRlZiBKU0M6OkpT
R2xvYmFsT2JqZWN0IEJhc2U7CkBAIC03Niw3ICs3Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgICAgICA6IEpTR2xvYmFsT2JqZWN0RGF0YShkZXN0cnVjdG9yKQogICAgICAg
ICAgICAgICAgICwgZXZ0KDApCiAgICAgICAgICAgICAgICAgLCBtX3dvcmxkKHdvcmxkKQotICAg
ICAgICAgICAgICAgICwgbV9pbmplY3RlZFNjcmlwdCgwKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgfQogCkBAIC04NSw3ICs4NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICAgICAgRXZlbnQqIGV2dDsKICAgICAgICAgICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1f
d29ybGQ7Ci0gICAgICAgICAgICBKU09iamVjdCogbV9pbmplY3RlZFNjcmlwdDsKKyAgICAgICAg
ICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2luamVjdGVkU2NyaXB0OwogICAgICAg
ICB9OwogCiAgICAgcHJpdmF0ZToKQEAgLTk3LDExICs5NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgQ29uc3RydWN0b3JDbGFzcz4KICAgICBpbmxpbmUgSlND
OjpKU09iamVjdCogZ2V0RE9NQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICBpZiAoSlND
OjpKU09iamVjdCogY29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPmNvbnN0cnVjdG9ycygpLmdl
dCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvKSkKKyAgICAgICAgaWYgKEpTQzo6SlNPYmplY3Qq
IGNvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5jb25zdHJ1Y3RvcnMoKS5nZXQoJkNvbnN0cnVj
dG9yQ2xhc3M6OnNfaW5mbykuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBDb25zdHJ1
Y3RvckNsYXNzKGV4ZWMsIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKICAgICAgICAgQVNTRVJUKCFnbG9iYWxPYmplY3QtPmNvbnN0cnVjdG9ycygpLmNvbnRh
aW5zKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5j
b25zdHJ1Y3RvcnMoKS5zZXQoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbywgY29uc3RydWN0b3Ip
OworICAgICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiB0ZW1wOworICAgICAg
ICBnbG9iYWxPYmplY3QtPmNvbnN0cnVjdG9ycygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19p
bmZvLCB0ZW1wKS5maXJzdC0+c2Vjb25kLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdCwgY29uc3RydWN0b3IpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
aW5kZXggNmFmYmRiZWIxMDg4YzI1NmRlMGVkMDk5MTE1YzdlMTRhZTcyYTY1Zi4uMjVmOTVmYTZi
MWQ1Y2VkM2ZlNmY5NmNkMjgyMmRhZDViZWRkZmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZv
aWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGFjdGl2ZUZyYW1lLT5zZXR0aW5n
cygpKSB7CiAgICAgICAgICAgICBpZiAoc2V0dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNrd2FyZENv
bXBhdGliaWxpdHlNb2RlKCkgJiYgIWFjdGl2ZUZyYW1lLT50cmVlKCktPnBhcmVudCgpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCi0gICAgICAgICAgICAg
ICAgICAgIHB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIpLCB2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoZXhlYywgImxvY2F0aW9uIiksIHZhbHVlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTY4Miw3ICs2ODIsNyBAQCBpbmxpbmUgdm9pZCBE
aWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVkKERPTVdpbmRvdyogZGlhbG9nKQogICAgIC8vICAg
ICAgICB3b3JsZCBpZiBkaWFsb2dBcmd1bWVudHMgY29tZXMgZnJvbSBhbiBpc29sYXRlZCB3b3Js
ZC4KICAgICBtX2dsb2JhbE9iamVjdCA9IHRvSlNET01XaW5kb3coZGlhbG9nLT5mcmFtZSgpLCBu
b3JtYWxXb3JsZChtX2V4ZWMtPmdsb2JhbERhdGEoKSkpOwogICAgIGlmIChKU1ZhbHVlIGRpYWxv
Z0FyZ3VtZW50cyA9IG1fZXhlYy0+YXJndW1lbnQoMSkpCi0gICAgICAgIG1fZ2xvYmFsT2JqZWN0
LT5wdXREaXJlY3QoSWRlbnRpZmllcihtX2V4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9n
QXJndW1lbnRzKTsKKyAgICAgICAgbV9nbG9iYWxPYmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPmds
b2JhbERhdGEoKSwgSWRlbnRpZmllcihtX2V4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9n
QXJndW1lbnRzKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgRGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFs
dWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcAppbmRleCA2NTA5NmI5M2MwNmQ4MzdhNDE0YWQ3YTgzZmI2YTYxOWQyMTdmYWZmLi5i
M2UwYjg4ZTdjZDI0ZjFmODk2N2VjNDQyOWM5MDNmNTBjNzI0YzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtNDUsNyArNDUsNiBA
QCBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dTaGVsbDo6c19pbmZvID0geyAiSlNET01XaW5k
b3dTaGVsbCIsIDAsIDAsIDAgfTsKIAogSlNET01XaW5kb3dTaGVsbDo6SlNET01XaW5kb3dTaGVs
bChQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQog
ICAgIDogQmFzZShKU0RPTVdpbmRvd1NoZWxsOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQot
ICAgICwgbV93aW5kb3coMCkKICAgICAsIG1fd29ybGQod29ybGQpCiB7CiAgICAgc2V0V2luZG93
KHdpbmRvdyk7CkBAIC02Niw3ICs2NSw3IEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2lu
ZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5kb3cpCiAgICAgUmVmUHRyPFN0cnVjdHVy
ZT4gc3RydWN0dXJlID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZShwcm90b3R5cGUpOwog
ICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRvdyA9IG5ldyAoSlNET01XaW5kb3c6OmNvbW1vbkpT
R2xvYmFsRGF0YSgpKSBKU0RPTVdpbmRvdyhzdHJ1Y3R1cmUucmVsZWFzZSgpLCBkb21XaW5kb3cs
IHRoaXMpOwogICAgIHByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoMCwganNET01XaW5kb3cp
OwotICAgIHNldFdpbmRvdyhqc0RPTVdpbmRvdyk7CisgICAgc2V0V2luZG93KCpKU0RPTVdpbmRv
dzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzRE9NV2luZG93KTsKIH0KIAogLy8gLS0tLQpAQCAt
NzcsNyArNzYsNyBAQCB2b2lkIEpTRE9NV2luZG93U2hlbGw6Om1hcmtDaGlsZHJlbihNYXJrU3Rh
Y2smIG1hcmtTdGFjaykKIHsKICAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKICAg
ICBpZiAobV93aW5kb3cpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV93aW5kb3cpOworICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3dpbmRvdyk7CiB9CiAKIFVTdHJpbmcgSlNET01XaW5k
b3dTaGVsbDo6Y2xhc3NOYW1lKCkgY29uc3QKQEAgLTE0Nyw3ICsxNDYsNyBAQCBKU1ZhbHVlIEpT
RE9NV2luZG93U2hlbGw6Omxvb2t1cFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcgogCiBKU09iamVjdCogSlNET01XaW5kb3dTaGVsbDo6dW53cmFwcGVkT2Jq
ZWN0KCkKIHsKLSAgICByZXR1cm4gbV93aW5kb3c7CisgICAgcmV0dXJuIG1fd2luZG93LmdldCgp
OwogfQogCiAvLyAtLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmgKaW5kZXggODg4MzI1ZDAzZmNjOGYzNGM5ZTMzYWEyNWZhYWQwMzMyNTQ4M2Y3MS4u
ZDU4NWZkNDkzZTE5Y2ZiMDVjZjExNzc2Y2RjMmQxYzUyOGU3ZWViOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaApAQCAtNDMsMTEgKzQzLDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSlNET01XaW5kb3dTaGVsbChQYXNzUmVmUHRy
PERPTVdpbmRvdz4sIERPTVdyYXBwZXJXb3JsZCogd29ybGQpOwogICAgICAgICB2aXJ0dWFsIH5K
U0RPTVdpbmRvd1NoZWxsKCk7CiAKLSAgICAgICAgSlNET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0
IHsgcmV0dXJuIG1fd2luZG93OyB9Ci0gICAgICAgIHZvaWQgc2V0V2luZG93KEpTRE9NV2luZG93
KiB3aW5kb3cpCisgICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBt
X3dpbmRvdy5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldFdpbmRvdyhKU0M6OkpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNET01XaW5kb3cqIHdpbmRvdykKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUX0FSRyh3aW5kb3csIHdpbmRvdyk7Ci0gICAgICAgICAgICBtX3dpbmRvdyA9IHdp
bmRvdzsKKyAgICAgICAgICAgIG1fd2luZG93LnNldChnbG9iYWxEYXRhLCB0aGlzLCB3aW5kb3cp
OwogICAgICAgICAgICAgc2V0UHJvdG90eXBlKHdpbmRvdy0+cHJvdG90eXBlKCkpOwogICAgICAg
ICB9CiAgICAgICAgIHZvaWQgc2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93Pik7CkBAIC04
NSw3ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBKU0M6OkpT
T2JqZWN0KiB1bndyYXBwZWRPYmplY3QoKTsKICAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNs
YXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQogCi0gICAgICAg
IEpTRE9NV2luZG93KiBtX3dpbmRvdzsKKyAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNET01X
aW5kb3c+IG1fd2luZG93OwogICAgICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxk
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCmluZGV4IDU2MDQzNzRjMmYzZDdhZGRlY2I1N2M4NjI3MzM4YzYzNTVmYjJkNmEuLjY0
Mjc2ODNmNDJlNjM0OGI2YjNmYmI3ZTMxMGM4MGZiYTZkYWRkOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXIo
SlNPYmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwg
RE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQogICAgIDogRXZlbnRMaXN0ZW5lcihKU0V2
ZW50TGlzdGVuZXJUeXBlKQotICAgICwgbV9qc0Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICwgbV9p
c0F0dHJpYnV0ZShpc0F0dHJpYnV0ZSkKICAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdv
cmxkKQogewogICAgIGlmICh3cmFwcGVyKQogICAgICAgICBtX3dyYXBwZXIgPSB3cmFwcGVyOwor
ICAgIG1fanNGdW5jdGlvbi5zZXQoKm1faXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFw
cGVyLCBmdW5jdGlvbik7CiB9CiAKIEpTRXZlbnRMaXN0ZW5lcjo6fkpTRXZlbnRMaXN0ZW5lcigp
CkBAIC01NSw3ICs1NSw3IEBAIEpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVK
U0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdAogdm9pZCBKU0V2ZW50TGlz
dGVuZXI6Om1hcmtKU0Z1bmN0aW9uKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIGlmICht
X2pzRnVuY3Rpb24pCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9qc0Z1bmN0aW9uKTsKKyAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9qc0Z1bmN0aW9uKTsKIH0KIAogdm9pZCBKU0V2ZW50
TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmgKaW5kZXggODNkMGQyZWU5YjhjY2ZkYzRhMDA4MTIxYzU2YTJhNzY4
MTk5MGY2Yy4uNDdmZjQ0ZWM3NmUyMzgxMjNkZTJiYTM3NWY2NTAxMzMxYTA3YTYwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKQEAgLTY2LDcgKzY2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBtdXRhYmxlIEpTQzo6SlNPYmplY3QqIG1fanNGdW5jdGlvbjsKKyAgICAgICAgbXV0YWJs
ZSBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiBtX2pzRnVuY3Rpb247CiAgICAgICAg
IG11dGFibGUgSlNDOjpXZWFrR0NQdHI8SlNDOjpKU09iamVjdD4gbV93cmFwcGVyOwogCiAgICAg
ICAgIGJvb2wgbV9pc0F0dHJpYnV0ZTsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGlubGluZSBKU0M6OkpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmICghbV9qc0Z1bmN0aW9uKQotICAgICAgICAgICAgbV9qc0Z1bmN0
aW9uID0gaW5pdGlhbGl6ZUpTRnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAg
ICAgICAgICBtX2pzRnVuY3Rpb24uc2V0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5nbG9iYWxE
YXRhKCksIG1fd3JhcHBlci5nZXQoKSwgaW5pdGlhbGl6ZUpTRnVuY3Rpb24oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkpOwogCiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIGhhdmUgYSB2YWxpZCB3
cmFwcGVyIHByb3RlY3Rpbmcgb3VyIGZ1bmN0aW9uIGZyb20KICAgICAgICAgLy8gZ2FyYmFnZSBj
b2xsZWN0aW9uLgpAQCAtODYsOSArODYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgLy8gVHJ5IHRvIHZlcmlmeSB0aGF0IG1fanNGdW5jdGlvbiB3YXNuJ3QgcmVjeWNsZWQuIChO
b3QgZXhhY3QsIHNpbmNlIGFuCiAgICAgICAgIC8vIGV2ZW50IGxpc3RlbmVyIGNhbiBiZSBhbG1v
c3QgYW55dGhpbmcsIGJ1dCB0aGlzIG1ha2VzIHRlc3Qtd3JpdGluZyBlYXNpZXIpLgotICAgICAg
ICBBU1NFUlQoIW1fanNGdW5jdGlvbiB8fCBzdGF0aWNfY2FzdDxKU0M6OkpTQ2VsbCo+KG1fanNG
dW5jdGlvbiktPmlzT2JqZWN0KCkpOworICAgICAgICBBU1NFUlQoIW1fanNGdW5jdGlvbiB8fCBz
dGF0aWNfY2FzdDxKU0M6OkpTQ2VsbCo+KG1fanNGdW5jdGlvbi5nZXQoKSktPmlzT2JqZWN0KCkp
OwogCi0gICAgICAgIHJldHVybiBtX2pzRnVuY3Rpb247CisgICAgICAgIHJldHVybiBtX2pzRnVu
Y3Rpb24uZ2V0KCk7CiAgICAgfQogCiAgICAgaW5saW5lIHZvaWQgSlNFdmVudExpc3RlbmVyOjpp
bnZhbGlkYXRlSlNGdW5jdGlvbihKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDBi
NDBlZjA0NGQ1Y2FkZGYyM2U5OWQ0MDM3YTc3NjAzOTIyZGFkYzUuLjI4MTdhZTY5M2YwOGFhNGJl
MTUzNmJhNzIyMTlmMjJjYjE0ZjUzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgSlNWYWx1
ZSBKU0hUTUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHZvaWQgSlNIVE1M
RG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
Ly8gQWRkICJhbGwiIHRvIHRoZSBwcm9wZXJ0eSBtYXAuCi0gICAgcHV0RGlyZWN0KElkZW50aWZp
ZXIoZXhlYywgImFsbCIpLCB2YWx1ZSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihleGVjLCAiYWxsIiksIHZhbHVlKTsKIH0KIAogLy8gQ3VzdG9tIGZ1bmN0
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggZjJhZDgwMzcyZDAzZmFmYTdmZmQwZWZhZDcxZjQyOTgzN2FlNWQwYS4uNTE5
MmUxMmUyYTQ3MjlmMTA2MzNlMzU0YzlhNTAzNTRmMTRiYTY2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCkBAIC0zNyw3ICszNyw3
IEBAIGNvbnN0IENsYXNzSW5mbyBKU0ltYWdlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkltYWdl
Q29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiBKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgOiBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudChKU0ltYWdlQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2Jq
ZWN0KQogewotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBK
U0hUTUxJbWFnZUVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9u
ZSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnByb3RvdHlwZSwgSlNIVE1MSW1hZ2VFbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGds
b2JhbE9iamVjdCksIE5vbmUpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RJbWFnZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKaW5kZXggNjFjNTExMjhlNDhkOTQy
NjYwMDg1MTcwYzc3MjkzMjQzM2YzNzM4NC4uODc4ZTFkZWVhNjBhOTYwMzk4NzRjOTU2NjAzMTc1
ZmQ0ZTA1MDFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFn
ZURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VE
YXRhQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEqIGltYWdlRAog
ICAgIElkZW50aWZpZXIgZGF0YU5hbWUoZXhlYywgImRhdGEiKTsKICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFJlZlB0cjxTdHJ1Y3R1cmU+LCBjcGFTdHJ1Y3R1cmUsIChKU0J5dGVBcnJheTo6Y3Jl
YXRlU3RydWN0dXJlKGpzTnVsbCgpKSkpOwogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gY3Bh
Q2xhc3NJbmZvID0geyAiQ2FudmFzUGl4ZWxBcnJheSIsIDAsIDAsIDAgfTsKLSAgICB3cmFwcGVy
LT5wdXREaXJlY3QoZGF0YU5hbWUsIG5ldyAoZXhlYykgSlNCeXRlQXJyYXkoZXhlYywgY3BhU3Ry
dWN0dXJlLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpLCAmY3BhQ2xhc3NJbmZvKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KTsKKyAgICB3cmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBkYXRhTmFtZSwgbmV3IChleGVjKSBKU0J5dGVBcnJheShleGVjLCBjcGFTdHJ1Y3R1cmUs
IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCksICZjcGFDbGFzc0luZm8pLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOwogICAgIGV4ZWMtPmhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KGltYWdl
RGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7CiAgICAgCiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lQ3VzdG9tLmNwcAppbmRleCAwZjQ3YjdiMjMyMjk3MGZlNzAzOTAzNzZhYzAzMjA3ZDlmMDJj
Mzc0Li43YzAwYmQ0M2FjM2YxNDdkNWQwODI4ZGQyMDkyNTk1ODVlNTBmNTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFt
ZUN1c3RvbS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJh
bWU6OnNjb3BlQ2hhaW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogCiAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgbGlzdDsKICAgICBkbyB7Ci0gICAgICAgIGxpc3QuYXBwZW5kKCppdGVyKTsKKyAg
ICAgICAgbGlzdC5hcHBlbmQoaXRlci0+Z2V0KCkpOwogICAgICAgICArK2l0ZXI7CiAgICAgfSB3
aGlsZSAoaXRlciAhPSBlbmQpOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgSlNWYWx1ZSBKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OnNjb3BlVHlwZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBib29sIGZv
dW5kTG9jYWxTY29wZSA9IGZhbHNlOwogICAgIGZvciAoU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIg
PSBzY29wZUNoYWluLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIEpT
T2JqZWN0KiBzY29wZSA9ICppdGVyOworICAgICAgICBKU0M6OkRlcHJlY2F0ZWRQdHI8SlNPYmpl
Y3Q+IHNjb3BlID0gKml0ZXI7CiAgICAgICAgIGlmIChzY29wZS0+aXNBY3RpdmF0aW9uT2JqZWN0
KCkpIHsKICAgICAgICAgICAgIGlmICghZm91bmRMb2NhbFNjb3BlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRmlyc3QgYWN0aXZhdGlvbiBvYmplY3QgaXMgbG9jYWwgc2NvcGUsIGVhY2ggc3VjY2Vz
c2l2ZSBhY3RpdmF0aW9uIG9iamVjdCBpcyBjbG9zdXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKaW5kZXggYjI2OWU1ZmE1
OTE4OTk4ZDc4MGU5ZWQwZWEyMzJjOGY3NzlmZGI2Mi4uMWNmNzJhNWJjMjE2OGM0OGI2Y2U2ODZh
NTBlZmE5Y2Y2MzFkZTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCkBAIC0zOSwxNCArMzksMTQgQEAgSlNOb2RlRmls
dGVyQ29uZGl0aW9uOjpKU05vZGVGaWx0ZXJDb25kaXRpb24oSlNWYWx1ZSBmaWx0ZXIpCiAKIHZv
aWQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0
YWNrKQogewotICAgIG1hcmtTdGFjay5hcHBlbmQobV9maWx0ZXIpOworICAgIG1hcmtTdGFjay5h
cHBlbmQoJm1fZmlsdGVyKTsKIH0KIAogc2hvcnQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2Nl
cHROb2RlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBOb2RlKiBmaWx0ZXJOb2RlKSBjb25zdAogewog
ICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKLSAgICBpZiAoIW1fZmls
dGVyLmlzT2JqZWN0KCkpCisgICAgaWYgKCFtX2ZpbHRlci0+aXNPYmplY3QoKSkKICAgICAgICAg
cmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQ7CiAKICAgIC8vIFRoZSBleGVjIGFyZ3Vt
ZW50IGhlcmUgc2hvdWxkIG9ubHkgYmUgbnVsbCBpZiB0aGlzIHdhcyBjYWxsZWQgZnJvbSBhCkBA
IC01OCwxMSArNTgsMTEgQEAgc2hvcnQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2Rl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBOb2RlKiBmaWx0ZXJOb2RlKQogICAgIGlmICghZXhlYykK
ICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7CiAKLSAgICBKU1ZhbHVl
IGZ1bmN0aW9uID0gbV9maWx0ZXI7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1fZmlsdGVyLmdl
dCgpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGVOb25lKSB7Ci0gICAgICAgIGZ1bmN0aW9uID0gbV9maWx0ZXIuZ2V0KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgImFjY2VwdE5vZGUiKSk7CisgICAgICAgIGZ1bmN0aW9uID0gbV9maWx0ZXItPmdl
dChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJhY2NlcHROb2RlIikpOwogICAgICAgICBjYWxsVHlw
ZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgIGlmIChjYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJOb2RlRmlsdGVyIG9iamVjdCBkb2VzIG5vdCBoYXZlIGFuIGFjY2Vw
dE5vZGUgZnVuY3Rpb24iKSk7CkBAIC03Nyw3ICs3Nyw3IEBAIHNob3J0IEpTTm9kZUZpbHRlckNv
bmRpdGlvbjo6YWNjZXB0Tm9kZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgTm9kZSogZmlsdGVyTm9k
ZSkKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBOb2RlRmls
dGVyOjpGSUxURVJfUkVKRUNUOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoZXhl
YywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9maWx0ZXIsIGFyZ3MpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIG1fZmlsdGVyLmdldCgpLCBhcmdzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCmluZGV4IGI5
NjUzNGEwY2Y0ZTM5MmVkYTAzMzEwNDhmYjdmMWNlMDhmNzQ3Y2QuLjE0YjBjMWQyNWFmYzZlZDUy
YmViNjM1MDEwMDFmYjBmN2NiZjMyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKFNjcmlwdFN0YXRl
KiwgTm9kZSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0FnZ3JlZ2F0ZShKU0M6
Ok1hcmtTdGFjayYpOwogCi0gICAgICAgIG11dGFibGUgSlNDOjpKU1ZhbHVlIG1fZmlsdGVyOwor
ICAgICAgICBtdXRhYmxlIEpTQzo6RGVwcmVjYXRlZFB0cjxKU0M6OlVua25vd24+IG1fZmlsdGVy
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCmluZGV4IGJiOTBjNGY3ZjBiNmRj
YzlmZGQ0NWI5OWUyZjhjMTk0OWIyYTE3MTguLmJjNzllOTk2Nzk3YjE2OGJjNzk2OTQwMjc5ZWE2
NzM1N2M5YzI5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUZpbHRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
RmlsdGVyQ3VzdG9tLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkpTTm9kZUZpbHRlci5oIgogCisjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgi
CiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgi
CiAjaW5jbHVkZSAiTm9kZUZpbHRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCA0ZWNmZTU4NTJjODM4NDQ5NmFhMzhj
NjcxN2JmYmEzYjRlZTQ0NDE3Li5lMTRmYjZkYTViZDM5NzRlZjgxYmE3ZDViYTczYmJmNzliOTk3
MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0
cnVjdG9yLmNwcApAQCAtMzgsOCArMzgsOCBAQCBjb25zdCBDbGFzc0luZm8gSlNPcHRpb25Db25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiT3B0aW9uQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiBKU09w
dGlvbkNvbnN0cnVjdG9yOjpKU09wdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICA6IERPTUNvbnN0cnVjdG9yV2l0aERv
Y3VtZW50KEpTT3B0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
Pm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU0hUTUxPcHRpb25FbGVtZW50UHJvdG90eXBl
OjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOwotICAgIHB1dERpcmVjdChleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcig0KSwgUmVhZE9ubHkgfCBEb250RGVsZXRl
IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTSFRNTE9wdGlvbkVsZW1lbnRQcm90b3R5cGU6OnNl
bGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNCksIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SFRNTE9wdGlvbkVsZW1lbnQoRXhlY1N0YXRlKiBleGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRS
b3dMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHAKaW5kZXggNzI3NGNkMGYyYTRhZDJlMDZmMzQwZmNkNWE2YjUy
OGZlZGYyNTYyOS4uMGZjZDFlYTdmMmQ2MmU0YzhlYmVkZDdhYTZmYWUyNzhmY2IzMDQ4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNl
dFJvd0xpc3RDdXN0b20uY3BwCkBAIC03NCw3ICs3NCw3IEBAIEpTVmFsdWUgSlNTUUxSZXN1bHRT
ZXRSb3dMaXN0OjppdGVtKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICBvYmplY3QtPnB1dERpcmVjdChJZGVu
dGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhtX2ltcGwtPmNvbHVtbk5hbWVzKClbaV0pKSwg
anNWYWx1ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICAgICAgb2JqZWN0LT5wdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyht
X2ltcGwtPmNvbHVtbk5hbWVzKClbaV0pKSwganNWYWx1ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KTsKICAgICB9CiAKICAgICByZXR1cm4gb2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKaW5kZXggMTZmMThkMzVhMDZm
YTBhZGRiMGUzYjE3Y2IyZTA0YzBlZDU3YmFkNC4uZDY1YmNlMjYwMTM4ZjkxODY5MGVjZTg2ZmQy
NGNiYjQ4OGVjYzBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lKiBmcmFtZSkKICAgICAgICAgSlNET01XaW5kb3dT
aGVsbCogd2luZG93U2hlbGwgPSBpdGVyLT5zZWNvbmQuZ2V0KCk7CiAKICAgICAgICAgaWYgKEpT
RE9NV2luZG93KiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0KHdvcmxkKSkKLSAgICAgICAgICAgIHdp
bmRvd1NoZWxsLT5zZXRXaW5kb3cod2luZG93KTsKKyAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5z
ZXRXaW5kb3cod2luZG93LT5nbG9iYWxEYXRhKCksIHdpbmRvdyk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyhmcmFtZS0+ZG9tV2luZG93KCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAppbmRleCBlMDZl
Y2NiN2I1MjY2MmU4Y2RjN2MwY2YwZDQ2ZjNhOWNkMmVmZjRkLi5iNWMxZjAxMTk2NDYwODM1MjYy
ZGMyMDk2MzNkMGI3NGMzOGE2NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdE9iamVjdC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlRXhjZXB0
aW9uKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0Ojpz
ZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3Jp
cHRPYmplY3QmIHZhbHVlKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7Ci0gICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KElk
ZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB2YWx1ZS5qc09iamVjdCgpKTsKKyAgICBzY3Jp
cHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wdXREaXJlY3Qoc2NyaXB0U3RhdGUtPmds
b2JhbERhdGEoKSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0
KCkpOwogICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwogfQogCkBAIC03
MSw3ICs3MSw3IEBAIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0CiB7CiAgICAgSlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKLSAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVy
KHNjcmlwdFN0YXRlLCBuYW1lKSwgdG9KUyhzY3JpcHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1
ZSkpOworICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9i
YWxPYmplY3QsIHZhbHVlKSk7CiAgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0
ZSk7CiB9CiAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChT
Y3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIEluamVjdGUKIHsKICAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlw
dFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIGdsb2JhbE9iamVjdC0+cHV0RGly
ZWN0KElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9i
YWxPYmplY3QsIHZhbHVlKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3Qoc2NyaXB0U3Rh
dGUtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMoc2Ny
aXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0
aW9uKHNjcmlwdFN0YXRlKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggYjAyYTRiYjM4MDBkNDY0MTQ1NjEwNGVkNTA5NWQ3OTkzMTJhZDJhZC4uZjcyMTMzNGMx
ZjdhN2RiNmVmYzA1NmE1ZTFjZjc0ZTQyYjQ3ZjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMDQwLDE0ICsx
MDQwLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwdXRQcm9wZXJ0eShKU0FycmF5KiBhcnJheSwg
dW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoYXJyYXkt
PmNhblNldEluZGV4KGluZGV4KSkKLSAgICAgICAgICAgIGFycmF5LT5zZXRJbmRleChpbmRleCwg
dmFsdWUpOworICAgICAgICAgICAgYXJyYXktPnNldEluZGV4KG1fZXhlYy0+Z2xvYmFsRGF0YSgp
LCBpbmRleCwgdmFsdWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcnJheS0+cHV0KG1f
ZXhlYywgaW5kZXgsIHZhbHVlKTsKICAgICB9CiAKICAgICB2b2lkIHB1dFByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBKU1ZhbHVlIHZhbHVlKQog
ICAgIHsKLSAgICAgICAgb2JqZWN0LT5wdXREaXJlY3QocHJvcGVydHksIHZhbHVlKTsKKyAgICAg
ICAgb2JqZWN0LT5wdXREaXJlY3QobV9leGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5LCB2YWx1
ZSk7CiAgICAgfQogCiAgICAgYm9vbCByZWFkRmlsZShSZWZQdHI8RmlsZT4mIGZpbGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmlu
ZGV4IGFiZWYwNGU4N2Y3YzY4ZDQ5MDM1ODE2MDc2NmM3OGY5ZDg5YjljOWIuLjQ2YTQ0ZDE5Nzcz
YjRkNzRlM2JjMTdlNTBkMjBlZGU4ZjkzMjFlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xNzM1LDEzICsxNzM1LDEz
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yXG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgJiYgJGNsYXNz
TmFtZSBlcSAiSlNibGFoIikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCkt
PnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTtcbiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNs
YXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJlY3QoSWRlbnRpZmllcihleGVjLCBcIiRuYW1l
XCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5w
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiks
IHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlJlcGxhY2VhYmxlIn0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3RcbiIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0
YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KElkZW50aWZpZXIo
ZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNP
YmplY3QpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwi
JG5hbWVcIiksIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xh
c3NOYW1lKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3Qp
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJGltcGxUeXBlKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbFR5cGUqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpO1xuIik7CkBAIC0xODI0LDkgKzE4MjQsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yXG4iKTsKIAogICAgICAgICAgICAgICAgIGlmICgkaW50
ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1
dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwk
Y2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJlY3QoSWRlbnRp
ZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmpl
Y3QpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5h
bWVcIiksIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiXG4iKTsKQEAgLTI5NDIsMTEgKzI5NDIsMTEgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIDogRE9NQ29uc3RydWN0
b3JPYmplY3QoJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAie1xuIik7CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5k
b3ciKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+
cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LT5wcm90b3R5cGUoKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSwgZ2xvYmFsT2JqZWN0LT5wcm90b3R5cGUoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KTtcbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBw
dXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgJHtwcm90b0NsYXNzTmFt
ZX06OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIp
OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgJHtwcm90b0NsYXNzTmFt
ZX06OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIp
OwogICAgIH0KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKCR7bnVtYmVyT2Zjb25zdHJ1Y3RQYXJhbWV0
ZXJzfSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTtcbiIpIGlmICRudW1iZXJP
ZmNvbnN0cnVjdFBhcmFtZXRlcnM7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKCR7bnVtYmVyT2Zjb25zdHJ1Y3RQYXJhbWV0ZXJzfSksIFJlYWRPbmx5IHwgRG9udERl
bGV0ZSB8IERvbnRFbnVtKTtcbiIpIGlmICRudW1iZXJPZmNvbnN0cnVjdFBhcmFtZXRlcnM7CiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KVxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9y
b290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCmluZGV4IDNj
OGIzMTM5YTljYWZmZWQ1YWVmOTBmYWNkY2NkMjE0ZGRlMzY5ODkuLjEwZjc3YjQ5MzRhOTM2NmY3
OWNkZTlhYmQ4NzZkYTJjNjg1Y2Y5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX3Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jv
b3QuY3BwCkBAIC0xMDEsOCArMTAxLDggQEAgdm9pZCBSb290T2JqZWN0OjppbnZhbGlkYXRlKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAgICAgICBXZWFrR0NNYXA8UnVudGltZU9iamVj
dCosIFJ1bnRpbWVPYmplY3QqPjo6aXRlcmF0b3IgZW5kID0gbV9ydW50aW1lT2JqZWN0cy51bmNo
ZWNrZWRFbmQoKTsKLSAgICAgICAgZm9yIChXZWFrR0NNYXA8UnVudGltZU9iamVjdCosIFJ1bnRp
bWVPYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtX3J1bnRpbWVPYmplY3RzLnVuY2hlY2tlZEJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBXZWFrR0NNYXA8UnVudGltZU9iamVjdCos
IFJ1bnRpbWVPYmplY3Q+OjppdGVyYXRvciBlbmQgPSBtX3J1bnRpbWVPYmplY3RzLnVuY2hlY2tl
ZEVuZCgpOworICAgICAgICBmb3IgKFdlYWtHQ01hcDxSdW50aW1lT2JqZWN0KiwgUnVudGltZU9i
amVjdD46Oml0ZXJhdG9yIGl0ID0gbV9ydW50aW1lT2JqZWN0cy51bmNoZWNrZWRCZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIGlmIChtX3J1bnRpbWVPYmplY3RzLmlzVmFs
aWQoaXQpKQogICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQtPmludmFsaWRhdGUoKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCmluZGV4IDgyOTBlN2MzMWUzZTgx
MzExMWY1MjAxOTYwMGVkMGI1MTlmMWIxZGMuLmRkZThhNDgwODU0OWEwMWRjNTMxMzBiYzNlOWMy
MmM1ZTY0ODgzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jv
b3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgKQEAgLTg5LDcg
Kzg5LDcgQEAgcHJpdmF0ZToKICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xv
YmFsT2JqZWN0OwogCiAgICAgUHJvdGVjdENvdW50U2V0IG1fcHJvdGVjdENvdW50U2V0OwotICAg
IFdlYWtHQ01hcDxSdW50aW1lT2JqZWN0KiwgUnVudGltZU9iamVjdCo+IG1fcnVudGltZU9iamVj
dHM7IC8vIFJlYWxseSBuZWVkIGEgV2Vha0dDU2V0LCBidXQgdGhpcyB3aWxsIGRvLgorICAgIFdl
YWtHQ01hcDxSdW50aW1lT2JqZWN0KiwgUnVudGltZU9iamVjdD4gbV9ydW50aW1lT2JqZWN0czsg
Ly8gUmVhbGx5IG5lZWQgYSBXZWFrR0NTZXQsIGJ1dCB0aGlzIHdpbGwgZG8uCiAKICAgICBIYXNo
U2V0PEludmFsaWRhdGlvbkNhbGxiYWNrKj4gbV9pbnZhbGlkYXRpb25DYWxsYmFja3M7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCBmM2Q4ZTc3ZTlhMThkOWFlMjcxYzQwMzY4ZTdkN2ZmNDcx
ODNkYWUwLi5iZTdlMDBhM2ViNDNjYmMzMWY5ZmM0ZTlhZTg2ZWE3MWQ1MDkwZTJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtOTQwLDcgKzk0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcG9zdFRhc2soUGFzc093blB0cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNv
bnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKICNpZiBVU0UoSlNDKQotICAgIHR5cGVk
ZWYgSlNDOjpXZWFrR0NNYXA8V2ViQ29yZTo6Tm9kZSosIEpTTm9kZSo+IEpTV3JhcHBlckNhY2hl
OworICAgIHR5cGVkZWYgSlNDOjpXZWFrR0NNYXA8V2ViQ29yZTo6Tm9kZSosIEpTTm9kZT4gSlNX
cmFwcGVyQ2FjaGU7CiAgICAgdHlwZWRlZiBIYXNoTWFwPERPTVdyYXBwZXJXb3JsZCosIEpTV3Jh
cHBlckNhY2hlKj4gSlNXcmFwcGVyQ2FjaGVNYXA7CiAgICAgSlNXcmFwcGVyQ2FjaGVNYXAmIHdy
YXBwZXJDYWNoZU1hcCgpIHsgcmV0dXJuIG1fd3JhcHBlckNhY2hlTWFwOyB9CiAgICAgSlNXcmFw
cGVyQ2FjaGUqIGdldFdyYXBwZXJDYWNoZShET01XcmFwcGVyV29ybGQqIHdvcmxkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCAwZTUzMjliNzgxMTMwMzRlYTU2ZmUyMzQ5ZDc4MDI4Nzc0Y2UyMmMwLi4x
ZTJkYmEyZDYzYWFkYjNjNTAzNzc1YTdiYzhjMzQ4YTQ2ZmE4MmFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDEtMjcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
b252ZXJ0IG1hcmtzdGFjayB0byBhIHNsb3QgdmlzaXRvciBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMjE5CisKKyAgICAgICAgVXBkYXRlIHRv
IG5ldyBtYXJraW5nIGFwaQorCisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0RlbGVn
YXRlLm1tOgorICAgICAgICAoLVtXZWJTY3JpcHRDYWxsRnJhbWUgc2NvcGVDaGFpbl0pOgorCiAy
MDExLTAxLTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzY4OTEuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0KaW5kZXggNjNhOTFh
OWUxZjM5YjQ4MDY3NGVlYWNhMzUzMGM0Mjk0Y2NhZDY5Ni4uOTZhMWE0MjcxYzNkNTNmZWIyM2Ni
OTVjZTgzOWNjN2NhNGVhYTQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQpAQCAtMTg0LDkgKzE4NCw5IEBAIE5TU3RyaW5n
ICogY29uc3QgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5ID0gQCJXZWJTY3JpcHRFcnJvckxp
bmVOdW1iZXIiOwogCiAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IHNjb3BlQ2hhaW4tPmVu
ZCgpOwogICAgIGZvciAoU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ID0gc2NvcGVDaGFpbi0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSAqaXQ7Cisg
ICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpdC0+Z2V0KCk7CiAgICAgICAgIGlmIChvYmplY3Qt
PmlzQWN0aXZhdGlvbk9iamVjdCgpKQotICAgICAgICAgICAgb2JqZWN0ID0gbmV3IChzY29wZUNo
YWluLT5nbG9iYWxEYXRhKSBEZWJ1Z2dlckFjdGl2YXRpb24ob2JqZWN0KTsKKyAgICAgICAgICAg
IG9iamVjdCA9IG5ldyAoc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSkgRGVidWdnZXJBY3RpdmF0aW9u
KCpzY29wZUNoYWluLT5nbG9iYWxEYXRhLCBvYmplY3QpOwogICAgICAgICBbc2NvcGVzIGFkZE9i
amVjdDpbc2VsZiBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6b2JqZWN0XV07CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80503</attachid>
            <date>2011-01-28 15:08:47 -0800</date>
            <delta_ts>2011-01-30 23:03:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53219-20110128150846.patch</filename>
            <type>text/plain</type>
            <size>277088</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggODM0
NDJiMmUwMjI2YTg2NjExYTVkNmE4ZDA0OWVhYmFmMDAyZDg5OS4uZDZjMzFkODU0MjU0YzMzMmVh
MmVjMTVmNjVjNmU0NjQ0MTcyNjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKQEAgLTU0LDExICs1NCwxMSBAQCBzdHJ1Y3QgSlNDYWxsYmFja09i
amVjdERhdGEgewogICAgICAgICByZXR1cm4gbV9wcml2YXRlUHJvcGVydGllcy0+Z2V0UHJpdmF0
ZVByb3BlcnR5KHByb3BlcnR5TmFtZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0UHJpdmF0
ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkK
KyAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Q2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVydGllcykKICAgICAgICAgICAg
IG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBhZG9wdFB0cihuZXcgSlNQcml2YXRlUHJvcGVydHlNYXAp
OwotICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5zZXRQcml2YXRlUHJvcGVydHkocHJvcGVy
dHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPnNldFByaXZhdGVQ
cm9wZXJ0eShnbG9iYWxEYXRhLCBvd25lciwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKQEAgLTgzLDEyICs4MywxMyBAQCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERh
dGEgewogICAgICAgICAgICAgUHJpdmF0ZVByb3BlcnR5TWFwOjpjb25zdF9pdGVyYXRvciBsb2Nh
dGlvbiA9IG1fcHJvcGVydHlNYXAuZmluZChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAg
ICAgIGlmIChsb2NhdGlvbiA9PSBtX3Byb3BlcnR5TWFwLmVuZCgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb24tPnNlY29uZDsK
KyAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbi0+c2Vjb25kLmdldCgpOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCisgICAgICAgIHZvaWQgc2V0UHJpdmF0ZVBy
b3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBtX3Byb3BlcnR5TWFwLnNldChwcm9wZXJ0eU5hbWUuaW1wbCgpLCB2YWx1ZSk7CisgICAg
ICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7CisgICAgICAgICAgICBtX3Byb3Bl
cnR5TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuZmlyc3QtPnNlY29uZC5zZXQo
Z2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
dm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQpAQCAtMTAwLDEyICsxMDEsMTIgQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIHsKICAg
ICAgICAgewogICAgICAgICAgICAgZm9yIChQcml2YXRlUHJvcGVydHlNYXA6Oml0ZXJhdG9yIHB0
ciA9IG1fcHJvcGVydHlNYXAuYmVnaW4oKTsgcHRyICE9IG1fcHJvcGVydHlNYXAuZW5kKCk7ICsr
cHRyKSB7CiAgICAgICAgICAgICAgICAgaWYgKHB0ci0+c2Vjb25kKQotICAgICAgICAgICAgICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKHB0ci0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICAgICAg
bWFya1N0YWNrLmFwcGVuZCgmcHRyLT5zZWNvbmQpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0lt
cGw+LCBKU1ZhbHVlLCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZVByb3BlcnR5TWFwOworICAg
ICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0ZUJhcnJpZXI8VW5r
bm93bj4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlUHJvcGVydHlNYXA7CiAgICAgICAgIFBy
aXZhdGVQcm9wZXJ0eU1hcCBtX3Byb3BlcnR5TWFwOwogICAgIH07CiAgICAgT3duUHRyPEpTUHJp
dmF0ZVByb3BlcnR5TWFwPiBtX3ByaXZhdGVQcm9wZXJ0aWVzOwpAQCAtMTM3LDkgKzEzOCw5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3REYXRhLT5nZXRQcml2YXRl
UHJvcGVydHkocHJvcGVydHlOYW1lKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRQcml2YXRl
UHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQor
ICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgbV9jYWxsYmFja09iamVjdERhdGEtPnNldFByaXZhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUs
IHZhbHVlKTsKKyAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPnNldFByaXZhdGVQcm9wZXJ0
eShnbG9iYWxEYXRhLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICB9CiAgICAgCiAg
ICAgdm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaAppbmRleCBkZTVkODQyMTY0NDNhNDRhZDQwZjk1MWZmMDVmNDg1MDVmYjE3
MjVhLi5mMDM0NDNmNGViM2Y4YWRmOTRkNGY1ODRjYjA1YTViMGFhNWFlZmExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6cHV0KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lCiAgICAgICAgICAg
ICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChw
cm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmli
dXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpwdXREaXJl
Y3QocHJvcGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0eQorICAg
ICAgICAgICAgICAgIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJvcGVy
dHkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTU2NSw3ICs1NjUsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbAogICAgICAgICAgICAgICAg
IGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBlbnRy
eS0+Y2FsbEFzRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIEpTT2JqZWN0KiBvID0gbmV3IChleGVjKSBKU0NhbGxiYWNrRnVuY3Rpb24oZXhlYywg
YXNHbG9iYWxPYmplY3QodGhpc09iai0+Z2V0QW5vbnltb3VzVmFsdWUoMCkpLCBjYWxsQXNGdW5j
dGlvbiwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+cHV0RGly
ZWN0KHByb3BlcnR5TmFtZSwgbywgZW50cnktPmF0dHJpYnV0ZXMpOworICAgICAgICAgICAgICAg
ICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUs
IG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG87CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcAppbmRleCBkNmRlNDI2ODJmNDQ0NzBhNmExNWU5ODQ5MzM3NGQ0ZTJi
MmVjODc2Li5kM2MxOTkzMTg4MmU1ZWY1MDYwNTc0OGQ4ZWVlYzI1YTQ1MDJkN2Y3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBA
IEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpT
Q2xhc3NSZWYganNDbGFzcywgSlNPYmplCiAgICAgICAgIGpzUHJvdG90eXBlID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKTsKIAogICAgIEpTQ2FsbGJhY2tD
b25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSgpLCBqc0NsYXNzLCBjYWxsQXNDb25zdHJ1
Y3Rvcik7Ci0gICAgY29uc3RydWN0b3ItPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBqc1Byb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
OworICAgIGNvbnN0cnVjdG9yLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBqc1Byb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOwogICAgIHJldHVybiB0b1JlZihjb25zdHJ1Y3Rvcik7CiB9CiAKQEAg
LTM4NSwxMSArMzg1LDExIEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHkoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlCiAgICAgSlNWYWx1ZSBq
c1ZhbHVlID0gdmFsdWUgPyB0b0pTKGV4ZWMsIHZhbHVlKSA6IEpTVmFsdWUoKTsKICAgICBJZGVu
dGlmaWVyIG5hbWUocHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9iYWxEYXRhKCkp
KTsKICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFs
T2JqZWN0Pjo6aW5mbykpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxK
U0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShuYW1lLCBqc1Zh
bHVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9iYWxEYXRhKCksIG5h
bWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGpzT2Jq
ZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+
OjppbmZvKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0
V2l0aEdsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShuYW1lLCBq
c1ZhbHVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU09iamVjdFdp
dGhHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVydHkoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaAppbmRleCA2NGUxZjRkNTNiN2U4YjE4Mzk1MjQ2
ZWU4MmJiODQwOWJjMDcyMDBlLi5mN2I5MWRhNTFkMzI2ZGIyYTQ1ZjY3N2ViZmVmNmY3ZjBlYzVi
NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1h
cFJlZkludGVybmFsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmpl
Y3RNYXBSZWZJbnRlcm5hbC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEpTT2JqZWN0OwogCiB0
eXBlZGVmIHZvaWQgKCpKU1dlYWtNYXBEZXN0cm95ZWRDYWxsYmFjaykoc3RydWN0IE9wYXF1ZUpT
V2Vha09iamVjdE1hcCosIHZvaWQqKTsKIAotdHlwZWRlZiBKU0M6OldlYWtHQ01hcDx2b2lkKiwg
SlNDOjpKU09iamVjdCo+IFdlYWtNYXBUeXBlOwordHlwZWRlZiBKU0M6OldlYWtHQ01hcDx2b2lk
KiwgSlNDOjpKU09iamVjdD4gV2Vha01hcFR5cGU7CiAKIHN0cnVjdCBPcGFxdWVKU1dlYWtPYmpl
Y3RNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGFxdWVKU1dlYWtPYmplY3RNYXA+IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJmZjIzMzg2YTUyOTFjNWMwZGQyNzFhMzRl
YzMxZjQ5ZDY1ODAyYzMuLjE2ZTQxMjk0ZDk2MTZhZDBjNTA2NWU0ODRiMTU0ZTM4NDlhZmRlYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxNCBAQAorMjAxMS0wMS0yNyAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgbWFya3N0YWNrIHRvIGEgc2xvdCB2aXNp
dG9yIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTMyMTkKKworICAgICAgICBNb3ZlIHRoZSBNYXJrU3RhY2sgb3ZlciB0byBhIHNsb3QgYmFzZWQg
bWFya2luZyBBUEkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWRpbmcgYWxpYXNpbmcgY29u
Y2VybnMgdGhlcmUgYXJlIHR3byBuZXcgdHlwZXMKKyAgICAgICAgdGhhdCBuZWVkIHRvIGJlIHVz
ZWQgd2hlbiBob2xkaW5nIG9uIHRvIEpTVmFsdWVzIGFuZCBKU0NlbGwgdGhhdAorICAgICAgICBu
ZWVkIHRvIGJlIG1hcmtlZDogV3JpdGVCYXJyaWVyIGFuZCBEZXByZWNhdGVkUHRyLiAgV3JpdGVC
YXJyaWVyCisgICAgICAgIGlzIGV4cGVjdGVkIHRvIGJlIHVzZWQgZm9yIGFueSBKU1ZhbHVlIG9y
IENlbGwgdGhhdCdzIGxpZmV0aW1lIGFuZAorICAgICAgICBtYXJraW5nIGlzIGNvbnRyb2xsZWQg
YnkgYW5vdGhlciBHQyBvYmplY3QuICBEZXByZWNhdGVkUHRyIGlzIHVzZWQKKyAgICAgICAgZm9y
IGFueSB2YWx1ZSB0aGF0IHdlIG5lZWQgdG8gcmV3b3JrIG93bmVyc2hpcCBmb3IuCisKKyAgICAg
ICAgVGhlIGNoYW5nZSBvdmVyIHRvIHRoaXMgbW9kZWwgaGFzIHByb2R1Y2VkIGEgbGFyZ2UgYW1v
dW50IG9mCisgICAgICAgIGNvZGUgY2hhbmdlcywgYnV0IHRoZXkgYXJlIG1vc3RseSBtZWNoYW5p
Y2FsIChmb3J3YXJkaW5nIEpTR2xvYmFsRGF0YSwKKyAgICAgICAgZXRjKS4KKworICAgICAgICAq
IEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3RE
YXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OmdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
IChKU0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6c2V0UHJp
dmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJp
dmF0ZVByb3BlcnR5TWFwOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNr
T2JqZWN0OjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6Ojo6cHV0KToKKyAgICAgICAgKEpTQzo6Ojpz
dGF0aWNGdW5jdGlvbkdldHRlcik6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAg
ICAgICAgKEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJp
dmF0ZVByb3BlcnR5KToKKyAgICAgICAgKiBBUEkvSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwu
aDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0FnZ3JlZ2F0
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1
bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElm
Tm90RnVuY3Rpb25BcHBseSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5k
U2NvcGVkUHJvcGVydHkpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6RGVidWdnZXJBY3RpdmF0aW9u
KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjptYXJrQ2hpbGRyZW4pOgorICAg
ICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJlc29sdmUp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZVNraXApOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbER5bmFtaWMpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6cmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9y
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lz
dGVyLmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpqc1ZhbHVlU2xvdCk6CisgICAgICAgICog
aml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5
SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBy
dW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6bWFya0NoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgor
ICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnNldEFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpB
cmd1bWVudHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayk6CisgICAgICAgICog
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
U3BsaWNlKToKKyAgICAgICAgKiBydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmg6
CisgICAgICAgIChKU0M6OkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOjpCYXRjaGVkVHJhbnNp
dGlvbk9wdGltaXplcik6CisgICAgICAgIChKU0M6OkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
Ojp+QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVh
bkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbkNvbnN0cnVjdG9yOjpCb29s
ZWFuQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RCb29sZWFuKToKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKToKKyAgICAgICAg
KiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuUHJv
dG90eXBlOjpCb29sZWFuUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbnNlcnZhdGl2
ZVNldC5oOgorICAgICAgICAoSlNDOjpDb25zZXJ2YXRpdmVTZXQ6Om1hcmspOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVj
dG9yOjpEYXRlQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmNw
cDoKKyAgICAgICAgKEpTQzo6RGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UpOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNT
ZXRUaW1lKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MpOgorICAgICAg
ICAoSlNDOjpzZXROZXdWYWx1ZUZyb21EYXRlQXJncyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNTZXRZZWFyKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3Rh
bmNlOjpFcnJvckluc3RhbmNlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6
OkZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5jcHA6
CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6OkdldHRl
clNldHRlcik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6Z2V0dGVyKToKKyAgICAgICAg
KEpTQzo6R2V0dGVyU2V0dGVyOjpzZXRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0
ZXI6OnNldHRlcik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6c2V0U2V0dGVyKToKKyAg
ICAgICAgKiBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6Okds
b2JhbEV2YWxGdW5jdGlvbjo6R2xvYmFsRXZhbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6R2xv
YmFsRXZhbEZ1bmN0aW9uOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvR2xvYmFs
RXZhbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6Okdsb2JhbEV2YWxGdW5jdGlvbjo6Y2FjaGVk
R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAgICAoSlND
OjpIZWFwOjptYXJrUHJvdGVjdGVkT2JqZWN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6Om1hcmtU
ZW1wU29ydFZlY3RvcnMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFs
RnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBUElWYWx1
ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OnZhbHVlKToKKyAg
ICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OkpTQVBJVmFsdWVXcmFwcGVyKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlv
bjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpK
U0FycmF5OjpKU0FycmF5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0
U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OkpTQXJyYXk6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnVuc2hpZnRD
b3VudCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnQpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb1JlZ2lzdGVy
cyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0SW5kZXgpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5OjpzZXRJbmRleCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OnVuY2hlY2tlZFNldEluZGV4KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6bWFya0NoaWxkcmVu
RGlyZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5o
OgorICAgICAgICAoSlNDOjpKU0NlbGw6Ok1hcmtTdGFjazo6YXBwZW5kKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpNYXJrU3RhY2s6OmFwcGVuZENlbGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXJrSWZOZWVkZWQpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdERhdGE6OkpTR2xvYmFs
T2JqZWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjplcnJvckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmV2YWxFcnJvckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJhbmdlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnN5bnRheEVycm9yQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dHlwZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6VVJJRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpldmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6b2JqZWN0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5
UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmJvb2xlYW5Qcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RyaW5nUHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51bWJlclByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkYXRlUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlZ0V4cFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjptZXRob2RDYWxsRHVtbXkpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheSk6CisgICAg
ICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6
OkhvbGRlcjo6b2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6b2Jq
ZWN0U2xvdCk6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjptYXJrQWdncmVnYXRlKToKKyAg
ICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OnN0cmluZ2lmeSk6CisgICAgICAgIChKU0M6OlN0cmlu
Z2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OldhbGtl
cjo6Y2FsbFJldml2ZXIpOgorICAgICAgICAoSlNDOjpXYWxrZXI6OndhbGspOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lR2V0
dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZVNldHRlcik6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpyZW1vdmVEaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OnB1dERlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9mZnNldCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpmbGF0dGVuRGljdGlvbmFyeU9iamVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24p
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dERpcmVjdCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZUlubGluZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0
aWNTY29wZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6Om1h
cmtDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChK
U0M6OlN0cmluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
V3JhcHBlck9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUp
OgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OnNldEludGVybmFsVmFsdWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQ
YXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChK
U0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpsb29rdXBQdXQpOgorICAgICAgICAqIHJ1bnRpbWUvTWFya1N0YWNr
Lmg6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0
aE9iamVjdDo6TWF0aE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclBy
b3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6Ok51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdFdpdGhOdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGlt
ZS9OdW1iZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3ROdW1iZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVy
UHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChK
U0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKToKKyAgICAgICAgKEpTQzo6cmVzb2x2ZUJhc2Up
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpQcm90b3R5cGVGdW5jdGlvbjo6UHJvdG90eXBlRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvUHV0UHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6c2V0
RXhpc3RpbmdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6c2V0TmV3
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OmJhc2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBD
b25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVD
aGFpbi5jcHA6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpwcmludCk6CisgICAgICAg
ICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjp+
U2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluSXRlcmF0b3I6Om9wZXJh
dG9yKik6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5JdGVyYXRvcjo6b3BlcmF0b3ItPik6Cisg
ICAgICAgIChKU0M6OlNjb3BlQ2hhaW46OnRvcCk6CisgICAgICAgICogcnVudGltZS9TY29wZUNo
YWluTWFyay5oOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluOjptYXJrQWdncmVnYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5jcHA6CisgICAgICAgIChKU0M6OmlzTWFya2Vk
KToKKyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6ZW1w
dHlTdHJpbmcpOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnNpbmdsZUNoYXJhY3RlclN0
cmluZyk6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5n
cyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OlN0cmlu
Z09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlw
ZTo6U3RyaW5nUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3Rv
cmVkUHJvdG90eXBlU2xvdCk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAg
ICAgKEpTQzo6V2Vha0dDTWFwOjp1bmNoZWNrZWRHZXQpOgorICAgICAgICAoSlNDOjpXZWFrR0NN
YXA6OnVuY2hlY2tlZEdldFNsb3QpOgorICAgICAgICAoSlNDOjo6OmdldCk6CisgICAgICAgIChK
U0M6Ojo6dGFrZSk6CisgICAgICAgIChKU0M6Ojo6c2V0KToKKyAgICAgICAgKEpTQzo6Ojp1bmNo
ZWNrZWRSZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpEZXByZWNhdGVkUHRyOjpEZXByZWNhdGVkUHRyKToKKyAgICAgICAgKEpT
Qzo6RGVwcmVjYXRlZFB0cjo6Z2V0KToKKyAgICAgICAgKEpTQzo6RGVwcmVjYXRlZFB0cjo6b3Bl
cmF0b3IqKToKKyAgICAgICAgKEpTQzo6RGVwcmVjYXRlZFB0cjo6b3BlcmF0b3ItPik6CisgICAg
ICAgIChKU0M6OkRlcHJlY2F0ZWRQdHI6OnNsb3QpOgorICAgICAgICAoSlNDOjpEZXByZWNhdGVk
UHRyOjpvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKik6CisgICAgICAgIChKU0M6OkRlcHJl
Y2F0ZWRQdHI6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OldyaXRlQmFycmllckJhc2U6OnNl
dCk6CisgICAgICAgIChKU0M6OldyaXRlQmFycmllckJhc2U6OmdldCk6CisgICAgICAgIChKU0M6
OldyaXRlQmFycmllckJhc2U6Om9wZXJhdG9yKik6CisgICAgICAgIChKU0M6OldyaXRlQmFycmll
ckJhc2U6Om9wZXJhdG9yLT4pOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpzbG90
KToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRC
b29sVHlwZSopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRvciEpOgor
ICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXI6OldyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6
Om9wZXJhdG9yPT0pOgorCiAyMDExLTAxLTI4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgogCiAgICAgICAgIFBvdGVudGlhbGx5IFVuc2FmZSBIYXNoU2V0IG9mIFJ1bnRpbWVP
YmplY3QqIGluIFJvb3RPYmplY3QgZGVmaW5pdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKaW5kZXggMTk5YzM3ZjBjMmI2NDJiZjFjNjk5NDQzOWQzOTlhYTljZjRi
NWQ0NC4uOTgyYWUxOWVjODczNzIwZDM5NWJjZTZkNzVkY2UyZDYzNTkxZGJmMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xODMsNyArMTgzLDcgQEAgX19a
TjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yMjFzZXREdW1wc0dlbmVyYXRlZENvZGVFYgogX19aTjNK
U0MxN1Byb3BlcnR5TmFtZUFycmF5M2FkZEVQTjNXVEYxMFN0cmluZ0ltcGxFCiBfX1pOM0pTQzE3
Y29uc3RydWN0RnVuY3Rpb25FUE5TXzlFeGVjU3RhdGVFUktOU183QXJnTGlzdEVSS05TXzEwSWRl
bnRpZmllckVSS05TXzdVU3RyaW5nRWkKIF9fWk4zSlNDMTdjcmVhdGVTeW50YXhFcnJvckVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQotX19aTjNKU0MxOERlYnVnZ2VyQWN0aXZhdGlvbkMx
RVBOU184SlNPYmplY3RFCitfX1pOM0pTQzE4RGVidWdnZXJBY3RpdmF0aW9uQzFFUk5TXzEySlNH
bG9iYWxEYXRhRVBOU184SlNPYmplY3RFCiBfX1pOM0pTQzE4UHJvcGVydHlEZXNjcmlwdG9yMTFz
ZXRXcml0YWJsZUViCiBfX1pOM0pTQzE4UHJvcGVydHlEZXNjcmlwdG9yMTJzZXRVbmRlZmluZWRF
dgogX19aTjNKU0MxOFByb3BlcnR5RGVzY3JpcHRvcjEzc2V0RGVzY3JpcHRvckVOU183SlNWYWx1
ZUVqCkBAIC0yNTEsNyArMjUxLDcgQEAgX19aTjNKU0M3SlNBcnJheTE4Z2V0T3duUHJvcGVydHlT
bG90RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzdKU0FycmF5
NGluZm9FCiBfX1pOM0pTQzdKU0FycmF5OXNldExlbmd0aEVqCiBfX1pOM0pTQzdKU0FycmF5QzFF
TjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUUKLV9fWk4zSlNDN0pTQXJy
YXlDMUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRVJLTlNfN0FyZ0xp
c3RFCitfX1pOM0pTQzdKU0FycmF5QzFFUk5TXzEySlNHbG9iYWxEYXRhRU4zV1RGMTdOb25OdWxs
UGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFUktOU183QXJnTGlzdEUKIF9fWk4zSlNDN0pTQXJy
YXlDMkVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRQogX19aTjNKU0M3
SlNBcnJheUQyRXYKIF9fWk4zSlNDN0pTVmFsdWUxM2lzVmFsaWRDYWxsZWVFdgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCBmODc4
NmI1MmYyYTE4MGQ3YTQ1YWE0ZTBjZjRkMTIxZWJkODE2MzBmLi41MzJjY2ZlMDhmNjM4MTUxYTI5
MDQyMmUwZDgyZTYxZjA3MzM3ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMTAsNyArMTAsNyBAQCBFWFBPUlRTCiAgICAg
Pz8wRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlQEpTQ0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQFBBVkpT
R2xvYmFsT2JqZWN0QDFAQFoKICAgICA/PzBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BASUFFQFBBVkpT
R2xvYmFsRGF0YUAxQFBBVkpTR2xvYmFsT2JqZWN0QDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0
cnVjdHVyZUBKU0NAQEBXVEZAQEFCVklkZW50aWZpZXJAMUBAWgogICAgID8/MEpTQXJyYXlASlND
QEBRQUVAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQEBaCi0gICAg
Pz8wSlNBcnJheUBKU0NAQFFBRUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BA
QFdURkBAQUJWQXJnTGlzdEAxQEBaCisgICAgPz8wSlNBcnJheUBKU0NAQFFBRUBBQVZKU0dsb2Jh
bERhdGFAMUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQUJWQXJn
TGlzdEAxQEBaICAKICAgICA/PzBKU0J5dGVBcnJheUBKU0NAQFFBRUBQQVZFeGVjU3RhdGVAMUBW
PyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAUEFWQnl0ZUFycmF5QDRA
UEJVQ2xhc3NJbmZvQDFAQFoKICAgICA/PzBKU0Z1bmN0aW9uQEpTQ0BAUUFFQFBBVkV4ZWNTdGF0
ZUAxQFBBVkpTR2xvYmFsT2JqZWN0QDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBK
U0NAQEBXVEZAQEhBQlZJZGVudGlmaWVyQDFAUDZJX0owQFpAWgogICAgID8/MEpTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdEBKU0NAQElBRUBQQVZKU0dsb2JhbE9iamVjdEAxQFY/JE5vbk51bGxQYXNz
UmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBhZTM1ZjZlYTk3MmVkNzEwNTQwZWZkYTA0ZWE4NmI1NDNkMzZiOGJiLi4wOTg1ZTFl
OTg5NTU1YjVlNWU3MGZmOGMyZWQ2ZDM2YTE0YmU4MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMzcyLDYgKzM3Miw3IEBACiAJCUE3QzFFOEU0MTEyRTcyRUYwMEEzN0Y5OCAv
KiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3QzFFOEM4MTEyRTcwMUMwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcCAqLzsgfTsKIAkJQTdDNTMwRTQxMDJBMzgxMzAwNUJDNzQxIC8qIE1h
cmtTdGFja1Bvc2l4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3QzUzMEUzMTAyQTM4MTMwMDVCQzc0MSAvKiBNYXJrU3RhY2tQb3NpeC5jcHAgKi87
IH07CiAJCUE3RDY0OUFBMTAxNTIyNEUwMDlCMkUxQiAvKiBQb3NzaWJseU51bGwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDY0OUE5MTAxNTIyNEUw
MDlCMkUxQiAvKiBQb3NzaWJseU51bGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBN0RDQjk3MzEyRTUxOTNGMDA5MTE5NDAgLyogV3JpdGVCYXJy
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0RD
Qjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdFMkVBNkIwRkI0NjBDRjAwNjAxRjA2
IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi87
IH07CiAJCUE3RTJFQTZDMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTJFQTZBMEZCNDYw
Q0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCAqLzsgfTsKIAkJQTdGMTlFQ0UxMURENDkw
OTAwOTMxRTcwIC8qIEZpeGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RjE5RUNEMTFERDQ5MDkwMDkzMUU3MCAvKiBGaXhlZEFycmF5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNDIs
NiArMTA0Myw3IEBACiAJCUE3QzFFOEM4MTEyRTcwMUMwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0M1
MzBFMzEwMkEzODEzMDA1QkM3NDEgLyogTWFya1N0YWNrUG9zaXguY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya1N0YWNrUG9zaXguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBN0Q2NDlBOTEwMTUyMjRFMDA5QjJFMUIgLyogUG9zc2libHlOdWxs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc3NpYmx5TnVsbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3Jp
dGVCYXJyaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRlQmFycmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0UyRUE2OTBGQjQ2MENGMDA2MDFG
MDYgLyogTGl0ZXJhbFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
aXRlcmFsUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RTJFQTZBMEZC
NDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IExpdGVyYWxQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBN0U0MkMxODBFMzkzODgzMDA2NUE1NDQgLyogSlNTdGF0aWNTY29wZU9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0YXRpY1Njb3BlT2JqZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTA0LDYgKzE5MDYsNyBAQAogCQkJCTE0
QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLywKIAkJCQkxNDAzNURCMDEw
REJGQjJBMDBGRkZGRTcgLyogV2Vha0dDUHRyLmggKi8sCiAJCQkJMTQyMEJFN0ExMEFBNkREQjAw
RjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKKwkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAg
LyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQyNyw2ICsyNDMwLDcgQEAKIAkJCQk4NjcwNEI0MzEy
REI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVERTZFNUIzMEUxNzI4RUMwMDE4MDQwNyAvKiBjcmVhdGVfaGFzaF90YWJsZSBpbiBIZWFkZXJz
ICovLAogCQkJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBN0RDQjk3MzEyRTUxOTNGMDA5MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJD
YWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGYzZjVmMjcxYWUyM2Zl
YmUwMjhkYTM3N2I2OGVjNjY5MjJkMjNhZWMuLmI0MTczODI5ZTI0Zjc3NTM2ZGY5ODFkZDk1ZGJm
MjA2MmU3OTU0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCkBAIC0xNTI5LDEyICsxNTI5LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpyZWZTdHJ1Y3R1
cmVzKEluc3RydWN0aW9uKiB2UEMpIGNvbnN0CiB2b2lkIENvZGVCbG9jazo6bWFya0FnZ3JlZ2F0
ZShNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
Y29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
bV9jb25zdGFudFJlZ2lzdGVyc1tpXS5qc1ZhbHVlKCkpOworICAgICAgICBtYXJrU3RhY2suZGVw
cmVjYXRlZEFwcGVuZCgmbV9jb25zdGFudFJlZ2lzdGVyc1tpXSk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2Z1bmN0aW9uRXhwcnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fZnVuY3Rp
b25FeHByc1tpXS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICBtX2Z1bmN0aW9u
RGVjbHNbaV0tPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYXBwZW5k
KG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2dsb2JhbE9iamVjdCk7
CiB9CiAKIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAppbmRleCAxY2QwODYzNjA4ZTRlZjAyNDY2OWE4ZmM2YjYwMTcwMmRmOGY0MTAw
Li5hZDJlZmE2NjhkMDAzNmJiZmZkN2U1NTM3ZTA0YjA3ZGNlNTJkMTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yNDgsNyArMjQ4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBDb2RlQmxvY2soU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBDb2RlVHlwZSwgSlNHbG9iYWxPYmplY3QqLCBQYXNz
UmVmUHRyPFNvdXJjZVByb3ZpZGVyPiwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCBTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUsIGJvb2wgaXNDb25zdHJ1Y3Rvcik7CiAKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIG1fZ2xvYmFsT2JqZWN0OworICAgICAgICBEZXByZWNhdGVkUHRyPEpTR2xvYmFsT2Jq
ZWN0PiBtX2dsb2JhbE9iamVjdDsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q29k
ZUJsb2NrKCk7CkBAIC00ODUsNyArNDg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVu
c2lnbmVkIGFkZFJlZ0V4cChSZWdFeHAqIHIpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
OyB1bnNpZ25lZCBzaXplID0gbV9yYXJlRGF0YS0+bV9yZWdleHBzLnNpemUoKTsgbV9yYXJlRGF0
YS0+bV9yZWdleHBzLmFwcGVuZChyKTsgcmV0dXJuIHNpemU7IH0KICAgICAgICAgUmVnRXhwKiBy
ZWdleHAoaW50IGluZGV4KSBjb25zdCB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fcmVnZXhwc1tpbmRleF0uZ2V0KCk7IH0KIAotICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KKyAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgp
OyB9CiAKICAgICAgICAgLy8gSnVtcCBUYWJsZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA3OGMz
NzNhNmFlNTVhNmQ0OGYyMjUwYTQ2OGQwZTA2NjgzMDMxNjBkLi4wOTY0MzQ0ODAzYTEwZGRkMjFm
MjJkNjE1ZWM0ZGRkYmI4YjgxNDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjUxLDcgKzI1MSw3
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSogcHJv
Z3JhbU5vZGUsIGNvbnN0IFNjb3BlQ2hhaW4mCiAgICAgZm9yIChTeW1ib2xUYWJsZTo6aXRlcmF0
b3IgaXQgPSBzeW1ib2xUYWJsZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBy
ZWdpc3RlckZvcihpdC0+c2Vjb25kLmdldEluZGV4KCkpLnNldEluZGV4KGl0LT5zZWNvbmQuZ2V0
SW5kZXgoKSArIG1fZ2xvYmFsVmFyU3RvcmFnZU9mZnNldCk7CiAgICAgICAgIAotICAgIEJhdGNo
ZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXplcihnbG9iYWxPYmplY3QpOworICAgIEJhdGNo
ZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXplcigqbV9nbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QpOwogCiAgICAgY29uc3QgVmFyU3RhY2smIHZhclN0YWNrID0gcHJvZ3JhbU5vZGUtPnZhclN0
YWNrKCk7CiAgICAgY29uc3QgRnVuY3Rpb25TdGFjayYgZnVuY3Rpb25TdGFjayA9IHByb2dyYW1O
b2RlLT5mdW5jdGlvblN0YWNrKCk7CkBAIC05MDMsNyArOTAzLDcgQEAgUGFzc1JlZlB0cjxMYWJl
bD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoUmVnaXN0ZXJJ
RCogY29uZCwKIAogICAgIGVtaXRPcGNvZGUob3Bfam5lcV9wdHIpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChjb25kLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9z
Y29wZUNoYWluLT5nbG9iYWxPYmplY3QoKS0+ZCgpLT5jYWxsRnVuY3Rpb24pOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdCgpLT5kKCktPmNhbGxG
dW5jdGlvbi5nZXQoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+YmluZChi
ZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgcmV0dXJuIHRhcmdldDsKIH0KQEAg
LTkxNCw3ICs5MTQsNyBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZAogCiAgICAgZW1pdE9wY29k
ZShvcF9qbmVxX3B0cik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbmQtPmluZGV4KCkp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdCgp
LT5kKCktPmFwcGx5RnVuY3Rpb24pOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Njb3Bl
Q2hhaW4tPmdsb2JhbE9iamVjdCgpLT5kKCktPmFwcGx5RnVuY3Rpb24uZ2V0KCkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNp
emUoKSkpOwogICAgIHJldHVybiB0YXJnZXQ7CiB9CkBAIC0xMTE3LDcgKzExMTcsNyBAQCBib29s
IEJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5kU2NvcGVkUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHksIGludCYgaW5kZQogCiAgICAgICAgIGlmIChzaG91bGRPcHRpbWl6ZUxvY2Fscygp
ICYmIG1fY29kZVR5cGUgPT0gR2xvYmFsQ29kZSkgewogICAgICAgICAgICAgU2NvcGVDaGFpbkl0
ZXJhdG9yIGl0ZXIgPSBtX3Njb3BlQ2hhaW4tPmJlZ2luKCk7Ci0gICAgICAgICAgICBnbG9iYWxP
YmplY3QgPSAqaXRlcjsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IGl0ZXItPmdldCgpOwog
ICAgICAgICAgICAgQVNTRVJUKCgrK2l0ZXIpID09IG1fc2NvcGVDaGFpbi0+ZW5kKCkpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMjgsNyArMTEyOCw3IEBAIGJvb2wg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmZpbmRTY29wZWRQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eSwgaW50JiBpbmRlCiAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBtX3Njb3Bl
Q2hhaW4tPmJlZ2luKCk7CiAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IG1fc2NvcGVDaGFp
bi0+ZW5kKCk7CiAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIsICsrZGVwdGgpIHsKLSAg
ICAgICAgSlNPYmplY3QqIGN1cnJlbnRTY29wZSA9ICppdGVyOworICAgICAgICBKU09iamVjdCog
Y3VycmVudFNjb3BlID0gaXRlci0+Z2V0KCk7CiAgICAgICAgIGlmICghY3VycmVudFNjb3BlLT5p
c1ZhcmlhYmxlT2JqZWN0KCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgSlNWYXJpYWJs
ZU9iamVjdCogY3VycmVudFZhcmlhYmxlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9i
amVjdCo+KGN1cnJlbnRTY29wZSk7CkBAIC0xMTU3LDcgKzExNTcsNyBAQCBib29sIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpmaW5kU2NvcGVkUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHks
IGludCYgaW5kZQogICAgIC8vIENhbid0IGxvY2F0ZSB0aGUgcHJvcGVydHkgYnV0IHdlJ3JlIGFi
bGUgdG8gYXZvaWQgYSBmZXcgbG9va3Vwcy4KICAgICBzdGFja0RlcHRoID0gZGVwdGggKyBtX2Nv
ZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOwogICAgIGluZGV4ID0gbWlzc2luZ1N5bWJv
bE1hcmtlcigpOwotICAgIEpTT2JqZWN0KiBzY29wZSA9ICppdGVyOworICAgIEpTT2JqZWN0KiBz
Y29wZSA9IGl0ZXItPmdldCgpOwogICAgIGlmICgrK2l0ZXIgPT0gZW5kKQogICAgICAgICBnbG9i
YWxPYmplY3QgPSBzY29wZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IDIzYjkzNjExODZjNjAxYTM5N2QxMjZlZTdi
NzUzYTgwNDg1NTczMmMuLmUyMWQ2MWQzZmM2YWU4OGI1MDk1NDRiOTMxMTU4ZGJjZTViMzQ1Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIEpTVmFsdWUgZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShjb25zdCBVU3Ry
aW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbiwgSlNHCiAgICAgSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBnbG9iYWxEYXRhLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwuZ2V0KCksIGdsb2JhbENh
bGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxDYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKSk7CiAg
ICAgaWYgKGdsb2JhbERhdGEuZXhjZXB0aW9uKSB7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IGdsb2Jh
bERhdGEuZXhjZXB0aW9uOworICAgICAgICBleGNlcHRpb24gPSBnbG9iYWxEYXRhLmV4Y2VwdGlv
bi5nZXQoKTsKICAgICAgICAgZ2xvYmFsRGF0YS5leGNlcHRpb24gPSBKU1ZhbHVlKCk7CiAgICAg
fQogICAgIEFTU0VSVChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCAwNDQ0ZDIzZDIwNGY4MzE4YTM5
MjU1NWM1YzU3YzU2OTA2YTNiOTE0Li5mY2QyNTdjMmY3YjQ4OGQ1ZTQ3NTRmOWQ0ZTFhMzVmM2U0
ODM1ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1EZWJ1Z2dlckFjdGl2YXRpb246OkRlYnVnZ2VyQWN0aXZhdGlvbihKU09iamVjdCogYWN0
aXZhdGlvbikKK0RlYnVnZ2VyQWN0aXZhdGlvbjo6RGVidWdnZXJBY3RpdmF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGFjdGl2YXRpb24pCiAgICAgOiBKU09iamVjdChE
ZWJ1Z2dlckFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiB7CiAgICAgQVNT
RVJUKGFjdGl2YXRpb24pOwogICAgIEFTU0VSVChhY3RpdmF0aW9uLT5pc0FjdGl2YXRpb25PYmpl
Y3QoKSk7Ci0gICAgbV9hY3RpdmF0aW9uID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0
aXZhdGlvbik7CisgICAgbV9hY3RpdmF0aW9uLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdGF0aWNf
Y2FzdDxKU0FjdGl2YXRpb24qPihhY3RpdmF0aW9uKSk7CiB9CiAKIHZvaWQgRGVidWdnZXJBY3Rp
dmF0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCkBAIC00Myw3ICs0Myw3
IEBAIHZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJr
U3RhY2spCiAgICAgSlNPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogCiAgICAgaWYg
KG1fYWN0aXZhdGlvbikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX2FjdGl2YXRpb24pOwor
ICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2FjdGl2YXRpb24pOwogfQogCiBVU3RyaW5nIERl
YnVnZ2VyQWN0aXZhdGlvbjo6Y2xhc3NOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAppbmRleCAzOTI3MDE3NDFi
YTc2NGIzZjQ0MzkyZGE5OWM3MDA2ZGNjNWM0YzVkLi5iNjQwNjBkY2Y4NDdjOWE3N2U5OWMzMWY0
MTMyZmU2OTg2ZjU4MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRGVidWdnZXJBY3RpdmF0aW9uIDogcHVibGljIEpTT2JqZWN0IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIERlYnVnZ2VyQWN0aXZhdGlvbihKU09iamVjdCopOworICAgICAg
ICBEZWJ1Z2dlckFjdGl2YXRpb24oSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogICAgICAgICB2aXJ0dWFs
IFVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3Q7CkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBKU09iamVj
dDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU0FjdGl2YXRpb24q
IG1fYWN0aXZhdGlvbjsKKyAgICAgICAgV3JpdGVCYXJyaWVyPEpTQWN0aXZhdGlvbj4gbV9hY3Rp
dmF0aW9uOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggZWQ2NzNj
YmFmZmFlYTEwMjdiODExY2Y1NDQ1ZGU4MTlmMjAyOWY1Ny4uY2I0NTkyY2MxMWM2Y2Y0MGM3NjFk
NjBkN2Y2MTkyYTUyZjIyMjVjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIEpTVmFsdWUg
RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1
ZSYgZXhjZXB0aW9uKSBjCiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gbV9jYWxsRnJh
bWUtPmdsb2JhbERhdGEoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGdsb2JhbERhdGEuaW50ZXJw
cmV0ZXItPmV4ZWN1dGUoZXZhbC5nZXQoKSwgbV9jYWxsRnJhbWUsIHRoaXNPYmplY3QoKSwgbV9j
YWxsRnJhbWUtPnNjb3BlQ2hhaW4oKSk7CiAgICAgaWYgKGdsb2JhbERhdGEuZXhjZXB0aW9uKSB7
Ci0gICAgICAgIGV4Y2VwdGlvbiA9IGdsb2JhbERhdGEuZXhjZXB0aW9uOworICAgICAgICBleGNl
cHRpb24gPSBnbG9iYWxEYXRhLmV4Y2VwdGlvbi5nZXQoKTsKICAgICAgICAgZ2xvYmFsRGF0YS5l
eGNlcHRpb24gPSBKU1ZhbHVlKCk7CiAgICAgfQogICAgIEFTU0VSVChyZXN1bHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IDI3OTdlZjNm
OWZjYWJjMGU5MTAzNmIxNzI4YWQ4MzIwOTM1ODliYTEuLjE5MGE3YzFkMjUwOWMxMzc4NTJhMjZm
ZmMxYTgzNzNjNWI1ZDJkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmgKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAg
ICAvLyBCdXQgdGhleSdyZSB1c2VkIGluIG1hbnkgcGxhY2VzIGluIGxlZ2FjeSBjb2RlLCBzbyB0
aGV5J3JlIG5vdCBnb2luZyBhd2F5IGFueSB0aW1lIHNvb24uCiAKICAgICAgICAgdm9pZCBjbGVh
ckV4Y2VwdGlvbigpIHsgZ2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IEpTVmFsdWUoKTsgfQotICAg
ICAgICBKU1ZhbHVlIGV4Y2VwdGlvbigpIGNvbnN0IHsgcmV0dXJuIGdsb2JhbERhdGEoKS5leGNl
cHRpb247IH0KKyAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBnbG9i
YWxEYXRhKCkuZXhjZXB0aW9uLmdldCgpOyB9CiAgICAgICAgIGJvb2wgaGFkRXhjZXB0aW9uKCkg
Y29uc3QgeyByZXR1cm4gZ2xvYmFsRGF0YSgpLmV4Y2VwdGlvbjsgfQogCiAgICAgICAgIGNvbnN0
IENvbW1vbklkZW50aWZpZXJzJiBwcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gKmdsb2Jh
bERhdGEoKS5wcm9wZXJ0eU5hbWVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAzOTJlOGI4YjViMTM5NWRjMmJlMDUyN2Iy
MzA5NmVkZDVjZDYwOGY5Li5kY2FkNTgzNjc5YjBhNWUzYTBlMzQ0YjQ4NzdhNGE0ODkxZmI1NTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKQEAgLTEwMywxMSArMTAzLDExIEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVy
OjpyZXNvbHZlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0cnVjdGlvbiogdlBDLCBKCiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIElkZW50
aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKICAgICBkbyB7
Ci0gICAgICAgIEpTT2JqZWN0KiBvID0gKml0ZXI7CisgICAgICAgIEpTT2JqZWN0KiBvID0gaXRl
ci0+Z2V0KCk7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KG8pOwogICAgICAgICBpZiAoby0+
Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7CiAgICAgICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBpZGVudCk7Ci0gICAgICAg
ICAgICBleGNlcHRpb25WYWx1ZSA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbjsK
KyAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhj
ZXB0aW9uLmdldCgpOwogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihk
c3QpID0gSlNWYWx1ZShyZXN1bHQpOwpAQCAtMTQyLDExICsxNDIsMTEgQEAgTkVWRVJfSU5MSU5F
IGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVTa2lwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0
cnVjdGlvbiogdlAKICAgICB9CiAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlk
ZW50aWZpZXIocHJvcGVydHkpOwogICAgIGRvIHsKLSAgICAgICAgSlNPYmplY3QqIG8gPSAqaXRl
cjsKKyAgICAgICAgSlNPYmplY3QqIG8gPSBpdGVyLT5nZXQoKTsKICAgICAgICAgUHJvcGVydHlT
bG90IHNsb3Qobyk7CiAgICAgICAgIGlmIChvLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBp
ZGVudCwgc2xvdCkpIHsKICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1
ZShjYWxsRnJhbWUsIGlkZW50KTsKLSAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uOworICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUg
PSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRpb24uZ2V0KCk7CiAgICAgICAgICAgICBp
ZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdCk7CkBAIC0xODcsNyArMTg3LDcgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3Ry
dWN0aW9uKgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBl
eGNlcHRpb25WYWx1ZSA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbjsKKyAgICAg
ICAgZXhjZXB0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRpb24uZ2V0
KCk7CiAgICAgICAgIGlmIChleGNlcHRpb25WYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBKU1ZhbHVlKHJlc3VsdCk7
CkBAIC0yMjAsMTQgKzIyMCwxNCBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVz
b2x2ZUdsb2JhbER5bmFtaWMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydQogICAgICAgICAg
ICAgKytpdGVyOwogICAgIH0KICAgICB3aGlsZSAoc2tpcC0tKSB7Ci0gICAgICAgIEpTT2JqZWN0
KiBvID0gKml0ZXI7CisgICAgICAgIEpTT2JqZWN0KiBvID0gaXRlci0+Z2V0KCk7CiAgICAgICAg
IGlmIChvLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgICAgIElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKICAgICAgICAgICAgIGRv
IHsKICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvKTsKICAgICAgICAgICAgICAg
ICBpZiAoby0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUs
IGlkZW50KTsKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKS5leGNlcHRpb247CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvblZh
bHVlID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uLmdldCgpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwpAQCAtMjM2
LDcgKzIzNiw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFs
RHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGlmIChpdGVyID09IGVuZCkKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgbyA9ICppdGVyOworICAgICAgICAgICAgICAgIG8gPSBpdGVy
LT5nZXQoKTsKICAgICAgICAgICAgICAgICArK2l0ZXI7CiAgICAgICAgICAgICB9IHdoaWxlICh0
cnVlKTsKICAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihjYWxsRnJhbWUsIGlkZW50KTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBORVZFUl9JTkxJ
TkUgYm9vbCBJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbER5bmFtaWMoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEluc3RydQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhj
ZXB0aW9uOworICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
LmV4Y2VwdGlvbi5nZXQoKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBBU1NFUlQocmVzdWx0KTsKQEAgLTMxMCwxMSArMzEw
LDExIEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlQmFzZUFuZFByb3Bl
cnR5KENhbGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0CiAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBj
b2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwogICAgIEpTT2JqZWN0KiBiYXNlOwogICAg
IGRvIHsKLSAgICAgICAgYmFzZSA9ICppdGVyOworICAgICAgICBiYXNlID0gaXRlci0+Z2V0KCk7
CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UpOwogICAgICAgICBpZiAoYmFzZS0+Z2V0
UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7CiAgICAgICAgICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBpZGVudCk7Ci0gICAgICAgICAg
ICBleGNlcHRpb25WYWx1ZSA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbjsKKyAg
ICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0
aW9uLmdldCgpOwogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihwcm9w
RHN0KSA9IEpTVmFsdWUocmVzdWx0KTsKQEAgLTU2NiwxMSArNTY2LDExIEBAIE5FVkVSX0lOTElO
RSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUoQ2FsbEZyYW1lKiYgY2FsbEZyYW1l
LCBKU1ZhbHVlIGV4CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKCFzY29wZUNoYWluLT5vYmpl
Y3QtPmluaGVyaXRzKCZKU0FjdGl2YXRpb246OmluZm8pKQogICAgICAgICAgICAgc2NvcGVDaGFp
biA9IHNjb3BlQ2hhaW4tPnBvcCgpOwotICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24g
PSBhc0FjdGl2YXRpb24oc2NvcGVDaGFpbi0+b2JqZWN0KTsKKyAgICAgICAgSlNBY3RpdmF0aW9u
KiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKHNjb3BlQ2hhaW4tPm9iamVjdC5nZXQoKSk7CiAg
ICAgICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoKTsKICAgICAgICAgaWYgKEpTVmFsdWUg
YXJndW1lbnRzID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcihvbGRDb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKS5qc1ZhbHVlKCkpIHsKICAg
ICAgICAgICAgIGlmICghb2xkQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAg
ICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRpb24pOwor
ICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPnNldEFjdGl2YXRpb24oY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOwogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmIChvbGRDb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSAmJiAhb2xkQ29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSkgewogICAgICAgICBpZiAoSlNWYWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKG9sZENvZGVCbG9jay0+YXJn
dW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFsdWUoKSkKQEAgLTY0OCw3ICs2NDgsNyBAQCBzdGF0aWMg
dm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFcnJvckluc3Rh
bmNlKiBleGNlcHRpb24sCiAgICAgICAgIG1lc3NhZ2UgPSBtYWtlVVN0cmluZyhtZXNzYWdlLCAi
IChuZWFyICcuLi4iLCBjb2RlQmxvY2stPnNvdXJjZSgpLT5nZXRSYW5nZShzdGFydCwgc3RvcCks
ICIuLi4nKSIpOwogICAgIH0KIAotICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KGdsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG1lc3NhZ2UpKTsK
KyAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbWVzc2FnZSkpOwogfQogCiBO
RVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbihDYWxs
RnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCkKQEAgLTEwODUsNyArMTA4NSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVj
CiAgICAgZm9yIChTY29wZUNoYWluTm9kZSogbm9kZSA9IHNjb3BlQ2hhaW47IDsgbm9kZSA9IG5v
ZGUtPm5leHQpIHsKICAgICAgICAgQVNTRVJUKG5vZGUpOwogICAgICAgICBpZiAobm9kZS0+b2Jq
ZWN0LT5pc1ZhcmlhYmxlT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KG5vZGUtPm9iamVjdCk7CisgICAgICAgICAg
ICB2YXJpYWJsZU9iamVjdCA9IHN0YXRpY19jYXN0PEpTVmFyaWFibGVPYmplY3QqPihub2RlLT5v
YmplY3QuZ2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
MTAwLDcgKzExMDAsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRh
YmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplYwogICAgICAgICAgICAgcHVz
aGVkU2NvcGUgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIFNjb3BlIGZvciBCYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplcgotICAgICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciBv
cHRpbWl6ZXIodmFyaWFibGVPYmplY3QpOworICAgICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGlt
aXplciBvcHRpbWl6ZXIoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIHZhcmlhYmxlT2JqZWN0KTsK
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFibGVzOyArK2kpIHsK
ICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT52YXJpYWJs
ZShpKTsKQEAgLTEzNzEsNyArMTM3MSw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVy
Ojp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoKICAgICAg
ICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQncyBh
IGdvb2QgYmV0IHRoYXQgaXQKICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEg
ZGljdGlvbmFyeS4KICAgICAgICAgaWYgKGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rp
b25hcnkoKSkgewotICAgICAgICAgICAgYmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmpl
Y3QoKTsKKyAgICAgICAgICAgIGJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNh
bGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIG9mZnNldCA9IGJhc2VPYmplY3Qt
PnN0cnVjdHVyZSgpLT5nZXQocHJvcGVydHlOYW1lKTsKICAgICAgICAgfQogCkBAIC0xNDc1LDgg
KzE0NzUsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25G
bGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogCiAjZGVmaW5lIENIRUNLX0ZPUl9F
WENFUFRJT04oKSBcCiAgICAgZG8geyBcCi0gICAgICAgIGlmIChVTkxJS0VMWShnbG9iYWxEYXRh
LT5leGNlcHRpb24gIT0gSlNWYWx1ZSgpKSkgeyBcCi0gICAgICAgICAgICBleGNlcHRpb25WYWx1
ZSA9IGdsb2JhbERhdGEtPmV4Y2VwdGlvbjsgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZ2xvYmFs
RGF0YS0+ZXhjZXB0aW9uLmdldCgpICE9IEpTVmFsdWUoKSkpIHsgXAorICAgICAgICAgICAgZXhj
ZXB0aW9uVmFsdWUgPSBnbG9iYWxEYXRhLT5leGNlcHRpb24uZ2V0KCk7IFwKICAgICAgICAgICAg
IGdvdG8gdm1fdGhyb3c7IFwKICAgICAgICAgfSBcCiAgICAgfSB3aGlsZSAoMCkKQEAgLTI0MDgs
NyArMjQwOCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlv
bkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgICAgICBBU1NFUlQo
aXRlciAhPSBlbmQpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVCgoKml0ZXIpLT5pc1Zhcmlh
YmxlT2JqZWN0KCkpOwotICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0KiBzY29wZSA9IHN0YXRpY19j
YXN0PEpTVmFyaWFibGVPYmplY3QqPigqaXRlcik7CisgICAgICAgIEpTVmFyaWFibGVPYmplY3Qq
IHNjb3BlID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KGl0ZXItPmdldCgpKTsKICAg
ICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBzY29wZS0+cmVnaXN0ZXJBdChpbmRl
eCk7CiAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUtPnIoZHN0KS5qc1ZhbHVlKCkpOwogICAgICAg
ICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfc2NvcGVkX3Zhcik7CkBAIC0yNDM5LDcgKzI0
MzksNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFn
IGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICB9CiAKICAgICAgICAgQVNT
RVJUKCgqaXRlciktPmlzVmFyaWFibGVPYmplY3QoKSk7Ci0gICAgICAgIEpTVmFyaWFibGVPYmpl
Y3QqIHNjb3BlID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KCppdGVyKTsKKyAgICAg
ICAgSlNWYXJpYWJsZU9iamVjdCogc2NvcGUgPSBzdGF0aWNfY2FzdDxKU1ZhcmlhYmxlT2JqZWN0
Kj4oaXRlci0+Z2V0KCkpOwogICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1Zh
bHVlKCkpOwogICAgICAgICBzY29wZS0+cmVnaXN0ZXJBdChpbmRleCkgPSBKU1ZhbHVlKGNhbGxG
cmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgo
b3BfcHV0X3Njb3BlZF92YXIpOwpAQCAtMzA4MCw3ICszMDgwLDcgQEAgc2tpcF9pZF9jdXN0b21f
c2VsZjoKICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSB2UENbM10udS5vcGVyYW5kOwogICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHZQQ1s3XS51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJhc2VPYmplY3Qt
PmdldERpcmVjdExvY2F0aW9uKGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5k
KSkpID09IG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0T2Zm
c2V0KG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOworICAgICAgICAgICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwg
b2Zmc2V0LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAKICAgICAgICAgICAgICAg
ICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbik7CiAgICAgICAg
ICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMzExNSw3ICszMTE1LDcgQEAgc2tpcF9p
ZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENbNV0u
dS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
T2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbihj
b2RlQmxvY2stPmlkZW50aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOwotICAg
ICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChvZmZzZXQsIGNhbGxGcmFt
ZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXRE
aXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5y
KHZhbHVlKS5qc1ZhbHVlKCkpOwogCiAgICAgICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5H
VEgob3BfcHV0X2J5X2lkX3JlcGxhY2UpOwogICAgICAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJ
T04oKTsKQEAgLTMzMDksNyArMzMwOSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAg
ICAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAg
ICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAgICAg
ICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKLSAgICAgICAgICAgICAgICAgICAganNB
cnJheS0+c2V0SW5kZXgoaSwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOworICAgICAg
ICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleCgqZ2xvYmFsRGF0YSwgaSwgY2FsbEZyYW1l
LT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAganNBcnJheS0+SlNBcnJheTo6cHV0KGNhbGxGcmFtZSwgaSwgY2FsbEZyYW1lLT5y
KHZhbHVlKS5qc1ZhbHVlKCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0ZUFycmF5
KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNj
ZXNzSW5kZXgoaSkpIHsKQEAgLTM4MzUsNyArMzgzNSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6
CiAKICAgICAgICAgaWYgKHRoaXNWYWx1ZSA9PSBnbG9iYWxPYmplY3QgJiYgZnVuY1ZhbCA9PSBn
bG9iYWxPYmplY3QtPmV2YWxGdW5jdGlvbigpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGNhbGxFdmFsKGNhbGxGcmFtZSwgcmVnaXN0ZXJGaWxlLCBhcmd2LCBhcmdDb3VudCwgcmVn
aXN0ZXJPZmZzZXQpOwotICAgICAgICAgICAgaWYgKChleGNlcHRpb25WYWx1ZSA9IGdsb2JhbERh
dGEtPmV4Y2VwdGlvbikpCisgICAgICAgICAgICBpZiAoKGV4Y2VwdGlvblZhbHVlID0gZ2xvYmFs
RGF0YS0+ZXhjZXB0aW9uLmdldCgpKSkKICAgICAgICAgICAgICAgICBnb3RvIHZtX3Rocm93Owog
ICAgICAgICAgICAgZnVuY3Rpb25SZXR1cm5WYWx1ZSA9IHJlc3VsdDsKIApAQCAtNDEwMyw3ICs0
MTAzLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAgICAgICAgaWYgKEpTVmFsdWUg
YXJndW1lbnRzVmFsdWUgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVy
KGFyZ3VtZW50cykpLmpzVmFsdWUoKSkgewogICAgICAgICAgICAgICAgIGlmICghY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJndW1l
bnRzVmFsdWUpLT5zZXRBY3RpdmF0aW9uKGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpKTsK
KyAgICAgICAgICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJndW1lbnRzVmFsdWUpLT5zZXRBY3Rp
dmF0aW9uKCpnbG9iYWxEYXRhLCBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZSBhcmd1bWVudHNWYWx1ZSA9IGNh
bGxGcmFtZS0+cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzKSkuanNWYWx1
ZSgpKSB7CiAgICAgICAgICAgICBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGY1MjFhYTUzNDdlZjRiNDFkNjMy
Yjk4ZDk0YjBhMDI5OTk3OTdhMDguLjc0ZjUwNWY4OWRmMTQxMjFmMDczMWI2YmM2MjFkMWQxZjIz
MGQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC04NDUsNyAr
ODQ1LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KICAgICAgICAgLy8gU2luY2Ugd2UncmUg
YWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQK
ICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KICAgICAg
ICAgaWYgKHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAg
ICAgICAgICAgIHNsb3RCYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCgpOworICAg
ICAgICAgICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNlT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+Z2V0KHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05
NDIsMTcgKzk0MiwxNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsRAogCiAjZGVmaW5lIENIRUNL
X0ZPUl9FWENFUFRJT04oKSBcCiAgICAgZG8geyBcCi0gICAgICAgIGlmIChVTkxJS0VMWShzdGFj
a0ZyYW1lLmdsb2JhbERhdGEtPmV4Y2VwdGlvbikpIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0
YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmdldCgpKSkgXAogICAgICAgICAgICAgVk1f
VEhST1dfRVhDRVBUSU9OKCk7IFwKICAgICB9IHdoaWxlICgwKQogI2RlZmluZSBDSEVDS19GT1Jf
RVhDRVBUSU9OX0FUX0VORCgpIFwKICAgICBkbyB7IFwKLSAgICAgICAgaWYgKFVOTElLRUxZKHN0
YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKSkgXAorICAgICAgICBpZiAoVU5MSUtFTFko
c3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5leGNlcHRpb24uZ2V0KCkpKSBcCiAgICAgICAgICAgICBW
TV9USFJPV19FWENFUFRJT05fQVRfRU5EKCk7IFwKICAgICB9IHdoaWxlICgwKQogI2RlZmluZSBD
SEVDS19GT1JfRVhDRVBUSU9OX1ZPSUQoKSBcCiAgICAgZG8geyBcCi0gICAgICAgIGlmIChVTkxJ
S0VMWShzdGFja0ZyYW1lLmdsb2JhbERhdGEtPmV4Y2VwdGlvbikpIHsgXAorICAgICAgICBpZiAo
VU5MSUtFTFkoc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5leGNlcHRpb24uZ2V0KCkpKSB7IFwKICAg
ICAgICAgICAgIFZNX1RIUk9XX0VYQ0VQVElPTl9BVF9FTkQoKTsgXAogICAgICAgICAgICAgcmV0
dXJuOyBcCiAgICAgICAgIH0gXApAQCAtMTQ2Niw3ICsxNDY2LDcgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9tZXRob2RfY2hlY2spCiAgICAgICAg
IC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxvb3AsIGl0J3MgYSBn
b29kIGJldCB0aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGRp
Y3Rpb25hcnkuCiAgICAgICAgIGlmIChzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlzRGlj
dGlvbmFyeSgpKQotICAgICAgICAgICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5
T2JqZWN0KCk7CisgICAgICAgICAgICBzbG90QmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlP
YmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwogCiAgICAgICAgIC8vIFRoZSByZXN1bHQg
ZmV0Y2hlZCBzaG91bGQgYWx3YXlzIGJlIHRoZSBjYWxsZWUhCiAgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gSlNWYWx1ZShjYWxsZWUpKTsKQEAgLTE2NTYsNyArMTY1Niw3IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkKICAgICAg
ICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQncyBh
IGdvb2QgYmV0IHRoYXQgaXQKICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEg
ZGljdGlvbmFyeS4KICAgICAgICAgaWYgKHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNE
aWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAgIHNsb3RCYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlv
bmFyeU9iamVjdCgpOworICAgICAgICAgICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9u
YXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIG9mZnNldCA9
IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IH0KIApAQCAtMjE0Nyw3ICsyMTQ3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3Bf
dGVhcl9vZmZfYWN0aXZhdGlvbikKICAgICBhY3RpdmF0aW9uLT5jb3B5UmVnaXN0ZXJzKCk7CiAg
ICAgaWYgKEpTVmFsdWUgdiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCkpIHsKICAgICAg
ICAgaWYgKCFzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
KQotICAgICAgICAgICAgYXNBcmd1bWVudHModiktPnNldEFjdGl2YXRpb24oYWN0aXZhdGlvbik7
CisgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+c2V0QWN0aXZhdGlvbigqc3RhY2tGcmFtZS5n
bG9iYWxEYXRhLCBhY3RpdmF0aW9uKTsKICAgICB9CiB9CiAKQEAgLTIyMDQsNyArMjIwNCw3IEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9yZXNvbHZlKQogCiAgICAg
SWRlbnRpZmllciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaWRlbnRpZmllcigpOwogICAg
IGRvIHsKLSAgICAgICAgSlNPYmplY3QqIG8gPSAqaXRlcjsKKyAgICAgICAgSlNPYmplY3QqIG8g
PSBpdGVyLT5nZXQoKTsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qobyk7CiAgICAgICAgIGlm
IChvLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsKQEAg
LTIzOTcsNyArMjM5Nyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV92
YWwpCiAgICAgICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkgewogICAg
ICAgICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKICAgICAgICAg
ICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKLSAgICAgICAgICAgICAgICBqc0FycmF5
LT5zZXRJbmRleChpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgo
Kmdsb2JhbERhdGEsIGksIHZhbHVlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBqc0FycmF5LT5KU0FycmF5OjpwdXQoY2FsbEZyYW1lLCBpLCB2YWx1ZSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoaXNKU0J5dGVBcnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFy
cmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CkBAIC0yNjQ1LDcgKzI2NDUsNyBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZV9za2lwKQog
ICAgIH0KICAgICBJZGVudGlmaWVyJiBpZGVudCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pZGVudGlm
aWVyKCk7CiAgICAgZG8gewotICAgICAgICBKU09iamVjdCogbyA9ICppdGVyOworICAgICAgICBK
U09iamVjdCogbyA9IGl0ZXItPmdldCgpOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvKTsK
ICAgICAgICAgaWYgKG8tPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkg
ewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwg
aWRlbnQpOwpAQCAtMjk3NCw3ICsyOTc0LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2Rl
ZEpTVmFsdWUsIG9wX3Jlc29sdmVfd2l0aF9iYXNlKQogICAgIElkZW50aWZpZXImIGlkZW50ID0g
c3RhY2tGcmFtZS5hcmdzWzBdLmlkZW50aWZpZXIoKTsKICAgICBKU09iamVjdCogYmFzZTsKICAg
ICBkbyB7Ci0gICAgICAgIGJhc2UgPSAqaXRlcjsKKyAgICAgICAgYmFzZSA9IGl0ZXItPmdldCgp
OwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICAgICAgaWYgKGJhc2UtPmdl
dFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAgICAgICAgSlNW
YWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwpAQCAtMzQ4MCw3
ICszNDgwLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZtX3Rocm93KQogewogICAg
IFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKICAgICBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEgPSBzdGFja0ZyYW1lLmdsb2JhbERhdGE7Ci0gICAgRXhjZXB0aW9uSGFuZGxlciBo
YW5kbGVyID0gaml0VGhyb3coZ2xvYmFsRGF0YSwgc3RhY2tGcmFtZS5jYWxsRnJhbWUsIGdsb2Jh
bERhdGEtPmV4Y2VwdGlvbiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uTG9jYXRpb24pOworICAgIEV4
Y2VwdGlvbkhhbmRsZXIgaGFuZGxlciA9IGppdFRocm93KGdsb2JhbERhdGEsIHN0YWNrRnJhbWUu
Y2FsbEZyYW1lLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZ2V0KCksIGdsb2JhbERhdGEtPmV4Y2Vw
dGlvbkxvY2F0aW9uKTsKICAgICBTVFVCX1NFVF9SRVRVUk5fQUREUkVTUyhoYW5kbGVyLmNhdGNo
Um91dGluZSk7CiAgICAgcmV0dXJuIGhhbmRsZXIuY2FsbEZyYW1lOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAppbmRleCBkZDRiNjc3YTQxM2U2OWNkMWYzNjQyNWY3YWQ5Y2UwOGJiZTJlNDQzLi45MTJi
NTFhODA4M2U2YzI2Yzc5YTdmMzFhYzBjNmFiNDY2MTM1Yjk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cApAQCAtMTY5LDcgKzE2OSw3IEBAIEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KGNvbnN0IFZl
Y3RvcjxVU3RyaW5nPiYgYXJndW1lbnRzKQogICAgIEpTT2JqZWN0KiBhcnJheSA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZ2xvYmFsRXhlYygpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
Z3VtZW50cy5zaXplKCk7ICsraSkKICAgICAgICAgYXJyYXktPnB1dChnbG9iYWxFeGVjKCksIGks
IGpzU3RyaW5nKGdsb2JhbEV4ZWMoKSwgYXJndW1lbnRzW2ldKSk7Ci0gICAgcHV0RGlyZWN0KElk
ZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICBwdXREaXJl
Y3QoZ2xvYmFsRXhlYygpLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAi
YXJndW1lbnRzIiksIGFycmF5KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblByaW50KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5jcHAKaW5kZXggYWIyYjVkN2RhZTcxNDNjNTE2NmFhOTQzY2I4YWJjZTM3ZTRi
YTY3ZS4uYTg2MmVhMDFlNTJkNzYxZmQzNTE4YzNkODgxNmQ1NmFmY2JkNWUyZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdm9p
ZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6bWFya0xpc3RzKE1hcmtTdGFjayYgbWFya1N0YWNrLCBM
aXN0U2V0JiBtYXJrU2V0KQogICAgIExpc3RTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1hcmtTZXQuZW5k
KCk7CiAgICAgZm9yIChMaXN0U2V0OjppdGVyYXRvciBpdCA9IG1hcmtTZXQuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyKiBsaXN0ID0gKml0
OwotICAgICAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1
ZSo+KGxpc3QtPm1fYnVmZmVyKSwgbGlzdC0+bV9zaXplKTsKKyAgICAgICAgbWFya1N0YWNrLmRl
cHJlY2F0ZWRBcHBlbmRWYWx1ZXMobGlzdC0+bV9idWZmZXIsIGxpc3QtPm1fc2l6ZSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAppbmRl
eCAzOTg4NmE4Njk1ODBlZDI3YTdkMzY0YTgxZDVlMzM3ZTA0MTQ5MGRmLi5mNmFmZWM3ZGRhMjQz
OTY0OGY0ZmYwOTcxNDlhNTY1ZTdmZWUxM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTQ4LDE3ICs0OCwxNyBAQCB2b2lkIEFyZ3VtZW50czo6
bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgIEpTT2JqZWN0OjptYXJrQ2hp
bGRyZW4obWFya1N0YWNrKTsKIAogICAgIGlmIChkLT5yZWdpc3RlckFycmF5KQotICAgICAgICBt
YXJrU3RhY2suYXBwZW5kVmFsdWVzKHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KGQtPnJlZ2lz
dGVyQXJyYXkuZ2V0KCkpLCBkLT5udW1QYXJhbWV0ZXJzKTsKKyAgICAgICAgbWFya1N0YWNrLmRl
cHJlY2F0ZWRBcHBlbmRWYWx1ZXMoZC0+cmVnaXN0ZXJBcnJheS5nZXQoKSwgZC0+bnVtUGFyYW1l
dGVycyk7CiAKICAgICBpZiAoZC0+ZXh0cmFBcmd1bWVudHMpIHsKICAgICAgICAgdW5zaWduZWQg
bnVtRXh0cmFBcmd1bWVudHMgPSBkLT5udW1Bcmd1bWVudHMgLSBkLT5udW1QYXJhbWV0ZXJzOwot
ICAgICAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+
KGQtPmV4dHJhQXJndW1lbnRzKSwgbnVtRXh0cmFBcmd1bWVudHMpOworICAgICAgICBtYXJrU3Rh
Y2suZGVwcmVjYXRlZEFwcGVuZFZhbHVlcyhkLT5leHRyYUFyZ3VtZW50cywgbnVtRXh0cmFBcmd1
bWVudHMpOwogICAgIH0KIAotICAgIG1hcmtTdGFjay5hcHBlbmQoZC0+Y2FsbGVlKTsKKyAgICBt
YXJrU3RhY2suYXBwZW5kKCZkLT5jYWxsZWUpOwogCiAgICAgaWYgKGQtPmFjdGl2YXRpb24pCi0g
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQoZC0+YWN0aXZhdGlvbik7CisgICAgICAgIG1hcmtTdGFj
ay5hcHBlbmQoJmQtPmFjdGl2YXRpb24pOwogfQogCiB2b2lkIEFyZ3VtZW50czo6Y29weVRvUmVn
aXN0ZXJzKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIqIGJ1ZmZlciwgdWludDMyX3QgbWF4U2l6
ZSkKQEAgLTE5Nyw3ICsxOTcsNyBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYQogCiAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlICYmIExJS0VMWSgh
ZC0+b3ZlcnJvZGVDYWxsZWUpKSB7CiAgICAgICAgIGlmICghZC0+aXNTdHJpY3RNb2RlKSB7Ci0g
ICAgICAgICAgICBzbG90LnNldFZhbHVlKGQtPmNhbGxlZSk7CisgICAgICAgICAgICBzbG90LnNl
dFZhbHVlKGQtPmNhbGxlZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgICAgICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoZXhlYyk7CkBA
IC0yMjgsNyArMjI4LDcgQEAgYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3AKICAgICAKICAgICBpZiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUgJiYgTElLRUxZKCFk
LT5vdmVycm9kZUNhbGxlZSkpIHsKICAgICAgICAgaWYgKCFkLT5pc1N0cmljdE1vZGUpIHsKLSAg
ICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihkLT5jYWxsZWUsIERvbnRFbnVtKTsK
KyAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihkLT5jYWxsZWUuZ2V0KCksIERv
bnRFbnVtKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGNy
ZWF0ZVN0cmljdE1vZGVDYWxsZWVJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTI4MCwxNCArMjgwLDE0
IEBAIHZvaWQgQXJndW1lbnRzOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsCiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGggJiYgIWQtPm92ZXJyb2RlTGVuZ3RoKSB7CiAgICAg
ICAgIGQtPm92ZXJyb2RlTGVuZ3RoID0gdHJ1ZTsKLSAgICAgICAgcHV0RGlyZWN0KHByb3BlcnR5
TmFtZSwgdmFsdWUsIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgRG9udEVudW0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2Fs
bGVlICYmICFkLT5vdmVycm9kZUNhbGxlZSkgewogICAgICAgICBpZiAoIWQtPmlzU3RyaWN0TW9k
ZSkgewogICAgICAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSB0cnVlOwotICAgICAgICAgICAg
cHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgdmFsdWUsIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIERvbnRFbnVt
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBjcmVhdGVTdHJpY3RN
b2RlQ2FsbGVlSWZOZWNlc3NhcnkoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oCmluZGV4IGZlOTAwYTI3ODlhNjk1N2JmYTNmZTNkZWQwZmY4Y2ZkNGY2MDVh
OTMuLmEzZDdmZTQ1Nzk0YzMyYzkyYjE3ODRkMTE5OGExMDQzZDgzZmY5OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBcmd1bWVudHNEYXRhKTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBBcmd1bWVudHNE
YXRhKCkgeyB9Ci0gICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbjsKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPEpTQWN0aXZhdGlvbj4gYWN0aXZhdGlvbjsKIAogICAgICAgICB1bnNpZ25lZCBu
dW1QYXJhbWV0ZXJzOwogICAgICAgICBwdHJkaWZmX3QgZmlyc3RQYXJhbWV0ZXJJbmRleDsKQEAg
LTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93bkFycmF5UHRyPGJvb2w+
IGRlbGV0ZWRBcmd1bWVudHM7CiAgICAgICAgIFJlZ2lzdGVyIGV4dHJhQXJndW1lbnRzRml4ZWRC
dWZmZXJbNF07CiAKLSAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlOworICAgICAgICBXcml0ZUJh
cnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOwogICAgICAgICBib29sIG92ZXJyb2RlTGVuZ3RoIDog
MTsKICAgICAgICAgYm9vbCBvdmVycm9kZUNhbGxlZSA6IDE7CiAgICAgICAgIGJvb2wgb3ZlcnJv
ZGVDYWxsZXIgOiAxOwpAQCAtODYsOSArODYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBjb3B5VG9SZWdpc3RlcnMoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlciogYnVmZmVyLCB1
aW50MzJfdCBtYXhTaXplKTsKICAgICAgICAgdm9pZCBjb3B5UmVnaXN0ZXJzKCk7CiAgICAgICAg
IGJvb2wgaXNUb3JuT2ZmKCkgY29uc3QgeyByZXR1cm4gZC0+cmVnaXN0ZXJBcnJheTsgfQotICAg
ICAgICB2b2lkIHNldEFjdGl2YXRpb24oSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uKQorICAgICAg
ICB2b2lkIHNldEFjdGl2YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0FjdGl2YXRp
b24qIGFjdGl2YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGQtPmFjdGl2YXRpb24gPSBh
Y3RpdmF0aW9uOworICAgICAgICAgICAgZC0+YWN0aXZhdGlvbi5zZXQoZ2xvYmFsRGF0YSwgdGhp
cywgYWN0aXZhdGlvbik7CiAgICAgICAgICAgICBkLT5yZWdpc3RlcnMgPSAmYWN0aXZhdGlvbi0+
cmVnaXN0ZXJBdCgwKTsKICAgICAgICAgfQogCkBAIC0xNTgsNyArMTU4LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGQtPmZpcnN0UGFyYW1ldGVySW5kZXggPSBmaXJzdFBhcmFtZXRlcklu
ZGV4OwogICAgICAgICBkLT5udW1Bcmd1bWVudHMgPSBudW1Bcmd1bWVudHM7CiAKLSAgICAgICAg
ZC0+YWN0aXZhdGlvbiA9IDA7CiAgICAgICAgIGQtPnJlZ2lzdGVycyA9IGNhbGxGcmFtZS0+cmVn
aXN0ZXJzKCk7CiAKICAgICAgICAgUmVnaXN0ZXIqIGV4dHJhQXJndW1lbnRzOwpAQCAtMTc2LDcg
KzE3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGQtPmV4dHJhQXJndW1lbnRzID0g
ZXh0cmFBcmd1bWVudHM7CiAKLSAgICAgICAgZC0+Y2FsbGVlID0gY2FsbGVlOworICAgICAgICBk
LT5jYWxsZWUuc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBjYWxsZWUpOwogICAg
ICAgICBkLT5vdmVycm9kZUxlbmd0aCA9IGZhbHNlOwogICAgICAgICBkLT5vdmVycm9kZUNhbGxl
ZSA9IGZhbHNlOwogICAgICAgICBkLT5vdmVycm9kZUNhbGxlciA9IGZhbHNlOwpAQCAtMTk1LDcg
KzE5NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGQtPm51bVBhcmFtZXRlcnMgPSAw
OwogICAgICAgICBkLT5udW1Bcmd1bWVudHMgPSBudW1Bcmd1bWVudHM7Ci0gICAgICAgIGQtPmFj
dGl2YXRpb24gPSAwOwogCiAgICAgICAgIFJlZ2lzdGVyKiBleHRyYUFyZ3VtZW50czsKICAgICAg
ICAgaWYgKG51bUFyZ3VtZW50cyA+IHNpemVvZihkLT5leHRyYUFyZ3VtZW50c0ZpeGVkQnVmZmVy
KSAvIHNpemVvZihSZWdpc3RlcikpCkBAIC0yMDksNyArMjA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgZC0+ZXh0cmFBcmd1bWVudHMgPSBleHRyYUFyZ3VtZW50czsKIAotICAgICAg
ICBkLT5jYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOworICAgICAgICBk
LT5jYWxsZWUuc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBhc0Z1bmN0aW9uKGNh
bGxGcmFtZS0+Y2FsbGVlKCkpKTsKICAgICAgICAgZC0+b3ZlcnJvZGVMZW5ndGggPSBmYWxzZTsK
ICAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSBmYWxzZTsKICAgICAgICAgZC0+b3ZlcnJvZGVD
YWxsZXIgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjMyZDQ2NmUyMjlmNDJiZDFiMzliMmZiMDk2ZDRkNzUx
Y2NjMWQ4Zi4uNWQwYWRiZGE2MGFjZDc4NjIwNWRiNjlmY2E1ZTZhYThiYzFlMDZjNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
QEAgLTQyLDEwICs0MiwxMCBAQCBBcnJheUNvbnN0cnVjdG9yOjpBcnJheUNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIDogSW50ZXJu
YWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
SWRlbnRpZmllcihleGVjLCBhcnJheVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkp
CiB7CiAgICAgLy8gRUNNQSAxNS40LjMuMSBBcnJheS5wcm90b3R5cGUKLSAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVBy
b3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnByb3RvdHlwZSwgYXJyYXlQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKIAogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCi0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
anNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERl
bGV0ZSk7CiAKICAgICAvLyBFUzUKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5pc0FycmF5LCBhcnJheUNvbnN0cnVjdG9ySXNBcnJheSksIERvbnRFbnVtKTsKQEAgLTYyLDcg
KzYyLDcgQEAgc3RhdGljIGlubGluZSBKU09iamVjdCogY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1
aXJrKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGkKICAgICB9CiAKICAgICAvLyBvdGhlcndp
c2UgdGhlIGFycmF5IGlzIGNvbnN0cnVjdGVkIHdpdGggdGhlIGFyZ3VtZW50cyBpbiBpdAotICAg
IHJldHVybiBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5h
cnJheVN0cnVjdHVyZSgpLCBhcmdzKTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVj
dHVyZSgpLCBhcmdzKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDc2MTVm
ZmNhNDVlNmY5ZGZiMmE3MTE4YWIzODBhZDY4OGZhYjIwODkuLjI3M2Q0NTA3Y2JmZjYwMTIwN2I0
N2VjMTE1YmQxMjI3OTM0YjljNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTU0NSw5ICs1NDUsOSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgIEpTQXJyYXkqIHJlc09iaiA9IG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlKCksIGRlbGV0ZUNvdW50LCBDcmVhdGVDb21wYWN0
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHJlc09iajsKLQorICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBr
IDwgZGVsZXRlQ291bnQ7IGsrKykKLSAgICAgICAgcmVzT2JqLT51bmNoZWNrZWRTZXRJbmRleChr
LCBnZXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqLCBrICsgYmVnaW4pKTsKKyAgICAgICAgcmVzT2Jq
LT51bmNoZWNrZWRTZXRJbmRleChnbG9iYWxEYXRhLCBrLCBnZXRQcm9wZXJ0eShleGVjLCB0aGlz
T2JqLCBrICsgYmVnaW4pKTsKIAogICAgIHJlc09iai0+c2V0TGVuZ3RoKGRlbGV0ZUNvdW50KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyLmgKaW5kZXggZGIyZDFkN2NjMWJkZjdiZTYzNWQxOTYwMTMzYzA5
MzQzZTczMzBiOS4uMGY2YTY0NjU0ZDhkM2IyYzBlMzFhZDIxYWRhN2YyODI0MzgwZjM3YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25P
cHRpbWl6ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJh
bnNpdGlvbk9wdGltaXplci5oCkBAIC0zNCw4ICszNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIHsKICAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIpOwogICAgIHB1YmxpYzoKLSAgICAg
ICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIoSlNPYmplY3QqIG9iamVjdCkKLSAgICAgICAg
ICAgIDogbV9vYmplY3Qob2JqZWN0KQorICAgICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXpl
cihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBvYmplY3QpCisgICAgICAgICAg
ICA6IG1fZ2xvYmFsRGF0YSgmZ2xvYmFsRGF0YSkKKyAgICAgICAgICAgICwgbV9vYmplY3Qob2Jq
ZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICAgICAgbV9vYmplY3QtPnNldFN0cnVjdHVyZShT
dHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24obV9vYmplY3QtPnN0cnVj
dHVyZSgpKSk7CkBAIC00MywxMCArNDQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
fkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyKCkKICAgICAgICAgewotICAgICAgICAgICAgbV9v
YmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KCk7CisgICAgICAgICAgICBtX29iamVjdC0+
ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoKm1fZ2xvYmFsRGF0YSk7CiAgICAgICAgIH0KIAogICAg
IHByaXZhdGU6CisgICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwogICAgICAgICBK
U09iamVjdCogbV9vYmplY3Q7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggMDE2N2UwMzdlNzM5MTk1
NmVhYjI3OGEzNzFlM2NhYjZjMmU1MGEwMC4uYzM2YmU4MmIyYTg4Yjg1MmJkNjM5MjZhOWM2NTY1
MTJhN2MzZmJlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuQ29uc3RydWN0b3IuY3BwCkBAIC0zMSwxNyArMzEsMTcgQEAgQVNTRVJUX0NMQVNTX0ZJ
VFNfSU5fQ0VMTChCb29sZWFuQ29uc3RydWN0b3IpOwogQm9vbGVhbkNvbnN0cnVjdG9yOjpCb29s
ZWFuQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgQm9vbGVhblByb3Rv
dHlwZSogYm9vbGVhblByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgYm9v
bGVhblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7Ci0gICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYm9vbGVh
blByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgYm9vbGVhblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOwogCiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IK
LSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8
IERvbnRFbnVtKTsKIH0KIAogLy8gRUNNQSAxNS42LjIKIEpTT2JqZWN0KiBjb25zdHJ1Y3RCb29s
ZWFuKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBCb29sZWFu
T2JqZWN0KiBvYmogPSBuZXcgKGV4ZWMpIEJvb2xlYW5PYmplY3QoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5ib29sZWFuT2JqZWN0U3RydWN0dXJlKCkpOwotICAgIG9iai0+c2V0SW50ZXJu
YWxWYWx1ZShqc0Jvb2xlYW4oYXJncy5hdCgwKS50b0Jvb2xlYW4oZXhlYykpKTsKKyAgICBvYmot
PnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc0Jvb2xlYW4oYXJncy5hdCgw
KS50b0Jvb2xlYW4oZXhlYykpKTsKICAgICByZXR1cm4gb2JqOwogfQogCkBAIC03Miw3ICs3Miw3
IEBAIENhbGxUeXBlIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEmIGNh
bGxEYXRhKQogSlNPYmplY3QqIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaW1tZWRpYXRlQm9vbGVhblZhbHVlKQogewogICAgIEJv
b2xlYW5PYmplY3QqIG9iaiA9IG5ldyAoZXhlYykgQm9vbGVhbk9iamVjdChleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPmJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUoKSk7Ci0gICAgb2JqLT5zZXRJ
bnRlcm5hbFZhbHVlKGltbWVkaWF0ZUJvb2xlYW5WYWx1ZSk7CisgICAgb2JqLT5zZXRJbnRlcm5h
bFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgaW1tZWRpYXRlQm9vbGVhblZhbHVlKTsKICAgICBy
ZXR1cm4gb2JqOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Cb29sZWFuUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jv
b2xlYW5Qcm90b3R5cGUuY3BwCmluZGV4IDdmZmQwOTU4OGEzMzE5NDY3OTkzNDY1YTdkNjhkMGE2
NGJmZDU3ODIuLjczMTQ1NmVlMWI4MjQwNTZlZWM4MzhlYmI2ZjVkZDE0MWRkNDZhMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJv
b2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOwogQm9vbGVhblByb3RvdHlwZTo6Qm9v
bGVhblByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKQogICAgIDogQm9vbGVhbk9iamVjdChzdHJ1Y3R1cmUp
CiB7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICBzZXRJbnRl
cm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNCb29sZWFuKGZhbHNlKSk7CiAKICAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZl
RnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgYm9vbGVhblByb3RvRnVu
Y1RvU3RyaW5nKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnZhbHVlT2YsIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKSwgRG9udEVudW0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNlcnZhdGl2ZVNldC5jcHAKaW5kZXgg
OTMwZmU0YWEyMTk1YmQ4ODY5YmI1NzE0NmJkNDdiNjdjNzU0OGM1YS4uYmM4YmQ2ZGZlYTk4Mjc0
MTFjYzJiOTljOGI5ODg2ZmVmM2M5ZWQyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db25zZXJ2YXRpdmVTZXQuY3BwCkBAIC0zNiw3ICszNiw3IEBAIGlubGluZSBi
b29sIGlzUG9pbnRlckFsaWduZWQodm9pZCogcCkKIHZvaWQgQ29uc2VydmF0aXZlU2V0Ojpncm93
KCkKIHsKICAgICBzaXplX3QgbmV3Q2FwYWNpdHkgPSBtX2NhcGFjaXR5ID09IGlubGluZUNhcGFj
aXR5ID8gbm9uSW5saW5lQ2FwYWNpdHkgOiBtX2NhcGFjaXR5ICogMjsKLSAgICBKU0NlbGwqKiBu
ZXdTZXQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqKj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21t
aXQobmV3Q2FwYWNpdHkgKiBzaXplb2YoSlNDZWxsKikpKTsKKyAgICBEZXByZWNhdGVkUHRyPEpT
Q2VsbD4qIG5ld1NldCA9IHN0YXRpY19jYXN0PERlcHJlY2F0ZWRQdHI8SlNDZWxsPio+KE9TQWxs
b2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KG5ld0NhcGFjaXR5ICogc2l6ZW9mKEpTQ2VsbCopKSk7
CiAgICAgbWVtY3B5KG5ld1NldCwgbV9zZXQsIG1fc2l6ZSAqIHNpemVvZihKU0NlbGwqKSk7CiAg
ICAgaWYgKG1fc2V0ICE9IG1faW5saW5lU2V0KQogICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21t
aXRBbmRSZWxlYXNlKG1fc2V0LCBtX2NhcGFjaXR5ICogc2l6ZW9mKEpTQ2VsbCopKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNlcnZhdGl2ZVNldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmgKaW5kZXggMjc2
YmU4OWEyNWM0ZmFkODdlMzFhYzFiYzBmNTYwNzIxYzY1YjljZi4uZTdjMmM0YWIxYzU3ZmZiOWVk
ODQwMmYwMjhmZTM5NzYzMzIyOGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc2VydmF0aXZlU2V0LmgKQEAgLTQ5LDEwICs0OSwxMCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZ3JvdygpOwogCiAgICAgSGVhcCogbV9oZWFwOwotICAgIEpTQ2VsbCoqIG1fc2V0Owor
ICAgIERlcHJlY2F0ZWRQdHI8SlNDZWxsPiogbV9zZXQ7CiAgICAgc2l6ZV90IG1fc2l6ZTsKICAg
ICBzaXplX3QgbV9jYXBhY2l0eTsKLSAgICBKU0NlbGwqIG1faW5saW5lU2V0W2lubGluZUNhcGFj
aXR5XTsKKyAgICBEZXByZWNhdGVkUHRyPEpTQ2VsbD4gbV9pbmxpbmVTZXRbaW5saW5lQ2FwYWNp
dHldOwogfTsKIAogaW5saW5lIENvbnNlcnZhdGl2ZVNldDo6Q29uc2VydmF0aXZlU2V0KEhlYXAq
IGhlYXApCkBAIC02NiwxMyArNjYsMTMgQEAgaW5saW5lIENvbnNlcnZhdGl2ZVNldDo6Q29uc2Vy
dmF0aXZlU2V0KEhlYXAqIGhlYXApCiBpbmxpbmUgQ29uc2VydmF0aXZlU2V0Ojp+Q29uc2VydmF0
aXZlU2V0KCkKIHsKICAgICBpZiAobV9zZXQgIT0gbV9pbmxpbmVTZXQpCi0gICAgICAgIE9TQWxs
b2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2UobV9zZXQsIG1fY2FwYWNpdHkgKiBzaXplb2YoSlND
ZWxsKikpOworICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKG1fc2V0LCBt
X2NhcGFjaXR5ICogc2l6ZW9mKERlcHJlY2F0ZWRQdHI8SlNDZWxsPiopKTsKIH0KIAogaW5saW5l
IHZvaWQgQ29uc2VydmF0aXZlU2V0OjptYXJrKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCi0gICAgICAgIG1hcmtTdGFjay5h
cHBlbmQobV9zZXRbaV0pOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3NldFtpXSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGNiZTEyZGEyMzYxNzY3NGE3NzI4YzE3Nzky
ODNhY2E3NDNkZmE2NC4uZjFmMzk1NmE4M2Q1NmNhM2Y5ZjBlZGUzOTMzMzI1N2YzOGQ3MGU5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
Y3BwCkBAIC02MSwxMyArNjEsMTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVVUQyhFeGVjU3RhdGUqKTsKIERhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rp
b25TdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUpCiAgICAgOiBJbnRlcm5h
bEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJ
ZGVudGlmaWVyKGV4ZWMsIGRhdGVQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQog
ewotICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSwgZGF0ZVByb3RvdHlwZSwgRG9udEVudW18RG9udERlbGV0ZXxSZWFkT25seSk7
CisgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGRhdGVQcm90b3R5cGUsIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogICAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucGFyc2UsIGRhdGVQYXJzZSksIERvbnRFbnVtKTsKICAgICAgIHB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldy
YXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgNywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLlVUQywgZGF0ZVVUQyksIERvbnRFbnVtKTsKICAgICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVG
dW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVj
dHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5vdywgZGF0ZU5vdyksIERvbnRFbnVtKTsK
IAotICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoNyksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
KyAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNyksIFJlYWRPbmx5IHwgRG9udEVu
dW0gfCBEb250RGVsZXRlKTsKIH0KIAogLy8gRUNNQSAxNS45LjMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCmluZGV4IDg1NjJlMmQ0NjM3NjZiNjll
ZDRkYTgyNjQxMDY2ZjcyYzQ5N2M3MjcuLjgwMzhhZjUzODdiOTdiOWU4Mjg2MTkyNTljMjg4ODRl
Y2UwN2RjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJ
bnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3Rh
bmNlLmNwcApAQCAtMzQsMjIgKzM0LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFz
c0luZm8gRGF0ZUluc3RhbmNlOjppbmZvID0geyJEYXRlIiwgMCwgMCwgMH07CiAKLURhdGVJbnN0
YW5jZTo6RGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gc3RydWN0dXJlKQorRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVj
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKICAgICA6IEpTV3JhcHBl
ck9iamVjdChzdHJ1Y3R1cmUpCiB7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShqc05hTigpKTsKKyAg
ICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNOYU4oKSk7CiB9CiAKLURh
dGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBkb3VibGUgdGltZSkKK0RhdGVJbnN0YW5jZTo6RGF0ZUluc3Rh
bmNlKEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1
cmUsIGRvdWJsZSB0aW1lKQogICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKIHsKLSAg
ICBzZXRJbnRlcm5hbFZhbHVlKGpzTnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7CisgICAgc2V0SW50
ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7
CiB9CiAKIERhdGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgZG91Ymxl
IHRpbWUpCiAgICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5kYXRlU3RydWN0dXJlKCkpCiB7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShqc051bWJlcih0aW1l
Q2xpcCh0aW1lKSkpOworICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBq
c051bWJlcih0aW1lQ2xpcCh0aW1lKSkpOwogfQogCiBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSog
RGF0ZUluc3RhbmNlOjpjYWxjdWxhdGVHcmVnb3JpYW5EYXRlVGltZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwCmluZGV4IDA4NWNiMzNjMTU0Njg1ZDUxZWQyNjYzNTdiYWNlMzFhYjUyZTI1YmYuLjk0YjY5
YTg1ZDRiMmNlMjRiOWJhOWY4MTcxMzMzZWU5NThhMThlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC04NDUsNyArODQ1LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VGltZShFeGVjU3Rh
dGUqIGV4ZWMpCiAKICAgICBkb3VibGUgbWlsbGkgPSB0aW1lQ2xpcChleGVjLT5hcmd1bWVudCgw
KS50b051bWJlcihleGVjKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihtaWxsaSk7
Ci0gICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKKyAgICB0aGlzRGF0
ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkBAIC04NjAsNyArODYwLDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIHNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKEV4ZWNTdGF0ZSog
ZXhlYywgaW50IG51bUFyZ3NUb1VzZSwKICAgICAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291
bnQoKSB8fCBpc25hbihtaWxsaSkpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc05hTigp
OwotICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQpOworICAgICAg
ICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIHJlc3Vs
dCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CiAgICAg
IApAQCAtODc3LDEyICs4NzcsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHNldE5ld1ZhbHVl
RnJvbVRpbWVBcmdzKEV4ZWNTdGF0ZSogZXhlYywgaW50IG51bUFyZ3NUb1VzZSwKICAgICBncmVn
b3JpYW5EYXRlVGltZS5jb3B5RnJvbSgqb3RoZXIpOwogICAgIGlmICghZmlsbFN0cnVjdHVyZXNV
c2luZ1RpbWVBcmdzKGV4ZWMsIG51bUFyZ3NUb1VzZSwgJm1zLCAmZ3JlZ29yaWFuRGF0ZVRpbWUp
KSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOYU4oKTsKLSAgICAgICAgdGhpc0RhdGVP
YmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKKyAgICAgICAgdGhpc0RhdGVPYmotPnNldElu
dGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfSAKICAgICAKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lVG9NUyhleGVjLCBncmVnb3JpYW5EYXRlVGlt
ZSwgbXMsIGlucHV0SXNVVEMpKTsKLSAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShy
ZXN1bHQpOworICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgcmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
QEAgLTg5NSw3ICs4OTUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9t
RGF0ZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAgIERhdGVJbnN0
YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOwogICAgIGlmICgh
ZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOYU4o
KTsKLSAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKKyAgICAg
ICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1
bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfSAgICAg
IAogICAgIApAQCAtOTE3LDEyICs5MTcsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHNldE5l
d1ZhbHVlRnJvbURhdGVBcmdzKEV4ZWNTdGF0ZSogZXhlYywgaW50IG51bUFyZ3NUb1VzZSwKICAg
ICAKICAgICBpZiAoIWZpbGxTdHJ1Y3R1cmVzVXNpbmdEYXRlQXJncyhleGVjLCBudW1BcmdzVG9V
c2UsICZtcywgJmdyZWdvcmlhbkRhdGVUaW1lKSkgewogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTmFOKCk7Ci0gICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7
CisgICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAg
IH0gCiAgICAgICAgICAgIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZ3JlZ29yaWFu
RGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lLCBtcywgaW5wdXRJc1VUQykpOwot
ICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7CisgICAgdGhpc0RhdGVP
YmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtMTAxOSw3ICsxMDE5LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNl
KHRoaXNWYWx1ZSk7ICAgICAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgeyAKICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc05hTigpOwotICAgICAgICB0aGlzRGF0ZU9iai0+c2V0
SW50ZXJuYWxWYWx1ZShyZXN1bHQpOworICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxW
YWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKICAgICB9CiAgICAgCkBAIC0xMDQxLDEzICsxMDQxLDEzIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFllYXIoRXhlY1N0YXRl
KiBleGVjKQogICAgIGRvdWJsZSB5ZWFyID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnRlZ2VyUHJl
c2VydmVOYU4oZXhlYyk7CiAgICAgaWYgKCFpc2Zpbml0ZSh5ZWFyKSkgewogICAgICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTmFOKCk7Ci0gICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZh
bHVlKHJlc3VsdCk7CisgICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogICAgIH0KICAgICAgICAgICAgIAogICAgIGdyZWdvcmlhbkRhdGVUaW1lLnllYXIg
PSB0b0ludDMyKCh5ZWFyID4gOTkgfHwgeWVhciA8IDApID8geWVhciAtIDE5MDAgOiB5ZWFyKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lVG9NUyhleGVj
LCBncmVnb3JpYW5EYXRlVGltZSwgbXMsIGZhbHNlKSk7Ci0gICAgdGhpc0RhdGVPYmotPnNldElu
dGVybmFsVmFsdWUocmVzdWx0KTsKKyAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShl
eGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwCmluZGV4IDQzMjZhNGRmMjMzOGJjY2U5NGEwNTE2ZDRiNTRjODNmMGYx
MzRiZDMuLjJlNTNiOTU0MDBlNzJjYWVhMTM4MGVjZTgxYjVkNTVmYWQ4Mjk1ZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCkBA
IC0zMyw4ICszMyw4IEBAIEVycm9yQ29uc3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgOiBJbnRlcm5hbEZ1
bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVu
dGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsK
ICAgICAvLyBFQ01BIDE1LjExLjMuMSBFcnJvci5wcm90b3R5cGUKLSAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBlcnJvclByb3Rv
dHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJv
dG90eXBlLCBlcnJvclByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKIH0KIAogLy8gRUNNQSAxNS45LjMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggMGYzMTUzYzUwNmQ5OGE5
ZTA4YjBiYTBhYmUzNGRiMTY5Njk4YWI2ZC4uYTYyMDhkNTI2ODlhM2ZlOTc2MTBhM2NiY2U3NmYw
YTA2NWMxZTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJ
bnN0YW5jZS5jcHAKQEAgLTI5LDE0ICsyOSwxNCBAQCBFcnJvckluc3RhbmNlOjpFcnJvckluc3Rh
bmNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dQog
ICAgIDogSlNPYmplY3Qoc3RydWN0dXJlKQogICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2Uo
ZmFsc2UpCiB7Ci0gICAgcHV0RGlyZWN0KGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3Nh
Z2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsICIiKSk7CisgICAgcHV0RGlyZWN0KCpnbG9iYWxEYXRh
LCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyhnbG9iYWxEYXRh
LCAiIikpOwogfQogCiBFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmIG1lc3NhZ2UpCiAgICAgOiBKU09iamVjdChzdHJ1Y3R1cmUpCiAgICAgLCBtX2Fw
cGVuZFNvdXJjZVRvTWVzc2FnZShmYWxzZSkKIHsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YS0+
cHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbWVzc2FnZSkpOwor
ICAgIHB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bWVz
c2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbWVzc2FnZSkpOwogfQogCiBFcnJvckluc3RhbmNl
KiBFcnJvckluc3RhbmNlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcApp
bmRleCBkOGZjODI5ZDc5ODdhN2Q4MGFiMTdmMjk5OTRmZDNiODBkZjUwZmFhLi5iNGUwYTdjZTZj
ZDA1ZTM4OTAwMDdkNTY1ZjhjOTRhZDVmZDQzMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEVycm9y
UHJvdG90eXBlOjpFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIE5vCiB7CiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRk
ZWQgbGF0ZXIgaW4gRXJyb3JDb25zdHJ1Y3RvcidzIGNvbnN0cnVjdG9yCiAKLSAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2
aWFsU3RyaW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFt
ZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1
bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGVycm9yUHJvdG9GdW5jVG9T
dHJpbmcpLCBEb250RW51bSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggNDViNDgwMjNmODBlYmQ2ZGE3
MjE0NTJkODg4YWIyNjdkZjdkNGZjNC4uOTMzYjExZjk5YzRiNmIzZDRlZWU0MjgyOTVlY2Y2ZmUy
ZmZhMTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKEZ1bmN0aW9uQ29uc3RydWN0b3IpOwogRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6RnVu
Y3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBGdW5jdGlvblBy
b3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVj
LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMs
IGZ1bmN0aW9uUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKLSAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBm
dW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgZnVuY3Rpb25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogICAgIC8vIE51bWJlciBvZiBhcmd1bWVudHMgZm9yIGNv
bnN0cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFdpdGhGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcAppbmRleCBjZDc3MzlkMTljZjdiODg3NmZjZTcxMmMwMTYyMDg3ZjA5ZGJmNTNjLi5lNjUx
NTM4MTExMDMxOGQzYWQ3ODY1OTlhZDU2OWE2Y2FjNDRmNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9G
dW5jQ2FsbChFeGVjU3RhdGUqKTsKIEZ1bmN0aW9uUHJvdG90eXBlOjpGdW5jdGlvblByb3RvdHlw
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigm
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLm51bGxJZGVudGlmaWVyKQogewotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJl
cigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiB2b2lkIEZ1bmN0
aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZUZ1bmN0aW9uU3Ry
dWN0dXJlLCBOYXRpdmVGdW5jdGlvbldyYXBwZXIqKiBjYWxsRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uV3JhcHBlcioqIGFwcGx5RnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCA3ZTU0MDUzZjk2Y2NlNzNiNTU2MGE4MmU1ZTgx
MGUxZTVkMjgwZjZjLi4yYjlmNDQ0MjMxZjhhNWQzZTI5ODk1NDhlZDk4NDBiMGM3MzAxNTc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAg
LTMzLDkgKzMzLDkgQEAgdm9pZCBHZXR0ZXJTZXR0ZXI6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2sm
IG1hcmtTdGFjaykKICAgICBKU0NlbGw6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogCiAgICAg
aWYgKG1fZ2V0dGVyKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1fZ2V0dGVyKTsKKyAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCgmbV9nZXR0ZXIpOwogICAgIGlmIChtX3NldHRlcikKLSAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZChtX3NldHRlcik7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
Jm1fc2V0dGVyKTsKIH0KIAogYm9vbCBHZXR0ZXJTZXR0ZXI6OmlzR2V0dGVyU2V0dGVyKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKaW5kZXgg
ZTdiMTkzOGNlOTZiYzBiNTJmMTY0ZTlkM2JhMzcyNzU5YTg2M2FkOC4uZmZhYjk0ZGZiMjVmYmY4
NDAwYWIwZTlmODZiMThlYmYyNDNmOGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmgKQEAgLTM4LDE3ICszOCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIEdldHRlclNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgICAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRhKCkuZ2V0dGVyU2V0dGVyU3RydWN0dXJl
LmdldCgpKQotICAgICAgICAgICAgLCBtX2dldHRlcigwKQotICAgICAgICAgICAgLCBtX3NldHRl
cigwKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0No
aWxkcmVuKE1hcmtTdGFjayYpOwogCi0gICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7
IHJldHVybiBtX2dldHRlcjsgfQotICAgICAgICB2b2lkIHNldEdldHRlcihKU09iamVjdCogZ2V0
dGVyKSB7IG1fZ2V0dGVyID0gZ2V0dGVyOyB9Ci0gICAgICAgIEpTT2JqZWN0KiBzZXR0ZXIoKSBj
b25zdCB7IHJldHVybiBtX3NldHRlcjsgfQotICAgICAgICB2b2lkIHNldFNldHRlcihKU09iamVj
dCogc2V0dGVyKSB7IG1fc2V0dGVyID0gc2V0dGVyOyB9CisgICAgICAgIEpTT2JqZWN0KiBnZXR0
ZXIoKSBjb25zdCB7IHJldHVybiBtX2dldHRlci5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldEdl
dHRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBnZXR0ZXIpIHsgbV9nZXR0
ZXIuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGdldHRlcik7IH0KKyAgICAgICAgSlNPYmplY3QqIHNl
dHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0
U2V0dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIHNldHRlcikgeyBtX3Nl
dHRlci5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc2V0dGVyKTsgfQogICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwg
VHlwZUluZm8oR2V0dGVyU2V0dGVyVHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKSwgQW5vbnlt
b3VzU2xvdENvdW50KTsKQEAgLTU2LDggKzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAKLSAg
ICAgICAgSlNPYmplY3QqIG1fZ2V0dGVyOwotICAgICAgICBKU09iamVjdCogbV9zZXR0ZXI7ICAK
KyAgICAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2dldHRlcjsKKyAgICAgICAgV3JpdGVC
YXJyaWVyPEpTT2JqZWN0PiBtX3NldHRlcjsgIAogICAgIH07CiAKICAgICBHZXR0ZXJTZXR0ZXIq
IGFzR2V0dGVyU2V0dGVyKEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAKaW5kZXggM2FkNDY0NDVkNTc2ZWU1M2Y1
YzRiMjc4ZDc3YjkyZWNjZGU3YWZhNy4uMjcyMDdlMjg0ZjRhMzI3OTA5OGZlNDE3NjE3NTI1NmI5
YThiM2Y2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFs
RXZhbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9i
YWxFdmFsRnVuY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoR2xvYmFsRXZhbEZ1bmN0aW9uKTsKIAogR2xvYmFsRXZhbEZ1bmN0aW9uOjpHbG9iYWxF
dmFsRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgaW50IGxlbiwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEpTR2xvYmFsT2JqZWN0
KiBjYWNoZWRHbG9iYWxPYmplY3QpCiAgICAgOiBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgbGVuLCBuYW1lLCBmdW5jdGlvbikKLSAgICAsIG1fY2FjaGVk
R2xvYmFsT2JqZWN0KGNhY2hlZEdsb2JhbE9iamVjdCkKKyAgICAsIG1fY2FjaGVkR2xvYmFsT2Jq
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY2FjaGVkR2xvYmFsT2JqZWN0KQogewogICAg
IEFTU0VSVF9BUkcoY2FjaGVkR2xvYmFsT2JqZWN0LCBjYWNoZWRHbG9iYWxPYmplY3QpOwogfQpA
QCAtNDIsNyArNDIsNyBAQCBHbG9iYWxFdmFsRnVuY3Rpb246Okdsb2JhbEV2YWxGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogdm9pZCBHbG9iYWxFdmFs
RnVuY3Rpb246Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBQcm90
b3R5cGVGdW5jdGlvbjo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0gICAgbWFya1N0YWNrLmFw
cGVuZChtX2NhY2hlZEdsb2JhbE9iamVjdCk7CisgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9jYWNo
ZWRHbG9iYWxPYmplY3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmgKaW5kZXggYjg4OWNh
OThhOWM1NTkxZjRjOTkwYTI5ZTQyOTYzMDk1MjYxMzVhMS4uMTNmMDk0NmZhMzEwYTYzNDY4YmUw
OGEyMjgwYTYzMjZmYmM2YjA0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgR2xvYmFsRXZhbEZ1bmN0aW9uIDogcHVibGljIFByb3RvdHlwZUZ1bmN0
aW9uIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEdsb2JhbEV2YWxGdW5jdGlvbihFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGludCBsZW4s
IGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbiwgSlNHbG9iYWxPYmplY3QqIGV4cGVj
dGVkVGhpc09iamVjdCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBjYWNoZWRHbG9iYWxPYmpl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEdsb2JhbE9iamVjdDsgfQorICAgICAgICBKU0ds
b2JhbE9iamVjdCogY2FjaGVkR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRH
bG9iYWxPYmplY3QuZ2V0KCk7IH0KIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgICAgIHsgCkBAIC00
Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIG1fY2FjaGVkR2xvYmFsT2JqZWN0OworICAgICAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxP
YmplY3Q+IG1fY2FjaGVkR2xvYmFsT2JqZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcAppbmRleCA5ZWMzNzk5YjA0Y2Iw
YTVkYWJjNGY1OTRhMDdkMzAzODE0ZjllOTU2Li4yMzc0NDQ4ZDBkMjYzM2JiNDI2M2MyNjdlNjlk
YWE2ZmMzZTgxYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9I
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcApAQCAt
MjA0LDcgKzIwNCw3IEBAIHZvaWQgSGVhcDo6bWFya1Byb3RlY3RlZE9iamVjdHMoTWFya1N0YWNr
JiBtYXJrU3RhY2spCiB7CiAgICAgUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBlbmQgPSBtX3By
b3RlY3RlZFZhbHVlcy5lbmQoKTsKICAgICBmb3IgKFByb3RlY3RDb3VudFNldDo6aXRlcmF0b3Ig
aXQgPSBtX3Byb3RlY3RlZFZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAg
IG1hcmtTdGFjay5hcHBlbmQoaXQtPmZpcnN0KTsKKyAgICAgICAgbWFya1N0YWNrLmRlcHJlY2F0
ZWRBcHBlbmQoJml0LT5maXJzdCk7CiB9CiAKIHZvaWQgSGVhcDo6cHVzaFRlbXBTb3J0VmVjdG9y
KFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+KiB0ZW1wVmVjdG9yKQpAQCAtMjI5LDcgKzIyOSw3IEBA
IHZvaWQgSGVhcDo6bWFya1RlbXBTb3J0VmVjdG9ycyhNYXJrU3RhY2smIG1hcmtTdGFjaykKICAg
ICAgICAgVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj46Oml0ZXJhdG9yIHZlY3RvckVuZCA9IHRlbXBT
b3J0aW5nVmVjdG9yLT5lbmQoKTsKICAgICAgICAgZm9yIChWZWN0b3I8VmFsdWVTdHJpbmdQYWly
Pjo6aXRlcmF0b3IgdmVjdG9ySXQgPSB0ZW1wU29ydGluZ1ZlY3Rvci0+YmVnaW4oKTsgdmVjdG9y
SXQgIT0gdmVjdG9yRW5kOyArK3ZlY3Rvckl0KSB7CiAgICAgICAgICAgICBpZiAodmVjdG9ySXQt
PmZpcnN0KQotICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQodmVjdG9ySXQtPmZpcnN0
KTsKKyAgICAgICAgICAgICAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZCgmdmVjdG9ySXQt
PmZpcnN0KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEhl
YXA6Om1hcmtSb290cygpCiAgICAgaWYgKG1fbWFya0xpc3RTZXQgJiYgbV9tYXJrTGlzdFNldC0+
c2l6ZSgpKQogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6bWFya0xpc3RzKG1hcmtTdGFj
aywgKm1fbWFya0xpc3RTZXQpOwogICAgIGlmIChtX2dsb2JhbERhdGEtPmV4Y2VwdGlvbikKLSAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZChtX2dsb2JhbERhdGEtPmV4Y2VwdGlvbik7CisgICAgICAg
IG1hcmtTdGFjay5hcHBlbmQoJm1fZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKTsKICAgICBpZiAobV9n
bG9iYWxEYXRhLT5maXJzdFN0cmluZ2lmaWVyVG9NYXJrKQogICAgICAgICBKU09OT2JqZWN0Ojpt
YXJrU3RyaW5naWZpZXJzKG1hcmtTdGFjaywgbV9nbG9iYWxEYXRhLT5maXJzdFN0cmluZ2lmaWVy
VG9NYXJrKTsKICAgICBtYXJrU3RhY2suZHJhaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMGE4ZDlkZWZjZDRjZmEz
ZTJhMWJmNTNmNDcxYTVjOTgyYzlhMDZjNy4uZjE5YWUwZDhhYjBiOWEzNTM2YmYwYmVlOGM3MTk1
Y2Q1YThhZTBiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSW50ZXJuYWxGdW5jdGlvbjo6SW50
ZXJuYWxGdW5jdGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKIElu
dGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKICAgICA6IEpTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3Qo
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbmFt
ZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIg
OiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0K
IAogY29uc3QgVVN0cmluZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3Jh
cHBlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIu
aAppbmRleCAxMGRlZDRjZDQ0MThiZDliY2Q4ZjNjMTBjNTdkOWJhZTUwZjZmODFmLi5hMTEzZTkx
OTg2NGQ1ODUyMTJlMzc1MWVmODA4NThiNzYxOWUyOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNBUElWYWx1ZVdyYXBwZXIgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAgICAgZnJpZW5kIEpTVmFsdWUganNBUElWYWx1ZVdyYXBwZXIoRXhlY1N0YXRl
KiwgSlNWYWx1ZSk7CiAgICAgcHVibGljOgotICAgICAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQorICAgICAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZS5nZXQoKTsgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FQSVZhbHVlV3Jh
cHBlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIEpTQVBJVmFsdWVXcmFwcGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmds
b2JhbERhdGEoKS5hcGlXcmFwcGVyU3RydWN0dXJlLmdldCgpKQotICAgICAgICAgICAgLCBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICB7CisgICAgICAgICAgICBtX3ZhbHVlLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNDZWxs
KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4gbV92YWx1ZTsKICAgICB9OwogCiAgICAgaW5saW5lIEpTVmFsdWUg
anNBUElWYWx1ZVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNDI4NDAz
ZDI1OGY1NWE5Zjg4NGM2YzYyZWU3ODFmMjAxMTE5ZWRmOC4uMmY3OTRmOWYyNjMwMTUxZThlYzIy
NjIwNmNkNDI2ZjdjZmI4YzdhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FjdGl2YXRpb24uY3BwCkBAIC02MSwxMiArNjEsMTIgQEAgdm9pZCBKU0FjdGl2YXRpb246
Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKICAgICBzaXplX3QgbnVtUGFyYW1l
dGVyc01pbnVzVGhpcyA9IGQoKS0+ZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgp
OwogCiAgICAgc2l6ZV90IGNvdW50ID0gbnVtUGFyYW1ldGVyc01pbnVzVGhpczsKLSAgICBtYXJr
U3RhY2suYXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXksIGNvdW50KTsKKyAgICBtYXJrU3RhY2su
ZGVwcmVjYXRlZEFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5LCBjb3VudCk7CiAKICAgICBzaXpl
X3QgbnVtVmFycyA9IGQoKS0+ZnVuY3Rpb25FeGVjdXRhYmxlLT5jYXB0dXJlZFZhcmlhYmxlQ291
bnQoKTsKIAogICAgIC8vIFNraXAgdGhlIGNhbGwgZnJhbWUsIHdoaWNoIHNpdHMgYmV0d2VlbiB0
aGUgcGFyYW1ldGVycyBhbmQgdmFycy4KLSAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKHJlZ2lz
dGVyQXJyYXkgKyBjb3VudCArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwgbnVt
VmFycywgTWF5Q29udGFpbk51bGxWYWx1ZXMpOworICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBw
ZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXkgKyBjb3VudCArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1l
SGVhZGVyU2l6ZSwgbnVtVmFycywgTWF5Q29udGFpbk51bGxWYWx1ZXMpOwogfQogCiBpbmxpbmUg
Ym9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgSlNB
Y3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTQWN0aXZhdGlv
bjo6cHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQordm9pZCBKU0FjdGl2YXRpb246OnB1dChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2
YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKQEAgLTE1
NSw3ICsxNTUsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6cHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZQogICAgIC8vIHByb3BlcnRpZXMg
YXJlIG5vbi1zdGFuZGFyZCBleHRlbnNpb25zIHRoYXQgb3RoZXIgaW1wbGVtZW50YXRpb25zIGRv
IG5vdAogICAgIC8vIGV4cG9zZSBpbiB0aGUgYWN0aXZhdGlvbiBvYmplY3QuCiAgICAgQVNTRVJU
KCFoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAgIHB1dERpcmVjdChwcm9wZXJ0eU5h
bWUsIHZhbHVlLCAwLCB0cnVlLCBzbG90KTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCB0cnVlLCBzbG90KTsKIH0KIAogLy8gRklYTUU6
IE1ha2UgdGhpcyBmdW5jdGlvbiBob25vciBSZWFkT25seSAoY29uc3QpIGFuZCBEb250RW51bQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA1NTY2MDNiZGNk
YzdjMTAxZDY1N2EzY2Q2OTY4MTlhMDVkMTg2NzMzLi5jZTI1ZjdiM2UzMmYyOWEzZmRmOGVhNmZh
YzM0ZWU1YmQwM2VjM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcApAQCAtMTg4LDkgKzE4OCw5IEBAIEpTQXJyYXk6OkpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgsCiAjZW5kaWYK
ICAgICAgICAgbV9zdG9yYWdlLT5tX2xlbmd0aCA9IGluaXRpYWxMZW5ndGg7CiAgICAgICAgIG1f
c3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciA9IDA7Ci0gICAgICAgIEpTVmFsdWUqIHZlY3Rv
ciA9IG1fc3RvcmFnZS0+bV92ZWN0b3I7CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiog
dmVjdG9yID0gbV9zdG9yYWdlLT5tX3ZlY3RvcjsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpbml0aWFsQ2FwYWNpdHk7ICsraSkKLSAgICAgICAgICAgIHZlY3RvcltpXSA9IEpTVmFs
dWUoKTsKKyAgICAgICAgICAgIHZlY3RvcltpXS5jbGVhcigpOwogICAgIH0KIAogICAgIGNoZWNr
Q29uc2lzdGVuY3koKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBKU0FycmF5OjpKU0FycmF5KE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3Ro
LAogICAgIEhlYXA6OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChzdG9yYWdlU2l6
ZShpbml0aWFsQ2FwYWNpdHkpKTsKIH0KIAotSlNBcnJheTo6SlNBcnJheShOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgQXJnTGlzdCYgbGlzdCkKK0pTQXJyYXk6
OkpTQXJyYXkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgQXJnTGlzdCYgbGlzdCkKICAgICA6IEpTT2JqZWN0KHN0
cnVjdHVyZSkKIHsKICAgICB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkgPSBsaXN0LnNpemUoKTsK
QEAgLTIyNSwxMiArMjI1LDEyIEBAIEpTQXJyYXk6OkpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IEFyZ0xpc3QmIGxpc3QpCiAjZW5kaWYKIAogICAg
IHNpemVfdCBpID0gMDsKLSAgICBKU1ZhbHVlKiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9y
OworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogdmVjdG9yID0gbV9zdG9yYWdlLT5tX3ZlY3Rv
cjsKICAgICBBcmdMaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsaXN0LmVuZCgpOwogICAgIGZv
ciAoQXJnTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsaXN0LmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCwgKytpKQotICAgICAgICB2ZWN0b3JbaV0gPSAqaXQ7CisgICAgICAgIHZlY3RvcltpXS5z
ZXQoZ2xvYmFsRGF0YSwgdGhpcywgKml0KTsKICAgICBmb3IgKDsgaSA8IGluaXRpYWxTdG9yYWdl
OyBpKyspCi0gICAgICAgIHZlY3RvcltpXSA9IEpTVmFsdWUoKTsKKyAgICAgICAgdmVjdG9yW2ld
LmNsZWFyKCk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTI1NywxNiArMjU3LDE2
IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaSwgUHJvcGVydHlTbG90JiBzbG90CiAgICAgfQogCiAgICAgaWYgKGkgPCBtX3ZlY3Rv
ckxlbmd0aCkgewotICAgICAgICBKU1ZhbHVlJiB2YWx1ZVNsb3QgPSBzdG9yYWdlLT5tX3ZlY3Rv
cltpXTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZVNsb3QgPSBzdG9yYWdl
LT5tX3ZlY3RvcltpXTsKICAgICAgICAgaWYgKHZhbHVlU2xvdCkgewotICAgICAgICAgICAgc2xv
dC5zZXRWYWx1ZVNsb3QoJnZhbHVlU2xvdCk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlU2xv
dCh2YWx1ZVNsb3Quc2xvdCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBzdG9yYWdlLT5tX3Nw
YXJzZVZhbHVlTWFwKSB7CiAgICAgICAgIGlmIChpID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgp
IHsKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5m
aW5kKGkpOwogICAgICAgICAgICAgaWYgKGl0ICE9IG1hcC0+ZW5kKCkpIHsKLSAgICAgICAgICAg
ICAgICBzbG90LnNldFZhbHVlU2xvdCgmaXQtPnNlY29uZCk7CisgICAgICAgICAgICAgICAgc2xv
dC5zZXRWYWx1ZVNsb3QoaXQtPnNlY29uZC5zbG90KCkpOwogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMDUsMTYgKzMwNSwxNiBAQCBi
b29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcgogICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5tX2xlbmd0
aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGkgPCBtX3ZlY3Rvckxl
bmd0aCkgewotICAgICAgICAgICAgSlNWYWx1ZSYgdmFsdWUgPSBzdG9yYWdlLT5tX3ZlY3Rvcltp
XTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdmFsdWUgPSBzdG9yYWdlLT5t
X3ZlY3RvcltpXTsKICAgICAgICAgICAgIGlmICh2YWx1ZSkgewotICAgICAgICAgICAgICAgIGRl
c2NyaXB0b3Iuc2V0RGVzY3JpcHRvcih2YWx1ZSwgMCk7CisgICAgICAgICAgICAgICAgZGVzY3Jp
cHRvci5zZXREZXNjcmlwdG9yKHZhbHVlLmdldCgpLCAwKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChTcGFyc2VBcnJheVZh
bHVlTWFwKiBtYXAgPSBzdG9yYWdlLT5tX3NwYXJzZVZhbHVlTWFwKSB7CiAgICAgICAgICAgICBp
ZiAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7CiAgICAgICAgICAgICAgICAgU3BhcnNl
QXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmZpbmQoaSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGl0ICE9IG1hcC0+ZW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRv
ci5zZXREZXNjcmlwdG9yKGl0LT5zZWNvbmQsIDApOworICAgICAgICAgICAgICAgICAgICBkZXNj
cmlwdG9yLnNldERlc2NyaXB0b3IoaXQtPnNlY29uZC5nZXQoKSwgMCk7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAg
LTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgSlNBcnJheTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB9CiAKICAgICBpZiAoaSA8IG1fdmVjdG9yTGVu
Z3RoKSB7Ci0gICAgICAgIEpTVmFsdWUmIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ld
OworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1f
dmVjdG9yW2ldOwogICAgICAgICBpZiAodmFsdWVTbG90KSB7Ci0gICAgICAgICAgICB2YWx1ZVNs
b3QgPSB2YWx1ZTsKKyAgICAgICAgICAgIHZhbHVlU2xvdC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdmFsdWVTbG90ID0gdmFsdWU7CisgICAg
ICAgIHZhbHVlU2xvdC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAg
ICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOwogICAgICAgICByZXR1cm47CkBAIC0zOTUsMTEgKzM5NSwxMSBAQCBORVZFUl9JTkxJ
TkUgdm9pZCBKU0FycmF5OjpwdXRTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGks
IEpTVmFsdWUgdmFsdQogICAgICAgICAgICAgICAgIHN0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXAg
PSBtYXA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHBhaXI8U3BhcnNlQXJyYXlWYWx1
ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC0+YWRkKGksIHZhbHVlKTsKLSAgICAg
ICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkgeyAvLyBwcmUtZXhpc3RpbmcgZW50cnkKLSAgICAg
ICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IHZhbHVlOworICAgICAgICAgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+IHRlbXA7CisgICAgICAgICAgICBwYWlyPFNwYXJzZUFycmF5VmFs
dWVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtYXAtPmFkZChpLCB0ZW1wKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IHZhbHVlKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkgLy8gcHJlLWV4aXN0aW5n
IGVudHJ5CiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBzaXplX3QgY2FwYWNpdHkgPSBtYXAtPmNhcGFjaXR5KCk7CiAgICAgICAgICAgICBpZiAo
Y2FwYWNpdHkgIT0gc3RvcmFnZS0+cmVwb3J0ZWRNYXBDYXBhY2l0eSkgewpAQCAtNDE1LDcgKzQx
NSw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1dFNsb3dDYXNlKEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1CiAgICAgaWYgKCFtYXAgfHwgbWFwLT5pc0Vt
cHR5KCkpIHsKICAgICAgICAgaWYgKGluY3JlYXNlVmVjdG9yTGVuZ3RoKGkgKyAxKSkgewogICAg
ICAgICAgICAgc3RvcmFnZSA9IG1fc3RvcmFnZTsKLSAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVj
dG9yW2ldID0gdmFsdWU7CisgICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1f
bnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAg
ICAgIH0gZWxzZQpAQCAtNDU3LDE4ICs0NTcsMTkgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSlNBcnJh
eTo6cHV0U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHUK
ICAgICBzdG9yYWdlID0gbV9zdG9yYWdlOwogICAgIAogICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0
aCA9IG1fdmVjdG9yTGVuZ3RoOwotICAgIEpTVmFsdWUqIHZlY3RvciA9IHN0b3JhZ2UtPm1fdmVj
dG9yOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogdmVjdG9yID0gc3RvcmFnZS0+bV92ZWN0
b3I7CiAKICAgICBpZiAobmV3TnVtVmFsdWVzSW5WZWN0b3IgPT0gc3RvcmFnZS0+bV9udW1WYWx1
ZXNJblZlY3RvciArIDEpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gdmVjdG9yTGVuZ3Ro
OyBqIDwgbmV3VmVjdG9yTGVuZ3RoOyArK2opCi0gICAgICAgICAgICB2ZWN0b3Jbal0gPSBKU1Zh
bHVlKCk7CisgICAgICAgICAgICB2ZWN0b3Jbal0uY2xlYXIoKTsKICAgICAgICAgaWYgKGkgPiBN
SU5fU1BBUlNFX0FSUkFZX0lOREVYKQogICAgICAgICAgICAgbWFwLT5yZW1vdmUoaSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gdmVjdG9yTGVuZ3RoOyBqIDwgbWF4
KHZlY3Rvckxlbmd0aCwgTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCk7ICsraikKLSAgICAgICAgICAg
IHZlY3RvcltqXSA9IEpTVmFsdWUoKTsKKyAgICAgICAgICAgIHZlY3RvcltqXS5jbGVhcigpOwor
ICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaiA9IG1heCh2ZWN0b3JMZW5ndGgsIE1JTl9TUEFSU0VfQVJS
QVlfSU5ERVgpOyBqIDwgbmV3VmVjdG9yTGVuZ3RoOyArK2opCi0gICAgICAgICAgICB2ZWN0b3Jb
al0gPSBtYXAtPnRha2Uoaik7CisgICAgICAgICAgICB2ZWN0b3Jbal0uc2V0KGdsb2JhbERhdGEs
IHRoaXMsIG1hcC0+dGFrZShqKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKGkgPCBuZXdW
ZWN0b3JMZW5ndGgpOwpAQCAtNDc2LDcgKzQ3Nyw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEpTQXJy
YXk6OnB1dFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1
CiAgICAgbV92ZWN0b3JMZW5ndGggPSBuZXdWZWN0b3JMZW5ndGg7CiAgICAgc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvciA9IG5ld051bVZhbHVlc0luVmVjdG9yOwogCi0gICAgc3RvcmFnZS0+
bV92ZWN0b3JbaV0gPSB2YWx1ZTsKKyAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAK
QEAgLTUwMywxMiArNTA0LDEyIEBAIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBpKQogICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IG1fc3Rv
cmFnZTsKICAgICAKICAgICBpZiAoaSA8IG1fdmVjdG9yTGVuZ3RoKSB7Ci0gICAgICAgIEpTVmFs
dWUmIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4mIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOwogICAgICAgICBp
ZiAoIXZhbHVlU2xvdCkgewogICAgICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIHZhbHVlU2xvdCA9IEpTVmFs
dWUoKTsKKyAgICAgICAgdmFsdWVTbG90LmNsZWFyKCk7CiAgICAgICAgIC0tc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTYwNSw5ICs2MDYsOSBAQCBib29sIEpTQXJyYXk6OmluY3JlYXNlVmVj
dG9yTGVuZ3RoKHVuc2lnbmVkIG5ld0xlbmd0aCkKICAgICBzdG9yYWdlID0gbV9zdG9yYWdlID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8QXJyYXlTdG9yYWdlKj4oc3RhdGljX2Nhc3Q8Y2hhcio+KGJh
c2VTdG9yYWdlKSArIG1faW5kZXhCaWFzICogc2l6ZW9mKEpTVmFsdWUpKTsKICAgICBtX3N0b3Jh
Z2UtPm1fYWxsb2NCYXNlID0gYmFzZVN0b3JhZ2U7CiAKLSAgICBKU1ZhbHVlKiB2ZWN0b3IgPSBz
dG9yYWdlLT5tX3ZlY3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvciA9IHN0
b3JhZ2UtPm1fdmVjdG9yOwogICAgIGZvciAodW5zaWduZWQgaSA9IHZlY3Rvckxlbmd0aDsgaSA8
IG5ld1ZlY3Rvckxlbmd0aDsgKytpKQotICAgICAgICB2ZWN0b3JbaV0gPSBKU1ZhbHVlKCk7Cisg
ICAgICAgIHZlY3RvcltpXS5jbGVhcigpOwogCiAgICAgbV92ZWN0b3JMZW5ndGggPSBuZXdWZWN0
b3JMZW5ndGg7CiAgICAgCkBAIC02NjYsOSArNjY3LDkgQEAgdm9pZCBKU0FycmF5OjpzZXRMZW5n
dGgodW5zaWduZWQgbmV3TGVuZ3RoKQogICAgIGlmIChuZXdMZW5ndGggPCBsZW5ndGgpIHsKICAg
ICAgICAgdW5zaWduZWQgdXNlZFZlY3Rvckxlbmd0aCA9IG1pbihsZW5ndGgsIG1fdmVjdG9yTGVu
Z3RoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3TGVuZ3RoOyBpIDwgdXNlZFZlY3Rv
ckxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlJiB2YWx1ZVNsb3QgPSBzdG9yYWdl
LT5tX3ZlY3RvcltpXTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdmFsdWVT
bG90ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAgICAgICBib29sIGhhZFZhbHVlID0g
dmFsdWVTbG90OwotICAgICAgICAgICAgdmFsdWVTbG90ID0gSlNWYWx1ZSgpOworICAgICAgICAg
ICAgdmFsdWVTbG90LmNsZWFyKCk7CiAgICAgICAgICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0lu
VmVjdG9yIC09IGhhZFZhbHVlOwogICAgICAgICB9CiAKQEAgLTcwNiwxMSArNzA3LDExIEBAIEpT
VmFsdWUgSlNBcnJheTo6cG9wKCkKICAgICBKU1ZhbHVlIHJlc3VsdDsKIAogICAgIGlmIChsZW5n
dGggPCBtX3ZlY3Rvckxlbmd0aCkgewotICAgICAgICBKU1ZhbHVlJiB2YWx1ZVNsb3QgPSBzdG9y
YWdlLT5tX3ZlY3RvcltsZW5ndGhdOworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHZh
bHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2xlbmd0aF07CiAgICAgICAgIGlmICh2YWx1ZVNs
b3QpIHsKICAgICAgICAgICAgIC0tc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHZhbHVlU2xvdDsKLSAgICAgICAgICAgIHZhbHVlU2xvdCA9IEpTVmFs
dWUoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlU2xvdC5nZXQoKTsKKyAgICAgICAgICAg
IHZhbHVlU2xvdC5jbGVhcigpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9
IGpzVW5kZWZpbmVkKCk7CiAgICAgfSBlbHNlIHsKQEAgLTcxOCw3ICs3MTksNyBAQCBKU1ZhbHVl
IEpTQXJyYXk6OnBvcCgpCiAgICAgICAgIGlmIChTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBz
dG9yYWdlLT5tX3NwYXJzZVZhbHVlTWFwKSB7CiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVl
TWFwOjppdGVyYXRvciBpdCA9IG1hcC0+ZmluZChsZW5ndGgpOwogICAgICAgICAgICAgaWYgKGl0
ICE9IG1hcC0+ZW5kKCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBpdC0+c2Vjb25kOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgICAgICAg
ICAgbWFwLT5yZW1vdmUoaXQpOwogICAgICAgICAgICAgICAgIGlmIChtYXAtPmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgICAgICAgICBkZWxldGUgbWFwOwpAQCAtNzQyLDcgKzc0Myw3IEBAIHZv
aWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgQXJy
YXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwogCiAgICAgaWYgKHN0b3JhZ2UtPm1fbGVu
Z3RoIDwgbV92ZWN0b3JMZW5ndGgpIHsKLSAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3Jbc3RvcmFn
ZS0+bV9sZW5ndGhdID0gdmFsdWU7CisgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW3N0b3JhZ2Ut
Pm1fbGVuZ3RoXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAg
ICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgKytzdG9yYWdlLT5tX2xl
bmd0aDsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtNzU0LDcgKzc1NSw3IEBAIHZv
aWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAg
IGlmICghbWFwIHx8IG1hcC0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoaW5jcmVhc2VW
ZWN0b3JMZW5ndGgoc3RvcmFnZS0+bV9sZW5ndGggKyAxKSkgewogICAgICAgICAgICAgICAgIHN0
b3JhZ2UgPSBtX3N0b3JhZ2U7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3Jbc3Rv
cmFnZS0+bV9sZW5ndGhdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0
b3Jbc3RvcmFnZS0+bV9sZW5ndGhdLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHZhbHVl
KTsKICAgICAgICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAg
ICAgICAgICAgICAgKytzdG9yYWdlLT5tX2xlbmd0aDsKICAgICAgICAgICAgICAgICBjaGVja0Nv
bnNpc3RlbmN5KCk7CkBAIC04NTcsOSArODU4LDkgQEAgdm9pZCBKU0FycmF5Ojp1bnNoaWZ0Q291
bnQoRXhlY1N0YXRlKiBleGVjLCBpbnQgY291bnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBKU1ZhbHVlKiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9yOworICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiogdmVjdG9yID0gbV9zdG9yYWdlLT5tX3ZlY3RvcjsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgIHZlY3RvcltpXSA9IEpTVmFsdWUoKTsK
KyAgICAgICAgdmVjdG9yW2ldLmNsZWFyKCk7CiB9CiAKIHZvaWQgSlNBcnJheTo6bWFya0NoaWxk
cmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQpAQCAtOTQxLDcgKzk0Miw3IEBAIHZvaWQgSlNBcnJh
eTo6c29ydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cHVzaFRlbXBT
b3J0VmVjdG9yKCZ2YWx1ZXMpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGhO
b3RJbmNsdWRpbmdVbmRlZmluZWQ7IGkrKykgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3Rv
cmFnZS0+bV92ZWN0b3JbaV07CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdG9yYWdlLT5tX3Zl
Y3RvcltpXS5nZXQoKTsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc1VuZGVmaW5lZCgpKTsKICAg
ICAgICAgdmFsdWVzW2ldLmZpcnN0ID0gdmFsdWU7CiAgICAgfQpAQCAtOTc0LDkgKzk3NSwxMCBA
QCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpbmNyZWFzZVZl
Y3Rvckxlbmd0aChsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQpOwogICAgIGlmIChzdG9yYWdl
LT5tX2xlbmd0aCA8IGxlbmd0aE5vdEluY2x1ZGluZ1VuZGVmaW5lZCkKICAgICAgICAgc3RvcmFn
ZS0+bV9sZW5ndGggPSBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7Ci0gICAgICAgIAorCisg
ICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoTm90SW5jbHVkaW5nVW5kZWZpbmVkOyBpKyspCi0g
ICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldID0gdmFsdWVzW2ldLmZpcnN0OworICAgICAgICBz
dG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWVzW2ldLmZpcnN0
KTsKIAogICAgIEhlYXA6OmhlYXAodGhpcyktPnBvcFRlbXBTb3J0VmVjdG9yKCZ2YWx1ZXMpOwog
ICAgIApAQCAtMTEwNSwxNCArMTEwNywxNCBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsCiAKICAg
ICAvLyBJdGVyYXRlIG92ZXIgdGhlIGFycmF5LCBpZ25vcmluZyBtaXNzaW5nIHZhbHVlcywgY291
bnRpbmcgdW5kZWZpbmVkIG9uZXMsIGFuZCBpbnNlcnRpbmcgYWxsIG90aGVyIG9uZXMgaW50byB0
aGUgdHJlZS4KICAgICBmb3IgKDsgbnVtRGVmaW5lZCA8IHVzZWRWZWN0b3JMZW5ndGg7ICsrbnVt
RGVmaW5lZCkgewotICAgICAgICBKU1ZhbHVlIHYgPSBzdG9yYWdlLT5tX3ZlY3RvcltudW1EZWZp
bmVkXTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gc3RvcmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5lZF0u
Z2V0KCk7CiAgICAgICAgIGlmICghdiB8fCB2LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rlc1tudW1EZWZpbmVkXS52YWx1
ZSA9IHY7CiAgICAgICAgIHRyZWUuaW5zZXJ0KG51bURlZmluZWQpOwogICAgIH0KICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBudW1EZWZpbmVkOyBpIDwgdXNlZFZlY3Rvckxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIEpTVmFsdWUgdiA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgICAgICBKU1ZhbHVl
IHYgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXS5nZXQoKTsKICAgICAgICAgaWYgKHYpIHsKICAgICAg
ICAgICAgIGlmICh2LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICAgICAgKytudW1VbmRlZmlu
ZWQ7CkBAIC0xMTQwLDcgKzExNDIsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsCiAKICAgICAg
ICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLT5lbmQoKTsKICAgICAg
ICAgZm9yIChTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICB0cmVlLmFic3RyYWN0b3IoKS5tX25vZGVz
W251bURlZmluZWRdLnZhbHVlID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIHRyZWUuYWJzdHJh
Y3RvcigpLm1fbm9kZXNbbnVtRGVmaW5lZF0udmFsdWUgPSBpdC0+c2Vjb25kLmdldCgpOwogICAg
ICAgICAgICAgdHJlZS5pbnNlcnQobnVtRGVmaW5lZCk7CiAgICAgICAgICAgICArK251bURlZmlu
ZWQ7CiAgICAgICAgIH0KQEAgLTExNTcsMTggKzExNTksMTkgQEAgdm9pZCBKU0FycmF5Ojpzb3J0
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxUeXBlIGNhbGxU
eXBlLAogICAgIC8vIENvcHkgdGhlIHZhbHVlcyBiYWNrIGludG8gbV9zdG9yYWdlLgogICAgIEFW
TFRyZWU8QVZMVHJlZUFic3RyYWN0b3JGb3JBcnJheUNvbXBhcmUsIDQ0Pjo6SXRlcmF0b3IgaXRl
cjsKICAgICBpdGVyLnN0YXJ0X2l0ZXJfbGVhc3QodHJlZSk7CisgICAgSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1EZWZpbmVkOyArK2kpIHsKLSAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0gPSB0
cmVlLmFic3RyYWN0b3IoKS5tX25vZGVzWyppdGVyXS52YWx1ZTsKKyAgICAgICAgc3RvcmFnZS0+
bV92ZWN0b3JbaV0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHRyZWUuYWJzdHJhY3RvcigpLm1fbm9k
ZXNbKml0ZXJdLnZhbHVlKTsKICAgICAgICAgKytpdGVyOwogICAgIH0KIAogICAgIC8vIFB1dCB1
bmRlZmluZWQgdmFsdWVzIGJhY2sgaW4uCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRGVmaW5l
ZDsgaSA8IG5ld1VzZWRWZWN0b3JMZW5ndGg7ICsraSkKLSAgICAgICAgc3RvcmFnZS0+bV92ZWN0
b3JbaV0gPSBqc1VuZGVmaW5lZCgpOworICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXRV
bmRlZmluZWQoKTsKIAogICAgIC8vIEVuc3VyZSB0aGF0IHVudXNlZCB2YWx1ZXMgaW4gdGhlIHZl
Y3RvciBhcmUgemVyb2VkIG91dC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSBuZXdVc2VkVmVjdG9y
TGVuZ3RoOyBpIDwgdXNlZFZlY3Rvckxlbmd0aDsgKytpKQotICAgICAgICBzdG9yYWdlLT5tX3Zl
Y3RvcltpXSA9IEpTVmFsdWUoKTsKKyAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uY2xlYXIo
KTsKIAogICAgIHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSBuZXdVc2VkVmVjdG9yTGVu
Z3RoOwogCkBAIC0xMTc5LDE0ICsxMTgyLDE0IEBAIHZvaWQgSlNBcnJheTo6ZmlsbEFyZ0xpc3Qo
RXhlY1N0YXRlKiBleGVjLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncykKIHsKICAgICBBcnJh
eVN0b3JhZ2UqIHN0b3JhZ2UgPSBtX3N0b3JhZ2U7CiAKLSAgICBKU1ZhbHVlKiB2ZWN0b3IgPSBz
dG9yYWdlLT5tX3ZlY3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvciA9IHN0
b3JhZ2UtPm1fdmVjdG9yOwogICAgIHVuc2lnbmVkIHZlY3RvckVuZCA9IG1pbihzdG9yYWdlLT5t
X2xlbmd0aCwgbV92ZWN0b3JMZW5ndGgpOwogICAgIHVuc2lnbmVkIGkgPSAwOwogICAgIGZvciAo
OyBpIDwgdmVjdG9yRW5kOyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSYgdiA9IHZlY3RvcltpXTsK
KyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2ID0gdmVjdG9yW2ldOwogICAgICAgICBp
ZiAoIXYpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgYXJncy5hcHBlbmQodik7CisgICAg
ICAgIGFyZ3MuYXBwZW5kKHYuZ2V0KCkpOwogICAgIH0KIAogICAgIGZvciAoOyBpIDwgc3RvcmFn
ZS0+bV9sZW5ndGg7ICsraSkKQEAgLTExOTcsMTQgKzEyMDAsMTQgQEAgdm9pZCBKU0FycmF5Ojpj
b3B5VG9SZWdpc3RlcnMoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlciogYnVmZmVyLCB1aW50MzJf
dCBtYXhTaXoKIHsKICAgICBBU1NFUlQobV9zdG9yYWdlLT5tX2xlbmd0aCA+PSBtYXhTaXplKTsK
ICAgICBVTlVTRURfUEFSQU0obWF4U2l6ZSk7Ci0gICAgSlNWYWx1ZSogdmVjdG9yID0gbV9zdG9y
YWdlLT5tX3ZlY3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvciA9IG1fc3Rv
cmFnZS0+bV92ZWN0b3I7CiAgICAgdW5zaWduZWQgdmVjdG9yRW5kID0gbWluKG1heFNpemUsIG1f
dmVjdG9yTGVuZ3RoKTsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IHZlY3Rv
ckVuZDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUmIHYgPSB2ZWN0b3JbaV07CisgICAgICAgIFdy
aXRlQmFycmllcjxVbmtub3duPiYgdiA9IHZlY3RvcltpXTsKICAgICAgICAgaWYgKCF2KQogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGJ1ZmZlcltpXSA9IHY7CisgICAgICAgIGJ1ZmZlcltp
XSA9IHYuZ2V0KCk7CiAgICAgfQogCiAgICAgZm9yICg7IGkgPCBtYXhTaXplOyArK2kpCkBAIC0x
MjIzLDE3ICsxMjI2LDE4IEBAIHVuc2lnbmVkIEpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKCkK
ICAgICB1bnNpZ25lZCBudW1VbmRlZmluZWQgPSAwOwogCiAgICAgZm9yICg7IG51bURlZmluZWQg
PCB1c2VkVmVjdG9yTGVuZ3RoOyArK251bURlZmluZWQpIHsKLSAgICAgICAgSlNWYWx1ZSB2ID0g
c3RvcmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5lZF07CisgICAgICAgIEpTVmFsdWUgdiA9IHN0b3Jh
Z2UtPm1fdmVjdG9yW251bURlZmluZWRdLmdldCgpOwogICAgICAgICBpZiAoIXYgfHwgdi5pc1Vu
ZGVmaW5lZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQorCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbnVtRGVmaW5lZDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsraSkgewotICAgICAgICBK
U1ZhbHVlIHYgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gc3Rv
cmFnZS0+bV92ZWN0b3JbaV0uZ2V0KCk7CiAgICAgICAgIGlmICh2KSB7CiAgICAgICAgICAgICBp
ZiAodi5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgICAgICsrbnVtVW5kZWZpbmVkOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW251bURlZmlu
ZWQrK10gPSB2OworICAgICAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW251bURlZmluZWQr
K10uc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTI1
MiwxNiArMTI1NiwxNiBAQCB1bnNpZ25lZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZygpCiAK
ICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLT5lbmQoKTsK
ICAgICAgICAgZm9yIChTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciBpdCA9IG1hcC0+YmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbbnVt
RGVmaW5lZCsrXSA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3Rvcltu
dW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoaXQtPnNlY29uZC5nZXQoKSk7CiAK
ICAgICAgICAgZGVsZXRlIG1hcDsKICAgICAgICAgc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCA9
IDA7CiAgICAgfQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRGVmaW5lZDsgaSA8IG5ld1Vz
ZWRWZWN0b3JMZW5ndGg7ICsraSkKLSAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0gPSBqc1Vu
ZGVmaW5lZCgpOworICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXRVbmRlZmluZWQoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBuZXdVc2VkVmVjdG9yTGVuZ3RoOyBpIDwgdXNlZFZlY3Rv
ckxlbmd0aDsgKytpKQotICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IEpTVmFsdWUoKTsK
KyAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uY2xlYXIoKTsKIAogICAgIHN0b3JhZ2UtPm1f
bnVtVmFsdWVzSW5WZWN0b3IgPSBuZXdVc2VkVmVjdG9yTGVuZ3RoOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggZGUyOGI2NWJiODNkZjFlNzQ3MWM2OTI5NDhi
ZmNkMzU3Y2ZhNDkxNi4uYWE1ZWRmMDJkMzhlNDhlZmNkNzFjZGY5YjE5ODY3N2Y3ZGU1ZjAyNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMjcsNyArMjcsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgSlNW
YWx1ZT4gU3BhcnNlQXJyYXlWYWx1ZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQs
IFdyaXRlQmFycmllcjxVbmtub3duPiA+IFNwYXJzZUFycmF5VmFsdWVNYXA7CiAKICAgICAvLyBU
aGlzIHN0cnVjdCBob2xkcyB0aGUgYWN0dWFsIGRhdGEgdmFsdWVzIG9mIGFuIGFycmF5LiAgQSBK
U0FycmF5IG9iamVjdCBwb2ludHMgdG8gaXQncyBjb250YWluZWQgQXJyYXlTdG9yYWdlCiAgICAg
Ly8gc3RydWN0IGJ5IHBvaW50aW5nIHRvIG1fdmVjdG9yLiAgVG8gYWNjZXNzIHRoZSBjb250YWlu
ZWQgQXJyYXlTdG9yYWdlIHN0cnVjdCwgdXNlIHRoZSBnZXRTdG9yYWdlKCkgYW5kIApAQCAtNDQs
NyArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBDSEVDS19BUlJBWV9DT05TSVNURU5DWQog
ICAgICAgICBib29sIG1faW5Db21wYWN0SW5pdGlhbGl6YXRpb247CiAjZW5kaWYKLSAgICAgICAg
SlNWYWx1ZSBtX3ZlY3RvclsxXTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fdmVj
dG9yWzFdOwogICAgIH07CiAKICAgICAvLyBUaGUgQ3JlYXRlQ29tcGFjdCBjcmVhdGlvbiBtb2Rl
IGlzIHVzZWQgZm9yIGZhc3QgY29uc3RydWN0aW9uIG9mIGFycmF5cwpAQCAtNjcsNyArNjcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBleHBsaWNpdCBKU0FycmF5KE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4pOwogICAgICAgICBKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgsIEFycmF5Q3JlYXRpb25Nb2RlKTsKLSAg
ICAgICAgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBBcmdMaXN0
JiBpbml0aWFsVmFsdWVzKTsKKyAgICAgICAgSlNBcnJheShKU0dsb2JhbERhdGEmLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVzKTsKICAg
ICAgICAgdmlydHVhbCB+SlNBcnJheSgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKQEAgLTk0LDMyICs5NCwzMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNWYWx1ZSBnZXRJbmRleCh1bnNpZ25lZCBpKQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQoY2FuR2V0SW5kZXgoaSkpOwotICAgICAgICAgICAgcmV0dXJuIG1fc3RvcmFnZS0+bV92
ZWN0b3JbaV07CisgICAgICAgICAgICByZXR1cm4gbV9zdG9yYWdlLT5tX3ZlY3RvcltpXS5nZXQo
KTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgY2FuU2V0SW5kZXgodW5zaWduZWQgaSkgeyBy
ZXR1cm4gaSA8IG1fdmVjdG9yTGVuZ3RoOyB9Ci0gICAgICAgIHZvaWQgc2V0SW5kZXgodW5zaWdu
ZWQgaSwgSlNWYWx1ZSB2KQorICAgICAgICB2b2lkIHNldEluZGV4KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQoY2FuU2V0SW5kZXgoaSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBKU1ZhbHVl
JiB4ID0gbV9zdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiYgeCA9IG1fc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAgICAgICBpZiAoIXgp
IHsKICAgICAgICAgICAgICAgICBBcnJheVN0b3JhZ2UgKnN0b3JhZ2UgPSBtX3N0b3JhZ2U7CiAg
ICAgICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgICAgICAg
ICAgICAgIGlmIChpID49IHN0b3JhZ2UtPm1fbGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICBz
dG9yYWdlLT5tX2xlbmd0aCA9IGkgKyAxOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9
IHY7CisgICAgICAgICAgICB4LnNldChnbG9iYWxEYXRhLCB0aGlzLCB2KTsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgdm9pZCB1bmNoZWNrZWRTZXRJbmRleCh1bnNpZ25lZCBpLCBKU1Zh
bHVlIHYpCisgICAgICAgIHZvaWQgdW5jaGVja2VkU2V0SW5kZXgoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVChjYW5TZXRJbmRleChpKSk7CiAgICAgICAgICAgICBBcnJheVN0b3JhZ2UgKnN0b3JhZ2Ug
PSBtX3N0b3JhZ2U7CiAjaWYgQ0hFQ0tfQVJSQVlfQ09OU0lTVEVOQ1kKICAgICAgICAgICAgIEFT
U0VSVChzdG9yYWdlLT5tX2luQ29tcGFjdEluaXRpYWxpemF0aW9uKTsKICNlbmRpZgotICAgICAg
ICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0gPSB2OworICAgICAgICAgICAgc3RvcmFnZS0+bV92
ZWN0b3JbaV0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHYpOwogICAgICAgICB9CiAKICAgICAgICAg
dm9pZCBmaWxsQXJnTGlzdChFeGVjU3RhdGUqLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpOwpAQCAt
MTk0LDcgKzE5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoU3BhcnNlQXJyYXlW
YWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCkgewogICAgICAgICAgICAg
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLT5lbmQoKTsKICAgICAgICAg
ICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKGl0LT5z
ZWNvbmQpOworICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJml0LT5zZWNvbmQpOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5
dGVBcnJheS5jcHAKaW5kZXggNmFmOWQ3NWYxMzRlYjk1OWZjMGI3OTg4YzRkMmVlN2NiOGNkMWM5
Yy4uM2Y3ZDgwNmFjOGM3YjM2NDhiYzFjMmZmZThjNzMyN2E3MTUwNTE0YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcApAQCAtNDAsNyArNDAsNyBA
QCBKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZQogICAgICwgbV9zdG9yYWdlKHN0b3JhZ2UpCiAgICAg
LCBtX2NsYXNzSW5mbyhjbGFzc0luZm8pCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKG1fc3RvcmFnZS0+bGVuZ3RoKCkp
LCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKG1f
c3RvcmFnZS0+bGVuZ3RoKCkpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogfQogCiAjaWYgIUFT
U0VSVF9ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBm
N2U4ODEwNTEyYzI5MzkyMjVmYzJiM2YxYmNlMDBhZDZhZDc5OGZmLi5mMjNiNDhhNTA5NjFlYjBl
ZGFjNmI4MTE0MjA5ZGI3NWYyMWQ2Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaApAQCAtMzM2LDggKzMzNiwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAg
ICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT50b1RoaXNPYmplY3QoZXhlYykgOiB0b1Ro
aXNPYmplY3RTbG93Q2FzZShleGVjKTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHZvaWQgTWFya1N0YWNrOjphcHBlbmQoRGVwcmVjYXRlZFB0cjxUPiogc2xvdCkKKyAg
ICB7CisgICAgICAgIGludGVybmFsQXBwZW5kKHNsb3QtPmdldCgpKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgTWFya1N0YWNrOjphcHBlbmQoV3JpdGVCYXJy
aWVyQmFzZTxUPiogc2xvdCkKKyAgICB7CisgICAgICAgIGludGVybmFsQXBwZW5kKHNsb3QtPmdl
dCgpKTsKKyAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBlbmQo
SlNDZWxsKiBjZWxsKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBNYXJrU3RhY2s6OmludGVybmFs
QXBwZW5kKEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9pc0NoZWNraW5n
Rm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOwogICAgICAgICBBU1NFUlQoY2VsbCk7CkBAIC0zNDcs
MTEgKzM1NywyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVu
ZChjZWxsKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBl
bmQoSlNWYWx1ZSB2YWx1ZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjpkZXBy
ZWNhdGVkQXBwZW5kKEpTQ2VsbCoqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVl
KTsKKyAgICAgICAgaW50ZXJuYWxBcHBlbmQoKnZhbHVlKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgTWFya1N0YWNrOjpkZXByZWNhdGVkQXBwZW5kKEpTVmFsdWUqIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgaW50ZXJuYWxBcHBlbmQoKnZh
bHVlKTsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6ZGVw
cmVjYXRlZEFwcGVuZChSZWdpc3RlciogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQodmFs
dWUpOworICAgICAgICBpbnRlcm5hbEFwcGVuZCh2YWx1ZS0+anNWYWx1ZSgpKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjppbnRlcm5hbEFwcGVuZChKU1ZhbHVl
IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgaWYgKHZhbHVl
LmlzQ2VsbCgpKQotICAgICAgICAgICAgYXBwZW5kKHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAgICAg
ICAgIGludGVybmFsQXBwZW5kKHZhbHVlLmFzQ2VsbCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUg
SGVhcCogSGVhcDo6aGVhcChKU1ZhbHVlIHYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDk5ZjhlNmY5NTNhZTc3MzllZDA0YjE1YTNhM2ZiNWE1
ZmQxNTA3OGQuLjRmZjU5ZTM5ZmVkMzVlMzJhMGUyZjUzNzk4Y2Y4YWIyNjIyYTJjZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC03MSw4ICs3
MSw4IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzCiAgICAgLCBtX2V4ZWN1dGFibGUodGh1bmsp
CiAgICAgLCBtX3Njb3BlQ2hhaW4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7
Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVs
bCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiB9CiAjZW5kaWYKIApAQCAtODMsOSArODMsOSBAQCBKU0Z1bmN0aW9uOjpKU0Z1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9u
TnVsbFBhcwogI2VuZGlmCiAgICAgLCBtX3Njb3BlQ2hhaW4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxT
Y29wZUNoYWluKCkpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVz
dHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+
bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAjaWYgRU5BQkxFKEpJVCkKLSAg
ICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3Ro
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxl
bmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGxlbmd0aCk7CiAgICAgVU5VU0VEX1BBUkFNKGZ1bmMpOwpAQCAtOTksNyArOTks
NyBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NS
ZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBleAogICAgICwgbV9zY29wZUNoYWluKHNjb3BlQ2hh
aW5Ob2RlKQogewogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUgPSBzdGF0aWNfY2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5uYW1lKCk7Ci0gICAgcHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVj
LCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5p
c051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiB9CiAKIEpTRnVuY3Rpb246On5KU0Z1bmN0aW9uKCkKQEAgLTIwNyw4ICsyMDcs
OCBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TgogCiAgICAgICAgIGlmICghbG9jYXRpb24pIHsK
ICAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEpTT2JqZWN0KHNj
b3BlKCkuZ2xvYmFsT2JqZWN0KCktPmVtcHR5T2JqZWN0U3RydWN0dXJlKCkpOwotICAgICAgICAg
ICAgcHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCB0aGlzLCBEb250RW51bSk7Ci0gICAgICAgICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAg
ICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRoaXMsIERvbnRFbnVtKTsKKyAgICAgICAgICAg
IHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKICAgICAgICAgICAgIGxv
Y2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDMxZjQx
ZTljNDI1ZWMxODU2NTQxOGZkOGU3N2QxOTkwMGE3MWMyYTMuLmU4NDY5ZGRhYmIyOGRjOTNjN2M4
MTg2Y2YwMDVmNmFjZTZmMWQwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFRlcm1pbmF0b3IgdGVybWluYXRvcjsKICAgICAgICAgSGVhcCBoZWFwOwogCi0gICAgICAg
IEpTVmFsdWUgZXhjZXB0aW9uOworICAgICAgICBEZXByZWNhdGVkUHRyPFVua25vd24+IGV4Y2Vw
dGlvbjsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4Y2VwdGlv
bkxvY2F0aW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOWI2N2RiYjczNGY1MGZhMjkwMTJmNzZkN2RlNDI5NTM1
NWY2MmI2Yy4uNzE1ZmYwZDA1Y2JjZWIxMGE2MTU3NmUwNmIxMDQwYzgxZDY2ODA2MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
ODAsMTYgKzgwLDE2IEBAIHN0YXRpYyBjb25zdCBpbnQgaW5pdGlhbFRpY2tDb3VudFRocmVzaG9s
ZCA9IDI1NTsKIC8vIFByZWZlcnJlZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gZWFj
aCB0aW1lb3V0IGNoZWNrCiBzdGF0aWMgY29uc3QgaW50IHByZWZlcnJlZFNjcmlwdENoZWNrVGlt
ZUludGVydmFsID0gMTAwMDsKIAotc3RhdGljIGlubGluZSB2b2lkIG1hcmtJZk5lZWRlZChNYXJr
U3RhY2smIG1hcmtTdGFjaywgSlNWYWx1ZSB2KQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRp
YyBpbmxpbmUgdm9pZCBtYXJrSWZOZWVkZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIFdyaXRlQmFy
cmllcjxUPiogdikKIHsKLSAgICBpZiAodikKKyAgICBpZiAoKnYpCiAgICAgICAgIG1hcmtTdGFj
ay5hcHBlbmQodik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrSWZOZWVkZWQoTWFya1N0
YWNrJiBtYXJrU3RhY2ssIGNvbnN0IFJlZlB0cjxTdHJ1Y3R1cmU+JiBzKQogewotICAgIGlmIChz
KQotICAgICAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBzLT5zdG9yZWRQcm90b3R5cGUoKSk7
CisgICAgaWYgKHMgJiYgcy0+c3RvcmVkUHJvdG90eXBlKCkpCisgICAgICAgIG1hcmtTdGFjay5h
cHBlbmQocy0+c3RvcmVkUHJvdG90eXBlU2xvdCgpKTsKIH0KIAogSlNHbG9iYWxPYmplY3Q6On5K
U0dsb2JhbE9iamVjdCgpCkBAIC0yMDIsMTE3ICsyMDIsMTE3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogCiAgICAgLy8gUHJvdG90eXBlcwogCi0gICAg
ZCgpLT5mdW5jdGlvblByb3RvdHlwZSA9IG5ldyAoZXhlYykgRnVuY3Rpb25Qcm90b3R5cGUoZXhl
YywgdGhpcywgRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpOyAv
LyBUaGUgcmVhbCBwcm90b3R5cGUgd2lsbCBiZSBzZXQgb25jZSBPYmplY3RQcm90b3R5cGUgaXMg
Y3JlYXRlZC4KLSAgICBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlID0gUHJvdG90eXBl
RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKTsKLSAgICBk
KCktPmludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7CisgICAgZCgpLT5mdW5jdGlvblByb3Rv
dHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEZ1bmN0aW9uUHJv
dG90eXBlKGV4ZWMsIHRoaXMsIEZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNO
dWxsKCkpKSk7IC8vIFRoZSByZWFsIHByb3RvdHlwZSB3aWxsIGJlIHNldCBvbmNlIE9iamVjdFBy
b3RvdHlwZSBpcyBjcmVhdGVkLgorICAgIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUg
PSBQcm90b3R5cGVGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpOworICAgIGQoKS0+aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsK
ICAgICBOYXRpdmVGdW5jdGlvbldyYXBwZXIqIGNhbGxGdW5jdGlvbiA9IDA7CiAgICAgTmF0aXZl
RnVuY3Rpb25XcmFwcGVyKiBhcHBseUZ1bmN0aW9uID0gMDsKICAgICBkKCktPmZ1bmN0aW9uUHJv
dG90eXBlLT5hZGRGdW5jdGlvblByb3BlcnRpZXMoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5cGVG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgJmNhbGxGdW5jdGlvbiwgJmFwcGx5RnVuY3Rpb24pOwot
ICAgIGQoKS0+Y2FsbEZ1bmN0aW9uID0gY2FsbEZ1bmN0aW9uOwotICAgIGQoKS0+YXBwbHlGdW5j
dGlvbiA9IGFwcGx5RnVuY3Rpb247Ci0gICAgZCgpLT5vYmplY3RQcm90b3R5cGUgPSBuZXcgKGV4
ZWMpIE9iamVjdFByb3RvdHlwZShleGVjLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShqc051bGwoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkp
OwotICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVX
aXRob3V0VHJhbnNpdGlvbihkKCktPm9iamVjdFByb3RvdHlwZSk7CisgICAgZCgpLT5jYWxsRnVu
Y3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKKyAgICBk
KCktPmFwcGx5RnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgYXBwbHlGdW5j
dGlvbik7CisgICAgZCgpLT5vYmplY3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgbmV3IChleGVjKSBPYmplY3RQcm90b3R5cGUoZXhlYywgdGhpcywgT2JqZWN0UHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpKSk7CisgICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKCkt
PnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgp
KTsKIAogICAgIGQoKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUgPSBkKCktPm9iamVjdFByb3RvdHlw
ZS0+aW5oZXJpdG9ySUQoKTsKIAotICAgIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUgPSBKU0Z1bmN0
aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgZCgpLT5j
YWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlID0gSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgZCgpLT5hcmd1bWVudHNTdHJ1Y3R1
cmUgPSBBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSk7Ci0g
ICAgZCgpLT5jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlID0gSlNDYWxsYmFja0NvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpOwotICAgIGQoKS0+Y2Fs
bGJhY2tPYmplY3RTdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSk7CisgICAgZCgp
LT5mdW5jdGlvblN0cnVjdHVyZSA9IEpTRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1
bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPmNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmUgPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJv
dG90eXBlLmdldCgpKTsKKyAgICBkKCktPmFyZ3VtZW50c1N0cnVjdHVyZSA9IEFyZ3VtZW50czo6
Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPmNh
bGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgZCgpLT5jYWxsYmFj
a09iamVjdFN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2Jq
ZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIAotICAg
IGQoKS0+YXJyYXlQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEFycmF5UHJvdG90eXBlKHRoaXMsIEFy
cmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpKTsKLSAg
ICBkKCktPmFycmF5U3RydWN0dXJlID0gSlNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+YXJy
YXlQcm90b3R5cGUpOwotICAgIGQoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlID0gUmVn
RXhwTWF0Y2hlc0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5hcnJheVByb3RvdHlwZSk7Cisg
ICAgZCgpLT5hcnJheVByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcg
KGV4ZWMpIEFycmF5UHJvdG90eXBlKHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgZCgpLT5hcnJheVN0cnVjdHVy
ZSA9IEpTQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmFycmF5UHJvdG90eXBlLmdldCgpKTsK
KyAgICBkKCktPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSA9IFJlZ0V4cE1hdGNoZXNBcnJh
eTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+YXJyYXlQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgp
LT5zdHJpbmdQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIFN0cmluZ1Byb3RvdHlwZShleGVjLCB0aGlz
LCBTdHJpbmdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSkp
OwotICAgIGQoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlID0gU3RyaW5nT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5zdHJpbmdQcm90b3R5cGUpOworICAgIGQoKS0+c3RyaW5nUHJvdG90eXBl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgU3RyaW5nUHJvdG90eXBl
KGV4ZWMsIHRoaXMsIFN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0
UHJvdG90eXBlLmdldCgpKSkpOworICAgIGQoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlID0gU3Ry
aW5nT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOwog
Ci0gICAgZCgpLT5ib29sZWFuUHJvdG90eXBlID0gbmV3IChleGVjKSBCb29sZWFuUHJvdG90eXBl
KGV4ZWMsIHRoaXMsIEJvb2xlYW5Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVj
dFByb3RvdHlwZSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOwotICAg
IGQoKS0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSA9IEJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZShkKCktPmJvb2xlYW5Qcm90b3R5cGUpOworICAgIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEJvb2xlYW5Qcm90b3R5cGUo
ZXhlYywgdGhpcywgQm9vbGVhblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0
UHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkp
OworICAgIGQoKS0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSA9IEJvb2xlYW5PYmplY3Q6OmNyZWF0
ZVN0cnVjdHVyZShkKCktPmJvb2xlYW5Qcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5udW1i
ZXJQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE51bWJlclByb3RvdHlwZShleGVjLCB0aGlzLCBOdW1i
ZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSksIGQoKS0+
cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIGQoKS0+bnVtYmVyT2JqZWN0
U3RydWN0dXJlID0gTnVtYmVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5udW1iZXJQcm90
b3R5cGUpOworICAgIGQoKS0+bnVtYmVyUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIG5ldyAoZXhlYykgTnVtYmVyUHJvdG90eXBlKGV4ZWMsIHRoaXMsIE51bWJlclByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgpLT5w
cm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOworICAgIGQoKS0+bnVtYmVyT2JqZWN0
U3RydWN0dXJlID0gTnVtYmVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5udW1iZXJQcm90
b3R5cGUuZ2V0KCkpOwogCi0gICAgZCgpLT5kYXRlUHJvdG90eXBlID0gbmV3IChleGVjKSBEYXRl
UHJvdG90eXBlKGV4ZWMsIHRoaXMsIERhdGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCkt
Pm9iamVjdFByb3RvdHlwZSkpOwotICAgIGQoKS0+ZGF0ZVN0cnVjdHVyZSA9IERhdGVJbnN0YW5j
ZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZGF0ZVByb3RvdHlwZSk7CisgICAgZCgpLT5kYXRlUHJv
dG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgRGF0ZVByb3Rv
dHlwZShleGVjLCB0aGlzLCBEYXRlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgZCgpLT5kYXRlU3RydWN0dXJlID0gRGF0ZUluc3Rh
bmNlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5kYXRlUHJvdG90eXBlLmdldCgpKTsKIAotICAgIGQo
KS0+cmVnRXhwUHJvdG90eXBlID0gbmV3IChleGVjKSBSZWdFeHBQcm90b3R5cGUoZXhlYywgdGhp
cywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUp
LCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKLSAgICBkKCktPnJlZ0V4
cFN0cnVjdHVyZSA9IFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+cmVnRXhwUHJv
dG90eXBlKTsKKyAgICBkKCktPnJlZ0V4cFByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBuZXcgKGV4ZWMpIFJlZ0V4cFByb3RvdHlwZShleGVjLCB0aGlzLCBSZWdFeHBQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSksIGQoKS0+
cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICBkKCktPnJlZ0V4cFN0cnVj
dHVyZSA9IFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+cmVnRXhwUHJvdG90eXBl
LmdldCgpKTsKIAotICAgIGQoKS0+bWV0aG9kQ2FsbER1bW15ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYyk7CisgICAgZCgpLT5tZXRob2RDYWxsRHVtbXkuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykpOwogCi0gICAgRXJyb3JQcm90b3R5
cGUqIGVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBFcnJvclByb3RvdHlwZShleGVjLCB0aGlz
LCBFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlKSwg
ZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7CisgICAgRXJyb3JQcm90b3R5
cGUqIGVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBFcnJvclByb3RvdHlwZShleGVjLCB0aGlz
LCBFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdl
dCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7CiAgICAgZCgpLT5l
cnJvclN0cnVjdHVyZSA9IEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShlcnJvclByb3Rv
dHlwZSk7CiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0Q29uc3Ry
dWN0b3IgPSBuZXcgKGV4ZWMpIE9iamVjdENvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIE9iamVjdENv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSksIGQoKS0+
b2JqZWN0UHJvdG90eXBlLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsK
LSAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEZ1bmN0aW9uQ29u
c3RydWN0b3IoZXhlYywgdGhpcywgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlKTsKLSAgICBK
U0NlbGwqIGFycmF5Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEFycmF5Q29uc3RydWN0b3IoZXhl
YywgdGhpcywgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Q
cm90b3R5cGUpLCBkKCktPmFycmF5UHJvdG90eXBlLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpKTsKLSAgICBKU0NlbGwqIHN0cmluZ0NvbnN0cnVjdG9yID0gbmV3IChleGVj
KSBTdHJpbmdDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9u
U3RydWN0dXJlLmdldCgpLCBkKCktPnN0cmluZ1Byb3RvdHlwZSk7Ci0gICAgSlNDZWxsKiBib29s
ZWFuQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEJvb2xlYW5Db25zdHJ1Y3RvcihleGVjLCB0aGlz
LCBCb29sZWFuQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90
eXBlKSwgZCgpLT5ib29sZWFuUHJvdG90eXBlKTsKLSAgICBKU0NlbGwqIG51bWJlckNvbnN0cnVj
dG9yID0gbmV3IChleGVjKSBOdW1iZXJDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBOdW1iZXJDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPm51
bWJlclByb3RvdHlwZSk7Ci0gICAgSlNDZWxsKiBkYXRlQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMp
IERhdGVDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVj
dHVyZS5nZXQoKSwgZCgpLT5kYXRlUHJvdG90eXBlKTsKKyAgICBKU0NlbGwqIG9iamVjdENvbnN0
cnVjdG9yID0gbmV3IChleGVjKSBPYmplY3RDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBPYmplY3RD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVj
dHVyZS5nZXQoKSk7CisgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gbmV3IChleGVj
KSBGdW5jdGlvbkNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gbmV3IChl
eGVjKSBBcnJheUNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5hcnJheVByb3Rv
dHlwZS5nZXQoKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7CisgICAg
SlNDZWxsKiBzdHJpbmdDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgU3RyaW5nQ29uc3RydWN0b3Io
ZXhlYywgdGhpcywgU3RyaW5nQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQo
KSwgZCgpLT5zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOworICAgIEpTQ2VsbCogYm9vbGVhbkNvbnN0
cnVjdG9yID0gbmV3IChleGVjKSBCb29sZWFuQ29uc3RydWN0b3IoZXhlYywgdGhpcywgQm9vbGVh
bkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIGQoKS0+Ym9vbGVhblByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBudW1iZXJDb25z
dHJ1Y3RvciA9IG5ldyAoZXhlYykgTnVtYmVyQ29uc3RydWN0b3IoZXhlYywgdGhpcywgTnVtYmVy
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgZCgpLT5udW1iZXJQcm90b3R5cGUuZ2V0KCkpOworICAgIEpTQ2VsbCogZGF0ZUNvbnN0cnVj
dG9yID0gbmV3IChleGVjKSBEYXRlQ29uc3RydWN0b3IoZXhlYywgdGhpcywgRGF0ZUNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+
cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIGQoKS0+ZGF0ZVByb3RvdHlwZS5nZXQo
KSk7CiAKLSAgICBkKCktPnJlZ0V4cENvbnN0cnVjdG9yID0gbmV3IChleGVjKSBSZWdFeHBDb25z
dHJ1Y3RvcihleGVjLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPnJlZ0V4cFByb3RvdHlwZSk7CisgICAgZCgpLT5y
ZWdFeHBDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMp
IFJlZ0V4cENvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+cmVnRXhwUHJvdG90
eXBlLmdldCgpKSk7CiAKLSAgICBkKCktPmVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEVy
cm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBlcnJvclByb3RvdHlwZSk7CisgICAgZCgpLT5l
cnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykg
RXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGVycm9yUHJvdG90eXBlKSk7CiAK
ICAgICBSZWZQdHI8U3RydWN0dXJlPiBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSA9IE5h
dGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXJyb3JQcm90b3R5cGUpOwotICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IG5hdGl2ZUVycm9yU3RydWN0dXJlID0gTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpOwotICAgIGQo
KS0+ZXZhbEVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBl
U3RydWN0dXJlLCAiRXZhbEVycm9yIik7Ci0gICAgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3Ig
PSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJy
b3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiUmFuZ2VFcnJvciIp
OwotICAgIGQoKS0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZl
RXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIpOwotICAgIGQoKS0+c3lu
dGF4RXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcihl
eGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1
Y3R1cmUsICJTeW50YXhFcnJvciIpOwotICAgIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IgPSBu
ZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JT
dHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiVHlwZUVycm9yIik7Ci0g
ICAgZCgpLT5VUklFcnJvckNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3Rv
dHlwZVN0cnVjdHVyZSwgIlVSSUVycm9yIik7Ci0KLSAgICBkKCktPm9iamVjdFByb3RvdHlwZS0+
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5mdW5j
dGlvblByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVt
KTsKLSAgICBkKCktPmFycmF5UHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgYXJyYXlDb25zdHJ1Y3Rv
ciwgRG9udEVudW0pOwotICAgIGQoKS0+Ym9vbGVhblByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGJv
b2xlYW5Db25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIGQoKS0+c3RyaW5nUHJvdG90eXBlLT5w
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3Rvciwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBkKCktPm51bWJl
clByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG51bWJlckNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0g
ICAgZCgpLT5kYXRlUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZGF0ZUNvbnN0cnVjdG9yLCBEb250
RW51bSk7Ci0gICAgZCgpLT5yZWdFeHBQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBkKCktPnJlZ0V4
cENvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCBkKCktPmVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBSZWZQdHI8U3RydWN0dXJl
PiBuYXRpdmVFcnJvclN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPmV2YWxFcnJv
ckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0
aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJFdmFsRXJyb3IiKSk7CisgICAgZCgpLT5yYW5n
ZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVj
KSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJhbmdlRXJyb3IiKSk7CisgICAgZCgp
LT5yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJv
clN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJv
ciIpKTsKKyAgICBkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMs
IG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlN5
bnRheEVycm9yIikpOworICAgIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMs
IHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVy
ZSwgIlR5cGVFcnJvciIpKTsKKyAgICBkKCktPlVSSUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4
ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVj
dHVyZSwgIlVSSUVycm9yIikpOworCisgICAgZCgpLT5vYmplY3RQcm90b3R5cGUtPnB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7Cisg
ICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rv
ciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIGQoKS0+YXJyYXlQcm90b3R5
cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIERv
bnRFbnVtKTsKKyAgICBkKCktPmJvb2xlYW5Qcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIGJvb2xlYW5Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIGQoKS0+c3Ry
aW5nUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBzdHJpbmdDb25z
dHJ1Y3RvciwgRG9udEVudW0pOworICAgIGQoKS0+bnVtYmVyUHJvdG90eXBlLT5wdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCBudW1iZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAg
IGQoKS0+ZGF0ZVByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZGF0
ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgZCgpLT5yZWdFeHBQcm90b3R5cGUtPnB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IuZ2V0KCks
IERvbnRFbnVtKTsKKyAgICBlcnJvclByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgZCgpLT5lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAKICAgICAv
LyBTZXQgZ2xvYmFsIGNvbnN0cnVjdG9ycwogCiAgICAgLy8gRklYTUU6IFRoZXNlIHByb3BlcnRp
ZXMgY291bGQgYmUgaGFuZGxlZCBieSBhIHN0YXRpYyBoYXNoIHRhYmxlLgogCi0gICAgcHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSwg
b2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkZ1bmN0aW9uIiksIGZ1bmN0aW9uQ29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KElkZW50aWZpZXIoZXhlYywgIkFycmF5IiksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywg
IkJvb2xlYW4iKSwgYm9vbGVhbkNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJTdHJpbmciKSwgc3Ry
aW5nQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIk51bWJlciIpLCBudW1iZXJDb25zdHJ1Y3Rvciwg
RG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSWRlbnRp
ZmllcihleGVjLCAiRGF0ZSIpLCBkYXRlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlJlZ0V4cCIp
LCBkKCktPnJlZ0V4cENvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJFcnJvciIpLCBkKCktPmVycm9y
Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkV2YWxFcnJvciIpLCBkKCktPmV2YWxFcnJvckNvbnN0
cnVjdG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihJZGVudGlmaWVyKGV4ZWMsICJSYW5nZUVycm9yIiksIGQoKS0+cmFuZ2VFcnJvckNvbnN0cnVj
dG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJ
ZGVudGlmaWVyKGV4ZWMsICJSZWZlcmVuY2VFcnJvciIpLCBkKCktPnJlZmVyZW5jZUVycm9yQ29u
c3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKElkZW50aWZpZXIoZXhlYywgIlN5bnRheEVycm9yIiksIGQoKS0+c3ludGF4RXJyb3JDb25z
dHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oSWRlbnRpZmllcihleGVjLCAiVHlwZUVycm9yIiksIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElk
ZW50aWZpZXIoZXhlYywgIlVSSUVycm9yIiksIGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSwgb2JqZWN0Q29uc3RydWN0b3Is
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRnVuY3Rpb24iKSwgZnVuY3Rpb25Db25z
dHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJBcnJheSIpLCBhcnJheUNv
bnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkJvb2xlYW4iKSwgYm9v
bGVhbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlN0cmluZyIp
LCBzdHJpbmdDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJOdW1i
ZXIiKSwgbnVtYmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAi
RGF0ZSIpLCBkYXRlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAi
UmVnRXhwIiksIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCAiRXJyb3IiKSwgZCgpLT5lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkV2YWxFcnJvciIpLCBkKCktPmV2YWxFcnJvckNv
bnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlJhbmdlRXJy
b3IiKSwgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCAiUmVmZXJlbmNlRXJyb3IiKSwgZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0
cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlN5bnRheEVycm9y
IiksIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJUeXBlRXJyb3IiKSwgZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQo
KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJVUklFcnJvciIpLCBkKCktPlVSSUVy
cm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKIAogICAgIC8vIFNldCBnbG9iYWwgdmFs
dWVzLgogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7Ci0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJNYXRoIiksIG5ldyAoZXhlYykg
TWF0aE9iamVjdChleGVjLCB0aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5v
YmplY3RQcm90b3R5cGUpKSwgRG9udEVudW0gfCBEb250RGVsZXRlKSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIk1hdGgiKSwgbmV3IChleGVjKSBNYXRoT2Jq
ZWN0KGV4ZWMsIHRoaXMsIE1hdGhPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFBy
b3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSB8IERvbnREZWxldGUpLAogICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8oSWRlbnRpZmllcihleGVjLCAiTmFOIiksIGpzTmFOKCksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50
aWZpZXIoZXhlYywgIkluZmluaXR5IiksIGpzTnVtYmVyKEluZiksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIo
ZXhlYywgInVuZGVmaW5lZCIpLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMs
ICJKU09OIiksIG5ldyAoZXhlYykgSlNPTk9iamVjdCh0aGlzLCBKU09OT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpKSwgRG9udEVudW0gfCBEb250RGVsZXRlKQor
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihleGVjLCAiSlNPTiIpLCBuZXcg
KGV4ZWMpIEpTT05PYmplY3QodGhpcywgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+
b2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSkKICAgICB9Owog
CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0
YXRpY0dsb2JhbHMpKTsKIAogICAgIC8vIFNldCBnbG9iYWwgZnVuY3Rpb25zLgogCi0gICAgZCgp
LT5ldmFsRnVuY3Rpb24gPSBuZXcgKGV4ZWMpIEdsb2JhbEV2YWxGdW5jdGlvbihleGVjLCB0aGlz
LCBHbG9iYWxFdmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90
eXBlKSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwsIGdsb2JhbEZ1bmNFdmFsLCB0aGlz
KTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIGQoKS0+ZXZh
bEZ1bmN0aW9uLCBEb250RW51bSk7CisgICAgZCgpLT5ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBHbG9iYWxFdmFsRnVuY3Rpb24oZXhlYywgdGhp
cywgR2xvYmFsRXZhbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFsLCBnbG9iYWxGdW5jRXZh
bCwgdGhpcykpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywg
ZCgpLT5ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDIsIElk
ZW50aWZpZXIoZXhlYywgInBhcnNlSW50IiksIGdsb2JhbEZ1bmNQYXJzZUludCksIERvbnRFbnVt
KTsKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhl
YykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgInBhcnNlRmxvYXQiKSwgZ2xv
YmFsRnVuY1BhcnNlRmxvYXQpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVj
LCB0aGlzLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlm
aWVyKGV4ZWMsICJpc05hTiIpLCBnbG9iYWxGdW5jSXNOYU4pLCBEb250RW51bSk7CkBAIC0zMzYs
NyArMzM2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgc2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCog
b2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gPSBsYXN0SW5Qcm90b3R5cGVDaGFpbih0aGlzKTsKLSAg
ICBKU09iamVjdCogb2JqZWN0UHJvdG90eXBlID0gZCgpLT5vYmplY3RQcm90b3R5cGU7CisgICAg
SlNPYmplY3QqIG9iamVjdFByb3RvdHlwZSA9IGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpOwog
ICAgIGlmIChvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbiAhPSBvYmplY3RQcm90b3R5cGUpCiAgICAg
ICAgIG9sZExhc3RJblByb3RvdHlwZUNoYWluLT5zZXRQcm90b3R5cGUob2JqZWN0UHJvdG90eXBl
KTsKIH0KQEAgLTM0OSwyOSArMzQ5LDI5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Om1hcmtDaGls
ZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKICAgICBmb3IgKEhhc2hTZXQ8R2xvYmFsQ29kZUJs
b2NrKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29kZUJsb2NrcygpLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKICAgICAgICAgKCppdCktPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKIAotICAg
IG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IpOwotICAgIG1h
cmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgZCgpLT5ldmFsRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAg
bWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsKLSAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPnR5cGVFcnJvckNvbnN0cnVjdG9yKTsKLSAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IpOwotCi0g
ICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5ldmFsRnVuY3Rpb24pOwotICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+Y2FsbEZ1bmN0aW9uKTsKLSAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCBkKCktPmFwcGx5RnVuY3Rpb24pOwotCi0gICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgZCgpLT5vYmplY3RQcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
IGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQo
KS0+YXJyYXlQcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+Ym9v
bGVhblByb3RvdHlwZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5zdHJpbmdQ
cm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+bnVtYmVyUHJvdG90
eXBlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPmRhdGVQcm90b3R5cGUpOwot
ICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+cmVnRXhwUHJvdG90eXBlKTsKLQotICAg
IG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+bWV0aG9kQ2FsbER1bW15KTsKKyAgICBtYXJr
SWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5yZWdFeHBDb25zdHJ1Y3Rvcik7CisgICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+ZXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgbWFya0lmTmVl
ZGVkKG1hcmtTdGFjaywgJmQoKS0+ZXZhbEVycm9yQ29uc3RydWN0b3IpOworICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssICZkKCktPnJhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAg
bWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7Cisg
ICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IpOwor
ICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPlVSSUVycm9yQ29uc3RydWN0b3IpOwor
CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+ZXZhbEZ1bmN0aW9uKTsKKyAgICBt
YXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5jYWxsRnVuY3Rpb24pOworICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssICZkKCktPmFwcGx5RnVuY3Rpb24pOworCisgICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgJmQoKS0+b2JqZWN0UHJvdG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCAmZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgJmQoKS0+YXJyYXlQcm90b3R5cGUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZkKCktPmJvb2xlYW5Qcm90b3R5cGUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZk
KCktPnN0cmluZ1Byb3RvdHlwZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+
bnVtYmVyUHJvdG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5kYXRl
UHJvdG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5yZWdFeHBQcm90
b3R5cGUpOworCisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+bWV0aG9kQ2FsbER1
bW15KTsKIAogICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZXJyb3JTdHJ1Y3R1cmUp
OwogICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+YXJndW1lbnRzU3RydWN0dXJlKTsK
QEAgLTM5NiwxMiArMzk2LDEyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbihN
YXJrU3RhY2smIG1hcmtTdGFjaykKICAgICBpZiAoZCgpLT5yZWdpc3RlckFycmF5KSB7CiAgICAg
ICAgIC8vIE91dHNpZGUgdGhlIGV4ZWN1dGlvbiBvZiBnbG9iYWwgY29kZSwgd2hlbiBvdXIgdmFy
aWFibGVzIGFyZSB0b3JuIG9mZiwKICAgICAgICAgLy8gd2UgY2FuIG1hcmsgdGhlIHRvcm4tb2Zm
IGFycmF5LgotICAgICAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKGQoKS0+cmVnaXN0ZXJBcnJh
eS5nZXQoKSwgZCgpLT5yZWdpc3RlckFycmF5U2l6ZSk7CisgICAgICAgIG1hcmtTdGFjay5kZXBy
ZWNhdGVkQXBwZW5kVmFsdWVzKGQoKS0+cmVnaXN0ZXJBcnJheS5nZXQoKSwgZCgpLT5yZWdpc3Rl
ckFycmF5U2l6ZSk7CiAgICAgfSBlbHNlIGlmIChkKCktPnJlZ2lzdGVycykgewogICAgICAgICAv
LyBEdXJpbmcgZXhlY3V0aW9uIG9mIGdsb2JhbCBjb2RlLCB3aGVuIG91ciB2YXJpYWJsZXMgYXJl
IGluIHRoZSByZWdpc3RlciBmaWxlLAogICAgICAgICAvLyB0aGUgc3ltYm9sIHRhYmxlIHRlbGxz
IHVzIGhvdyBtYW55IHZhcmlhYmxlcyB0aGVyZSBhcmUsIGFuZCByZWdpc3RlcnMKICAgICAgICAg
Ly8gcG9pbnRzIHRvIHdoZXJlIHRoZXkgZW5kLCBhbmQgdGhlIHJlZ2lzdGVycyB1c2VkIGZvciBl
eGVjdXRpb24gYmVnaW4uCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoZCgpLT5yZWdp
c3RlcnMgLSBzeW1ib2xUYWJsZSgpLnNpemUoKSwgc3ltYm9sVGFibGUoKS5zaXplKCkpOworICAg
ICAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZFZhbHVlcyhkKCktPnJlZ2lzdGVycyAtIHN5
bWJvbFRhYmxlKCkuc2l6ZSgpLCBzeW1ib2xUYWJsZSgpLnNpemUoKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAy
NGJjMmY4OGI3MWMyM2Y1Y2UwYWEwOWE5ZjFmZWRmYTk1MzNmNTgwLi4yYjUwNjUxZThjYjBhMzA5
MzE5NGViZDI3NTM1MGQ0MTVkOWU0OTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTczLDI2ICs3Myw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgICAgICwgZGVzdHJ1Y3RvcihkZXN0cnVjdG9yKQogICAgICAgICAgICAg
ICAgICwgcmVnaXN0ZXJBcnJheVNpemUoMCkKICAgICAgICAgICAgICAgICAsIGdsb2JhbFNjb3Bl
Q2hhaW4oTm9TY29wZUNoYWluKCkpCi0gICAgICAgICAgICAgICAgLCByZWdFeHBDb25zdHJ1Y3Rv
cigwKQotICAgICAgICAgICAgICAgICwgZXJyb3JDb25zdHJ1Y3RvcigwKQotICAgICAgICAgICAg
ICAgICwgZXZhbEVycm9yQ29uc3RydWN0b3IoMCkKLSAgICAgICAgICAgICAgICAsIHJhbmdlRXJy
b3JDb25zdHJ1Y3RvcigwKQotICAgICAgICAgICAgICAgICwgcmVmZXJlbmNlRXJyb3JDb25zdHJ1
Y3RvcigwKQotICAgICAgICAgICAgICAgICwgc3ludGF4RXJyb3JDb25zdHJ1Y3RvcigwKQotICAg
ICAgICAgICAgICAgICwgdHlwZUVycm9yQ29uc3RydWN0b3IoMCkKLSAgICAgICAgICAgICAgICAs
IFVSSUVycm9yQ29uc3RydWN0b3IoMCkKLSAgICAgICAgICAgICAgICAsIGV2YWxGdW5jdGlvbigw
KQotICAgICAgICAgICAgICAgICwgY2FsbEZ1bmN0aW9uKDApCi0gICAgICAgICAgICAgICAgLCBh
cHBseUZ1bmN0aW9uKDApCi0gICAgICAgICAgICAgICAgLCBvYmplY3RQcm90b3R5cGUoMCkKLSAg
ICAgICAgICAgICAgICAsIGZ1bmN0aW9uUHJvdG90eXBlKDApCi0gICAgICAgICAgICAgICAgLCBh
cnJheVByb3RvdHlwZSgwKQotICAgICAgICAgICAgICAgICwgYm9vbGVhblByb3RvdHlwZSgwKQot
ICAgICAgICAgICAgICAgICwgc3RyaW5nUHJvdG90eXBlKDApCi0gICAgICAgICAgICAgICAgLCBu
dW1iZXJQcm90b3R5cGUoMCkKLSAgICAgICAgICAgICAgICAsIGRhdGVQcm90b3R5cGUoMCkKLSAg
ICAgICAgICAgICAgICAsIHJlZ0V4cFByb3RvdHlwZSgwKQotICAgICAgICAgICAgICAgICwgbWV0
aG9kQ2FsbER1bW15KDApCiAgICAgICAgICAgICAgICAgLCB3ZWFrUmFuZG9tKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkgKyAxLjApKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIH0KQEAgLTEwOSwy
OSArODksMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBTY29wZUNoYWluIGdsb2Jh
bFNjb3BlQ2hhaW47CiAgICAgICAgICAgICBSZWdpc3RlciBnbG9iYWxDYWxsRnJhbWVbUmVnaXN0
ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplXTsKIAotICAgICAgICAgICAgUmVnRXhwQ29uc3Ry
dWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yOwotICAgICAgICAgICAgRXJyb3JDb25zdHJ1Y3Rvciog
ZXJyb3JDb25zdHJ1Y3RvcjsKLSAgICAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2
YWxFcnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciog
cmFuZ2VFcnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcjsKLSAgICAgICAgICAgIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IqIHN5bnRheEVycm9yQ29uc3RydWN0b3I7Ci0gICAgICAgICAgICBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiB0eXBlRXJyb3JDb25zdHJ1Y3RvcjsKLSAgICAgICAgICAgIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IqIFVSSUVycm9yQ29uc3RydWN0b3I7Ci0KLSAgICAgICAgICAgIEdsb2Jh
bEV2YWxGdW5jdGlvbiogZXZhbEZ1bmN0aW9uOwotICAgICAgICAgICAgTmF0aXZlRnVuY3Rpb25X
cmFwcGVyKiBjYWxsRnVuY3Rpb247Ci0gICAgICAgICAgICBOYXRpdmVGdW5jdGlvbldyYXBwZXIq
IGFwcGx5RnVuY3Rpb247Ci0KLSAgICAgICAgICAgIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJv
dG90eXBlOwotICAgICAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBl
OwotICAgICAgICAgICAgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlOwotICAgICAgICAg
ICAgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3RvdHlwZTsKLSAgICAgICAgICAgIFN0cmlu
Z1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBlOwotICAgICAgICAgICAgTnVtYmVyUHJvdG90eXBl
KiBudW1iZXJQcm90b3R5cGU7Ci0gICAgICAgICAgICBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90
eXBlOwotICAgICAgICAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGU7Ci0KLSAg
ICAgICAgICAgIEpTT2JqZWN0KiBtZXRob2RDYWxsRHVtbXk7CisgICAgICAgICAgICBXcml0ZUJh
cnJpZXI8UmVnRXhwQ29uc3RydWN0b3I+IHJlZ0V4cENvbnN0cnVjdG9yOworICAgICAgICAgICAg
V3JpdGVCYXJyaWVyPEVycm9yQ29uc3RydWN0b3I+IGVycm9yQ29uc3RydWN0b3I7CisgICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gZXZhbEVycm9yQ29uc3Ry
dWN0b3I7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4g
cmFuZ2VFcnJvckNvbnN0cnVjdG9yOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I+IHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3I7CisgICAgICAgICAgICBX
cml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gc3ludGF4RXJyb3JDb25zdHJ1Y3Rv
cjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiB0eXBl
RXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNv
bnN0cnVjdG9yPiBVUklFcnJvckNvbnN0cnVjdG9yOworCisgICAgICAgICAgICBXcml0ZUJhcnJp
ZXI8R2xvYmFsRXZhbEZ1bmN0aW9uPiBldmFsRnVuY3Rpb247CisgICAgICAgICAgICBXcml0ZUJh
cnJpZXI8TmF0aXZlRnVuY3Rpb25XcmFwcGVyPiBjYWxsRnVuY3Rpb247CisgICAgICAgICAgICBX
cml0ZUJhcnJpZXI8TmF0aXZlRnVuY3Rpb25XcmFwcGVyPiBhcHBseUZ1bmN0aW9uOworCisgICAg
ICAgICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0UHJvdG90eXBlPiBvYmplY3RQcm90b3R5cGU7Cisg
ICAgICAgICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Qcm90b3R5cGU+IGZ1bmN0aW9uUHJvdG90
eXBlOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBlPiBhcnJheVByb3Rv
dHlwZTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxCb29sZWFuUHJvdG90eXBlPiBib29sZWFu
UHJvdG90eXBlOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cmluZ1Byb3RvdHlwZT4gc3Ry
aW5nUHJvdG90eXBlOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPE51bWJlclByb3RvdHlwZT4g
bnVtYmVyUHJvdG90eXBlOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPERhdGVQcm90b3R5cGU+
IGRhdGVQcm90b3R5cGU7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBl
PiByZWdFeHBQcm90b3R5cGU7CisKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4g
bWV0aG9kQ2FsbER1bW15OwogCiAgICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBhcmd1bWVu
dHNTdHJ1Y3R1cmU7CiAgICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBhcnJheVN0cnVjdHVy
ZTsKQEAgLTIwOSwyOCArMTg5LDI4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBUaGUg
Zm9sbG93aW5nIGFjY2Vzc29ycyByZXR1cm4gcHJpc3RpbmUgdmFsdWVzLCBldmVuIGlmIGEgc2Ny
aXB0IAogICAgICAgICAvLyByZXBsYWNlcyB0aGUgZ2xvYmFsIG9iamVjdCdzIGFzc29jaWF0ZWQg
cHJvcGVydHkuCiAKLSAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gZCgpLT5yZWdFeHBDb25zdHJ1Y3RvcjsgfQorICAgICAgICBSZWdF
eHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnJl
Z0V4cENvbnN0cnVjdG9yLmdldCgpOyB9CiAKLSAgICAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJy
b3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXJyb3JDb25zdHJ1Y3RvcjsgfQot
ICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIGQoKS0+ZXZhbEVycm9yQ29uc3RydWN0b3I7IH0KLSAgICAgICAgTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvciogcmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
ZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3I7IH0KLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cmVm
ZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcjsgfQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiBzeW50YXhFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5zeW50YXhFcnJv
ckNvbnN0cnVjdG9yOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHR5cGVFcnJv
ckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3Rvcjsg
fQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gZCgpLT5VUklFcnJvckNvbnN0cnVjdG9yOyB9CisgICAgICAgIEVycm9y
Q29uc3RydWN0b3IqIGVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPmVycm9y
Q29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZh
bEVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPmV2YWxFcnJvckNvbnN0cnVj
dG9yLmdldCgpOyB9CisgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJhbmdlRXJyb3JD
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cmFuZ2VFcnJvckNvbnN0cnVjdG9yLmdl
dCgpOyB9CisgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3Iu
Z2V0KCk7IH0KKyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciogc3ludGF4RXJyb3JDb25z
dHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQo
KTsgfQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0eXBlRXJyb3JDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAg
ICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogVVJJRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCi0gICAgICAgIEds
b2JhbEV2YWxGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gZCgpLT5ldmFs
RnVuY3Rpb247IH0KKyAgICAgICAgR2xvYmFsRXZhbEZ1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBkKCktPmV2YWxGdW5jdGlvbi5nZXQoKTsgfQogCi0gICAgICAgIE9iamVj
dFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5vYmplY3RQ
cm90b3R5cGU7IH0KLSAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gZCgpLT5mdW5jdGlvblByb3RvdHlwZTsgfQotICAgICAgICBBcnJh
eVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmFycmF5UHJv
dG90eXBlOyB9Ci0gICAgICAgIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBkKCktPmJvb2xlYW5Qcm90b3R5cGU7IH0KLSAgICAgICAgU3RyaW5nUHJv
dG90eXBlKiBzdHJpbmdQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPnN0cmluZ1Byb3Rv
dHlwZTsgfQotICAgICAgICBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGQoKS0+bnVtYmVyUHJvdG90eXBlOyB9Ci0gICAgICAgIERhdGVQcm90b3R5cGUq
IGRhdGVQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmRhdGVQcm90b3R5cGU7IH0KLSAg
ICAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBk
KCktPnJlZ0V4cFByb3RvdHlwZTsgfQorICAgICAgICBPYmplY3RQcm90b3R5cGUqIG9iamVjdFBy
b3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpOyB9Cisg
ICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgQXJyYXlQcm90b3R5
cGUqIGFycmF5UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5hcnJheVByb3RvdHlwZS5n
ZXQoKTsgfQorICAgICAgICBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gZCgpLT5ib29sZWFuUHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIFN0cmlu
Z1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5zdHJpbmdQ
cm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBkKCktPm51bWJlclByb3RvdHlwZS5nZXQoKTsgfQorICAgICAg
ICBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5kYXRl
UHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0KIAotICAg
ICAgICBKU09iamVjdCogbWV0aG9kQ2FsbER1bW15KCkgY29uc3QgeyByZXR1cm4gZCgpLT5tZXRo
b2RDYWxsRHVtbXk7IH0KKyAgICAgICAgSlNPYmplY3QqIG1ldGhvZENhbGxEdW1teSgpIGNvbnN0
IHsgcmV0dXJuIGQoKS0+bWV0aG9kQ2FsbER1bW15LmdldCgpOyB9CiAKICAgICAgICAgU3RydWN0
dXJlKiBhcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPmFyZ3VtZW50c1N0
cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gZCgpLT5hcnJheVN0cnVjdHVyZS5nZXQoKTsgfQpAQCAtMzg1LDcgKzM2NSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBKU1ZhbHVlIFN0cnVjdHVyZTo6cHJvdG90
eXBlRm9yTG9va3VwKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICB7CiAgICAgICAgIGlmICh0
eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKQotICAgICAgICAgICAgcmV0dXJuIG1fcHJv
dG90eXBlOworICAgICAgICAgICAgcmV0dXJuIG1fcHJvdG90eXBlLmdldCgpOwogCiAgICAgICAg
IEFTU0VSVCh0eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlKTsKICAgICAgICAgcmV0dXJu
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90eXBlKCk7CkBAIC00NTcs
MTIgKzQzNywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIHZhbHVlczsKICAgICAgICAgdmFsdWVzLmFwcGVuZChzaW5nbGVJdGVtVmFsdWUp
OwotICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwgdmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIG5ldyAo
ZXhlYykgSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwgdmFsdWVzKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNB
cnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiB2YWx1
ZXMpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwgdmFsdWVzKTsKKyAgICAgICAgcmV0
dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwgdmFsdWVzKTsKICAgICB9CiAKICAgICBj
bGFzcyBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRleCA1YTgyNTBmMDc3YzYzZWRmMDM3NThkMWU1ZDNl
YTUwMWM1NDVhOGFlLi4wZjdhNTc2MTk3YzNmM2JlZDkzNThhZjI4MWE3ODVkYTYyZDczYjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtODQs
MTIgKzg0LDEzIEBAIHByaXZhdGU6CiAgICAgcHVibGljOgogICAgICAgICBIb2xkZXIoSlNPYmpl
Y3QqKTsKIAotICAgICAgICBKU09iamVjdCogb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vYmpl
Y3Q7IH0KKyAgICAgICAgSlNPYmplY3QqIG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0
LmdldCgpOyB9CisgICAgICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+KiBvYmplY3RTbG90KCkg
eyByZXR1cm4gJm1fb2JqZWN0OyB9CiAKICAgICAgICAgYm9vbCBhcHBlbmROZXh0UHJvcGVydHko
U3RyaW5naWZpZXImLCBVU3RyaW5nQnVpbGRlciYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
SlNPYmplY3QqIGNvbnN0IG1fb2JqZWN0OworICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0
PiBtX29iamVjdDsKICAgICAgICAgY29uc3QgYm9vbCBtX2lzQXJyYXk7CiAgICAgICAgIGJvb2wg
bV9pc0pTQXJyYXk7CiAgICAgICAgIHVuc2lnbmVkIG1faW5kZXg7CkBAIC0yNTgsNyArMjU5LDcg
QEAgdm9pZCBTdHJpbmdpZmllcjo6bWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaykK
ICAgICBmb3IgKFN0cmluZ2lmaWVyKiBzdHJpbmdpZmllciA9IHRoaXM7IHN0cmluZ2lmaWVyOyBz
dHJpbmdpZmllciA9IHN0cmluZ2lmaWVyLT5tX25leHRTdHJpbmdpZmllclRvTWFyaykgewogICAg
ICAgICBzaXplX3Qgc2l6ZSA9IG1faG9sZGVyU3RhY2suc2l6ZSgpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
bV9ob2xkZXJTdGFja1tpXS5vYmplY3QoKSk7CisgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5k
KG1faG9sZGVyU3RhY2tbaV0ub2JqZWN0U2xvdCgpKTsKICAgICB9CiB9CiAKQEAgLTI2OSw3ICsy
NzAsNyBAQCBKU1ZhbHVlIFN0cmluZ2lmaWVyOjpzdHJpbmdpZnkoSlNWYWx1ZSB2YWx1ZSkKICAg
ICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxs
IGVtcHR5UHJvcGVydHlOYW1lKG1fZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVt
cHR5SWRlbnRpZmllcik7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QobV9leGVjLT5nbG9iYWxEYXRh
KCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCB2YWx1ZSk7CisgICAgb2JqZWN0LT5w
dXREaXJlY3QobV9leGVjLT5nbG9iYWxEYXRhKCksIG1fZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3Bl
cnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllciwgdmFsdWUpOwogCiAgICAgVVN0cmluZ0J1aWxkZXIg
cmVzdWx0OwogICAgIGlmIChhcHBlbmRTdHJpbmdpZmllZFZhbHVlKHJlc3VsdCwgdmFsdWUsIG9i
amVjdCwgZW1wdHlQcm9wZXJ0eU5hbWUpICE9IFN0cmluZ2lmeVN1Y2NlZWRlZCkKQEAgLTQ5OSw3
ICs1MDAsNyBAQCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShT
dHJpbmdpZmllciYgc3RyaW5naWZpZXIsIFVTdHJpbmdCdQogICAgIC8vIEZpcnN0IHRpbWUgdGhy
b3VnaCwgaW5pdGlhbGl6ZS4KICAgICBpZiAoIW1faW5kZXgpIHsKICAgICAgICAgaWYgKG1faXNB
cnJheSkgewotICAgICAgICAgICAgbV9pc0pTQXJyYXkgPSBpc0pTQXJyYXkoJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgbV9vYmplY3QpOworICAgICAgICAgICAgbV9pc0pTQXJyYXkgPSBpc0pTQXJyYXko
JmV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3QuZ2V0KCkpOwogICAgICAgICAgICAgbV9zaXpl
ID0gbV9vYmplY3QtPmdldChleGVjLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+
bGVuZ3RoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdbJyk7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC01MzIsMTAgKzUzMywxMCBAQCBib29sIFN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmllciYgc3RyaW5naWZpZXIsIFVT
dHJpbmdCdQogICAgIGlmIChtX2lzQXJyYXkpIHsKICAgICAgICAgLy8gR2V0IHRoZSB2YWx1ZS4K
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKLSAgICAgICAgaWYgKG1faXNKU0FycmF5ICYmIGFzQXJy
YXkobV9vYmplY3QpLT5jYW5HZXRJbmRleChpbmRleCkpCi0gICAgICAgICAgICB2YWx1ZSA9IGFz
QXJyYXkobV9vYmplY3QpLT5nZXRJbmRleChpbmRleCk7CisgICAgICAgIGlmIChtX2lzSlNBcnJh
eSAmJiBhc0FycmF5KG1fb2JqZWN0LmdldCgpKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgICAg
ICAgICAgdmFsdWUgPSBhc0FycmF5KG1fb2JqZWN0LmdldCgpKS0+Z2V0SW5kZXgoaW5kZXgpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KG1fb2JqZWN0KTsK
KyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KG1fb2JqZWN0LmdldCgpKTsKICAgICAgICAg
ICAgIGlmICghbV9vYmplY3QtPmdldE93blByb3BlcnR5U2xvdChleGVjLCBpbmRleCwgc2xvdCkp
CiAgICAgICAgICAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICAgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTU0OSwxMCArNTUwLDEwIEBAIGJvb2wgU3RyaW5naWZp
ZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwg
VVN0cmluZ0J1CiAgICAgICAgIHN0cmluZ2lmaWVyLnN0YXJ0TmV3TGluZShidWlsZGVyKTsKIAog
ICAgICAgICAvLyBBcHBlbmQgdGhlIHN0cmluZ2lmaWVkIHZhbHVlLgotICAgICAgICBzdHJpbmdp
ZnlSZXN1bHQgPSBzdHJpbmdpZmllci5hcHBlbmRTdHJpbmdpZmllZFZhbHVlKGJ1aWxkZXIsIHZh
bHVlLCBtX29iamVjdCwgaW5kZXgpOworICAgICAgICBzdHJpbmdpZnlSZXN1bHQgPSBzdHJpbmdp
Zmllci5hcHBlbmRTdHJpbmdpZmllZFZhbHVlKGJ1aWxkZXIsIHZhbHVlLCBtX29iamVjdC5nZXQo
KSwgaW5kZXgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEdldCB0aGUgdmFsdWUuCi0gICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KG1fb2JqZWN0KTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QobV9vYmplY3QuZ2V0KCkpOwogICAgICAgICBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUgPSBt
X3Byb3BlcnR5TmFtZXMtPnByb3BlcnR5TmFtZVZlY3RvcigpW2luZGV4XTsKICAgICAgICAgaWYg
KCFtX29iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU3NCw3ICs1NzUsNyBAQCBib29sIFN0cmlu
Z2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmllciYgc3RyaW5naWZp
ZXIsIFVTdHJpbmdCdQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKIAogICAgICAg
ICAvLyBBcHBlbmQgdGhlIHN0cmluZ2lmaWVkIHZhbHVlLgotICAgICAgICBzdHJpbmdpZnlSZXN1
bHQgPSBzdHJpbmdpZmllci5hcHBlbmRTdHJpbmdpZmllZFZhbHVlKGJ1aWxkZXIsIHZhbHVlLCBt
X29iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RyaW5naWZ5UmVzdWx0ID0gc3RyaW5n
aWZpZXIuYXBwZW5kU3RyaW5naWZpZWRWYWx1ZShidWlsZGVyLCB2YWx1ZSwgbV9vYmplY3QuZ2V0
KCksIHByb3BlcnR5TmFtZSk7CiAgICAgfQogCiAgICAgLy8gRnJvbSB0aGlzIHBvaW50IG9uLCBu
byBhY2Nlc3MgdG8gdGhlIHRoaXMgcG9pbnRlciBvciB0byBhbnkgbWVtYmVycywgYmVjYXVzZSB0
aGUKQEAgLTY0MSwxMyArNjQyLDEzIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU1ZhbHVl
IGFyZ3NbXSA9IHsgcHJvcGVydHksIHVuZmlsdGVyZWQgfTsKICAgICAgICAgQXJnTGlzdCBhcmdM
aXN0KGFyZ3MsIDIpOwotICAgICAgICByZXR1cm4gY2FsbChtX2V4ZWMsIG1fZnVuY3Rpb24sIG1f
Y2FsbFR5cGUsIG1fY2FsbERhdGEsIHRoaXNPYmosIGFyZ0xpc3QpOworICAgICAgICByZXR1cm4g
Y2FsbChtX2V4ZWMsIG1fZnVuY3Rpb24uZ2V0KCksIG1fY2FsbFR5cGUsIG1fY2FsbERhdGEsIHRo
aXNPYmosIGFyZ0xpc3QpOwogICAgIH0KIAogICAgIGZyaWVuZCBjbGFzcyBIb2xkZXI7CiAKICAg
ICBFeGVjU3RhdGUqIG1fZXhlYzsKLSAgICBKU09iamVjdCogbV9mdW5jdGlvbjsKKyAgICBEZXBy
ZWNhdGVkUHRyPEpTT2JqZWN0PiBtX2Z1bmN0aW9uOwogICAgIENhbGxUeXBlIG1fY2FsbFR5cGU7
CiAgICAgQ2FsbERhdGEgbV9jYWxsRGF0YTsKIH07CkBAIC03MjYsNyArNzI3LDcgQEAgTkVWRVJf
SU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAg
ICAgICAgICAgICAgYXJyYXktPmRlbGV0ZVByb3BlcnR5KG1fZXhlYywgaW5kZXhTdGFjay5sYXN0
KCkpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBpZiAoaXNK
U0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgYXJyYXkpICYmIGFycmF5LT5jYW5TZXRJbmRl
eChpbmRleFN0YWNrLmxhc3QoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBhcnJheS0+c2V0
SW5kZXgoaW5kZXhTdGFjay5sYXN0KCksIGZpbHRlcmVkVmFsdWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYXJyYXktPnNldEluZGV4KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBpbmRleFN0YWNr
Lmxhc3QoKSwgZmlsdGVyZWRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgICAgIGFycmF5LT5wdXQobV9leGVjLCBpbmRleFN0YWNrLmxhc3QoKSwg
ZmlsdGVyZWRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDZlY2M3M2Y4YzdiZGRjMGFlNjgzNTEyY2E1NjI2
OWI3Y2Y2ZDc0OWIuLjdhMWU3ZTEwNWM4ODM5Mjc2YmUyNmE1MWU3Y2JhZGZjZDJkNTZlZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTMxMiw3ICsz
MTIsNyBAQCB2b2lkIEpTT2JqZWN0OjpkZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTTwogICAgIEpTVmFsdWUgb2JqZWN0ID0gZ2V0
RGlyZWN0KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKG9iamVjdCAmJiBvYmplY3QuaXNHZXR0ZXJT
ZXR0ZXIoKSkgewogICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUtPmhhc0dldHRlclNldHRlclBy
b3BlcnRpZXMoKSk7Ci0gICAgICAgIGFzR2V0dGVyU2V0dGVyKG9iamVjdCktPnNldEdldHRlcihn
ZXR0ZXJGdW5jdGlvbik7CisgICAgICAgIGFzR2V0dGVyU2V0dGVyKG9iamVjdCktPnNldEdldHRl
cihleGVjLT5nbG9iYWxEYXRhKCksIGdldHRlckZ1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgSlNPYmplY3Q6OmRlZmluZUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPCiAgICAg
fQogCiAgICAgbV9zdHJ1Y3R1cmUtPnNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXModHJ1ZSk7
Ci0gICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZ2V0dGVyRnVuY3Rpb24pOworICAgIGdldHRl
clNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2V0dGVyRnVuY3Rpb24pOwog
fQogCiB2b2lkIEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEpTT2JqZWN0OjpkZWZpbmVT
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
TwogICAgIEpTVmFsdWUgb2JqZWN0ID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFtZSk7CiAgICAgaWYg
KG9iamVjdCAmJiBvYmplY3QuaXNHZXR0ZXJTZXR0ZXIoKSkgewogICAgICAgICBBU1NFUlQobV9z
dHJ1Y3R1cmUtPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7Ci0gICAgICAgIGFzR2V0dGVy
U2V0dGVyKG9iamVjdCktPnNldFNldHRlcihzZXR0ZXJGdW5jdGlvbik7CisgICAgICAgIGFzR2V0
dGVyU2V0dGVyKG9iamVjdCktPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIHNldHRlckZ1
bmN0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzU4LDcgKzM1OCw3IEBAIHZv
aWQgSlNPYmplY3Q6OmRlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNPCiAgICAgfQogCiAgICAgbV9zdHJ1Y3R1cmUtPnNldEhhc0dl
dHRlclNldHRlclByb3BlcnRpZXModHJ1ZSk7Ci0gICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0ZXIo
c2V0dGVyRnVuY3Rpb24pOworICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgc2V0dGVyRnVuY3Rpb24pOwogfQogCiBKU1ZhbHVlIEpTT2JqZWN0Ojpsb29rdXBH
ZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQpAQCAtNTEy
LDM0ICs1MTIsMzQgQEAgdm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKICAgICBpZiAobV9zdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24ocHJvcGVydHlOYW1lKTsKICAgICAgICAgaWYgKG9mZnNldCAhPSBX
VEY6Om5vdEZvdW5kKQotICAgICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwganNVbmRl
ZmluZWQoKSk7CisgICAgICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0
dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24obV9zdHJ1Y3R1cmUsIHBy
b3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBzZXRTdHJ1Y3R1cmUoc3RydWN0dXJlLnJlbGVhc2Uo
KSk7CiAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQotICAgICAgICBwdXREaXJlY3RP
ZmZzZXQob2Zmc2V0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJl
Y3RPZmZzZXQob2Zmc2V0KTsKIH0KIAogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0
cikKIHsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5u
YW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBmdW5jdGlvbi0+bmFtZShleGVjKSksIGZ1
bmN0aW9uLCBhdHRyKTsKIH0KIAogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0cikKIHsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbihJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMp
KSwgZnVuY3Rpb24sIGF0dHIpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihleGVjLCBmdW5jdGlvbi0+bmFtZShleGVjKSksIGZ1bmN0aW9uLCBh
dHRyKTsKIH0KIAogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25l
ZCBhdHRyKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSWRlbnRp
ZmllcihleGVjLCBmdW5jdGlvbi0+bmFtZShleGVjKSksIGZ1bmN0aW9uLCBhdHRyKTsKKyAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCBmdW5jdGlvbi0+bmFtZShleGVjKSksIGZ1bmN0aW9uLCBhdHRyKTsKIH0K
IAogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyKQogewotICAg
IHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCBmdW5j
dGlvbi0+bmFtZShleGVjKSksIGZ1bmN0aW9uLCBhdHRyKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBm
dW5jdGlvbi0+bmFtZShleGVjKSksIGZ1bmN0aW9uLCBhdHRyKTsKIH0KIAogTkVWRVJfSU5MSU5F
IHZvaWQgSlNPYmplY3Q6OmZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiBzbG90
LCBKU1ZhbHVlKiBsb2NhdGlvbikKQEAgLTU5NSwxMSArNTk1LDExIEBAIHN0YXRpYyBib29sIHB1
dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGFyZ2V0LCBjb25zdCBJZGVu
dGlmaWVyJiBwCiAgICAgICAgICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gbmV3IChleGVj
KSBHZXR0ZXJTZXR0ZXIoZXhlYyk7CiAgICAgICAgICAgICBpZiAob2xkRGVzY3JpcHRvci5nZXR0
ZXIoKSkgewogICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gR2V0dGVyOwotICAgICAgICAg
ICAgICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIoYXNPYmplY3Qob2xkRGVzY3JpcHRvci5nZXR0ZXIo
KSkpOworICAgICAgICAgICAgICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBhc09iamVjdChvbGREZXNjcmlwdG9yLmdldHRlcigpKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAob2xkRGVzY3JpcHRvci5zZXR0ZXIoKSkgewogICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZXMgfD0gU2V0dGVyOwotICAgICAgICAgICAgICAgIGFjY2Vzc29yLT5zZXRTZXR0
ZXIoYXNPYmplY3Qob2xkRGVzY3JpcHRvci5zZXR0ZXIoKSkpOworICAgICAgICAgICAgICAgIGFj
Y2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChvbGREZXNjcmlw
dG9yLnNldHRlcigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0YXJnZXQtPnB1dFdp
dGhBdHRyaWJ1dGVzKGV4ZWMsIHByb3BlcnR5TmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXMpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03MjAsOSArNzIwLDkgQEAgYm9vbCBKU09iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IGFzR2V0dGVyU2V0
dGVyKGFjY2Vzc29yKTsKICAgICBpZiAoY3VycmVudC5hdHRyaWJ1dGVzRXF1YWwoZGVzY3JpcHRv
cikpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2V0dGVyKCkpCi0gICAgICAgICAgICBnZXR0
ZXJTZXR0ZXItPnNldFNldHRlcihhc09iamVjdChkZXNjcmlwdG9yLnNldHRlcigpKSk7CisgICAg
ICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2Jq
ZWN0KGRlc2NyaXB0b3Iuc2V0dGVyKCkpKTsKICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVy
KCkpCi0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihhc09iamVjdChkZXNjcmlw
dG9yLmdldHRlcigpKSk7CisgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihleGVj
LT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGRlc2NyaXB0b3IuZ2V0dGVyKCkpKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIGRlbGV0ZVByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CkBAIC03MzEsNyArNzMxLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHko
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUKICAgICAgICAg
YXR0cnMgfD0gU2V0dGVyOwogICAgIGlmIChkZXNjcmlwdG9yLmdldHRlcigpKQogICAgICAgICBh
dHRycyB8PSBHZXR0ZXI7Ci0gICAgcHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVy
LCBhdHRycyk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1l
LCBnZXR0ZXJTZXR0ZXIsIGF0dHJzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggODAzYWJmZDczYjRjNDliZWVhMzVk
ZTFhMTFjODgzMmJhMDVlOTc0ZS4uZGNkYzkzZjcyMDk4MDcxNTMxN2IzYjFlNWQyNjlhMmU0MWQ2
OGZlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC03MCw4
ICs3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTZXR0ZXIgICAgICAgPSAxIDw8IDYg
ICAvLyBwcm9wZXJ0eSBpcyBhIHNldHRlcgogICAgIH07CiAKLSAgICB0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlKiBQcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgdHlwZWRlZiBjb25zdCBFbmNvZGVkSlNWYWx1
ZSogQ29uc3RQcm9wZXJ0eVN0b3JhZ2U7CisgICAgdHlwZWRlZiBXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KiBQcm9wZXJ0eVN0b3JhZ2U7CisgICAgdHlwZWRlZiBjb25zdCBXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiBDb25zdFByb3BlcnR5U3RvcmFnZTsKIAogICAgIGNsYXNzIEpTT2JqZWN0
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCYXRjaGVkVHJhbnNpdGlv
bk9wdGltaXplcjsKQEAgLTE3OSwyMyArMTc5LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBib29sIGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiAhbV9zdHJ1Y3R1cmUtPmlzRW1w
dHkoKTsgfQogICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVy
biBtX3N0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CiAKLSAgICAgICAg
Ym9vbCBwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCk7Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwotICAgICAgICBib29sIHB1
dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgICAgICBib29sIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJv
b2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZvaWQgcHV0RGly
ZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0ciA9IDApOworICAgICAgICBib29sIHB1dERpcmVjdChKU0dsb2JhbERh
dGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogCi0gICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7Ci0gICAg
ICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCk7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oSlNHbG9i
YWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqLCB1bnNpZ25l
ZCBhdHRyID0gMCk7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oSlNHbG9iYWxEYXRh
JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqLCB1bnNpZ25lZCBhdHRy
LCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2b2lkIHB1
dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyID0gMCk7
CiAKLSAgICAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKLSAg
ICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwor
ICAgICAgICB2b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciA9IDAp
OworICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1
bnNpZ25lZCBhdHRyID0gMCk7CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhdHRyID0gMCk7CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25l
ZCBhdHRyID0gMCk7CiAKICAgICAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVydHkg
b2Zmc2V0cy4KLSAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkg
Y29uc3QgeyByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0p
OyB9Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQsIEpTVmFsdWUg
dmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSk7IH0KKyAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29u
c3QgeyByZXR1cm4gcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5nZXQoKTsgfQorICAgICAgICB2
b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvZmZz
ZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFs
RGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RP
ZmZzZXQoc2l6ZV90IG9mZnNldCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVm
aW5lZCgpOyB9CiAKICAgICAgICAgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5
U2xvdCYsIEpTVmFsdWUqIGxvY2F0aW9uKTsKIApAQCAtMjI1LDkgKzIyNiw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQp
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCgpCisg
ICAgICAgIHZvaWQgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25h
cnlTdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgICAgICBtX3N0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rp
b25hcnlTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICB2
b2lkIHB1dEFub255bW91c1ZhbHVlKHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlKQpAQCAt
MjY3LDggKzI2OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KCZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVh
ZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKik7Ci0gICAgICAgIGJvb2wgcHV0
RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCk7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNH
bG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNp
Z25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCop
OworICAgICAgICBib29sIHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVj
a1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRl
cm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAogICAgICAgICBib29sIGlubGluZUdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwpAQCAtMjc4LDcgKzI3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFByb3BlcnR5U3RvcmFnZSBtX2V4dGVybmFsU3Rv
cmFnZTsKLSAgICAgICAgICAgIEVuY29kZWRKU1ZhbHVlIG1faW5saW5lU3RvcmFnZVtpbmxpbmVT
dG9yYWdlQ2FwYWNpdHldOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiBt
X2lubGluZVN0b3JhZ2VbaW5saW5lU3RvcmFnZUNhcGFjaXR5XTsKICAgICAgICAgfTsKIAogICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2luaGVyaXRvcklEOwpAQCAtNDUwLDcgKzQ1MSw3IEBA
IGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLWlubGlu
ZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tS
ZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb24p
CitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90LCBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsK
ICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhl
YXA6OmhlYXAodGhpcykpOwpAQCAtNDY3LDcgKzQ2OCw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUKICAgICAgICAgICAgIGlmIChjaGVja1JlYWRPbmx5ICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYg
UmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBw
dXREaXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1ZSk7CisgICAgICAgICAgICBwdXREaXJlY3RPZmZz
ZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgICAgICAvLyBBdCB0aGlzIHBv
aW50LCB0aGUgb2JqZWN0cyBzdHJ1Y3R1cmUgb25seSBoYXMgYSBzcGVjaWZpYyB2YWx1ZSBzZXQg
aWYgcHJldmlvdXNseSB0aGVyZQogICAgICAgICAgICAgLy8gaGFkIGJlZW4gb25lIHNldCwgYW5k
IGlmIHRoZSBuZXcgdmFsdWUgYmVpbmcgc3BlY2lmaWVkIGlzIHRoZSBzYW1lIChvdGhlcndpc2Ug
d2Ugd291bGQKICAgICAgICAgICAgIC8vIGhhdmUgZGVzcGVjaWZpZWQsIGFib3ZlKS4gIFNvLCBp
ZiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbiBpcyBub3Qgc2V0LCBvciBpZiB0aGUgbmV3CkBAIC00
ODUsNyArNDg2LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgYWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSk7CiAKICAgICAgICAgQVNTRVJUKG9mZnNldCA8IG1fc3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9m
ZnNldCwgdmFsdWUpOworICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0
LCB2YWx1ZSk7CiAgICAgICAgIC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1Byb3BlcnR5IGNhbGwg
YmVsb3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKICAgICAgICAgICAgIHNsb3Qu
c2V0TmV3UHJvcGVydHkodGhpcywgb2Zmc2V0KTsKQEAgLTUwMCw3ICs1MDEsNyBAQCBpbmxpbmUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlCiAKICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUu
cmVsZWFzZSgpKTsKLSAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUpOworICAg
ICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAg
IC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFs
dWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2ZSB0aGUg
c2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgogICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rp
b24pCkBAIC01MjcsNyArNTI4LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdElu
dGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICBp
ZiAoY3VycmVudFNwZWNpZmljRnVuY3Rpb24pIHsKICAgICAgICAgICAgIC8vIGNhc2UgKDEpIERv
IHRoZSBwdXQsIHRoZW4gcmV0dXJuIGxlYXZpbmcgdGhlIHNsb3QgdW5jYWNoYWJsZS4KICAgICAg
ICAgICAgIGlmIChzcGVjaWZpY0Z1bmN0aW9uID09IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUpOworICAgICAg
ICAgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8v
IGNhc2UgKDIpIERlc3BlY2lmeSwgZmFsbCB0aHJvdWdoIHRvICgzKS4KQEAgLTUzNiw3ICs1Mzcs
NyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAKICAgICAgICAgLy8gY2FzZSAoMykgc2V0IHRo
ZSBzbG90LCBkbyB0aGUgcHV0LCByZXR1cm4uCiAgICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9w
ZXJ0eSh0aGlzLCBvZmZzZXQpOwotICAgICAgICBwdXREaXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1
ZSk7CisgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC01NTcsNyArNTU4LDcgQEAgaW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZQogCiAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgc2V0U3RydWN0dXJlKHN0cnVjdHVyZS5yZWxlYXNl
KCkpOwotICAgIHB1dERpcmVjdE9mZnNldChvZmZzZXQsIHZhbHVlKTsKKyAgICBwdXREaXJlY3RP
ZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgLy8gVGhpcyBpcyBhIG5ldyBw
cm9wZXJ0eTsgdHJhbnNpdGlvbnMgd2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50
bHkgY2FjaGFibGUsCiAgICAgLy8gc28gbGVhdmUgdGhlIHNsb3QgaW4gYW4gdW5jYWNoYWJsZSBz
dGF0ZS4KICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCkBAIC01NzAsNjEgKzU3MSw2MSBAQCBp
bmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFI
ZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMp
KTsKIAotICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBh
dHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEs
IHZhbHVlKSk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIGdldEpTRnVu
Y3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUpKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewog
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBzbG90LCBnZXRKU0Z1bmN0aW9uKGdsb2Jh
bERhdGEsIHZhbHVlKSk7CisgICAgcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgZmFsc2UsIHNsb3QsIGdldEpTRnVuY3Rpb24oZ2xv
YmFsRGF0YSwgdmFsdWUpKTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5s
aW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6
OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogCi0gICAgcmV0dXJuIHB1dERpcmVj
dEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHks
IHNsb3QsIDApOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCAwKTsKIH0K
IAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxpbmUgdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAgIHB1dERpcmVjdEludGVybmFsKHBy
b3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBzbG90LCAwKTsKKyAgICBwdXRE
aXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVz
LCBmYWxzZSwgc2xvdCwgMCk7CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3Qo
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgcmV0dXJuIHB1dERpcmVjdEludGVy
bmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIGZhbHNlLCBzbG90LCAwKTsKKyAgICByZXR1cm4g
cHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgZmFs
c2UsIHNsb3QsIDApOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rp
b24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
K2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgdmFsdWUpOworICAgIHB1dERpcmVjdEludGVy
bmFsKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVh
ZE9ubHksIHNsb3QsIHZhbHVlKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwg
dW5zaWduZWQgYXR0cikKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cikKIHsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dDsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyLCBmYWxz
ZSwgc2xvdCwgdmFsdWUpOworICAgIHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHIsIGZhbHNlLCBzbG90LCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitpbmxp
bmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9
IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgIHNpemVfdCBvZmZz
ZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIDApOwogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gbV9zdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlKGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpOwotICAgIHB1dERpcmVjdE9mZnNldChvZmZzZXQsIHZhbHVlKTsKKyAgICBwdXREaXJl
Y3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIEpT
T2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2lu
bGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIHNpemVfdCBjdXJyZW50
Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICBz
aXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24o
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCB2YWx1ZSk7CiAgICAgaWYgKGN1cnJlbnRDYXBhY2l0
eSAhPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKICAgICAgICAgYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUp
OworICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKIH0KIAog
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnRyYW5zaXRpb25UbyhTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSkKQEAgLTcwMyw3ICs3MDQsNyBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdQogaW5saW5lIHZv
aWQgSlNWYWx1ZTo6cHV0RGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgQVNTRVJUKGlzQ2VsbCgpICYmIGlzT2JqZWN0KCkpOwotICAgIGlmICghYXNPYmplY3QoYXND
ZWxsKCkpLT5wdXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkgJiYgc2xvdC5pc1N0
cmljdE1vZGUoKSkKKyAgICBpZiAoIWFzT2JqZWN0KGFzQ2VsbCgpKS0+cHV0RGlyZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkgJiYgc2xvdC5pc1N0cmlj
dE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKTsKIH0KIApAQCAtNzI1LDcgKzcyNiw3IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBKU09iamVjdDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VJbmxpbmUoc2l6ZV90IG9s
ZFNpemUsIHNpemVfCiAgICAgYm9vbCB3YXNJbmxpbmUgPSAob2xkU2l6ZSA9PSBKU09iamVjdDo6
aW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKIAogICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQcm9wZXJ0
eVN0b3JhZ2UgPSAod2FzSW5saW5lID8gbV9pbmxpbmVTdG9yYWdlIDogbV9leHRlcm5hbFN0b3Jh
Z2UpOwotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSBuZXcgRW5jb2Rl
ZEpTVmFsdWVbbmV3U2l6ZV07CisgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFn
ZSA9IG5ldyBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+W25ld1NpemVdOwogCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG9sZFNpemU7ICsraSkKICAgICAgICBuZXdQcm9wZXJ0eVN0b3Jh
Z2VbaV0gPSBvbGRQcm9wZXJ0eVN0b3JhZ2VbaV07CkBAIC03NDAsMTEgKzc0MSwxMCBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6Om1hcmtDaGlsZHJlbkRpcmVjdChNYXJrU3RhY2smIG1h
cmtTdGFjaykKIHsKICAgICBKU0NlbGw6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogCi0gICAg
bWFya1N0YWNrLmFwcGVuZChwcm90b3R5cGUoKSk7Ci0gICAgCisgICAgbWFya1N0YWNrLmFwcGVu
ZChtX3N0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlU2xvdCgpKTsKICAgICBQcm9wZXJ0eVN0b3Jh
Z2Ugc3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwogICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9
IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7Ci0gICAgbWFya1N0YWNrLmFwcGVu
ZFZhbHVlcyhyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihzdG9yYWdlKSwgc3RvcmFnZVNpemUp
OworICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoc3RvcmFnZSwgc3RvcmFnZVNpemUpOwogfQog
CiAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAKaW5kZXggYTVkNGRhMDFiNjdjYTQ5ODQ4MDJiMDJjNDI2MTM0NTlhYzFlMWM3
NC4uZDA4ZDhmZTgwNGNiMzYzMWZiZDgzMGRlNDhhOWMzNTUyNmNiNmE1YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5jcHAKQEAgLTQwLDExICs0MCwxMSBAQCBpbmxpbmUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICwg
bV9jYWNoZWRTdHJ1Y3R1cmUoMCkKICAgICAsIG1fbnVtQ2FjaGVhYmxlU2xvdHMobnVtQ2FjaGVh
YmxlU2xvdHMpCiAgICAgLCBtX2pzU3RyaW5nc1NpemUocHJvcGVydHlOYW1lQXJyYXlEYXRhLT5w
cm9wZXJ0eU5hbWVWZWN0b3IoKS5zaXplKCkpCi0gICAgLCBtX2pzU3RyaW5ncyhuZXcgSlNWYWx1
ZVttX2pzU3RyaW5nc1NpemVdKQorICAgICwgbV9qc1N0cmluZ3MobmV3IFdyaXRlQmFycmllcjxV
bmtub3duPlttX2pzU3RyaW5nc1NpemVdKQogewogICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6
UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJh
eURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9qc1N0cmluZ3NTaXplOyArK2kpCi0gICAgICAgIG1fanNTdHJpbmdzW2ldID0ganNPd25lZFN0
cmluZyhleGVjLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKTsKKyAgICAgICAgbV9q
c1N0cmluZ3NbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0cmluZyhl
eGVjLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7CiB9CiAKIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6On5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCkKQEAgLTkxLDcgKzkxLDcgQEAg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QKIAogSlNWYWx1ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpnZXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgc2l6ZV90IGkpCiB7Ci0gICAg
SlNWYWx1ZSYgaWRlbnRpZmllciA9IG1fanNTdHJpbmdzW2ldOworICAgIEpTVmFsdWUgaWRlbnRp
ZmllciA9IG1fanNTdHJpbmdzW2ldLmdldCgpOwogICAgIGlmIChtX2NhY2hlZFN0cnVjdHVyZSA9
PSBiYXNlLT5zdHJ1Y3R1cmUoKSAmJiBtX2NhY2hlZFByb3RvdHlwZUNoYWluID09IGJhc2UtPnN0
cnVjdHVyZSgpLT5wcm90b3R5cGVDaGFpbihleGVjKSkKICAgICAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaAppbmRleCAwMTcwMGFjMjEyMTU1YjRmZTliOTdmYWFhZDFiZmRjYzc0
MDQyZmZhLi5jZDQ2MjQzYTgwOTFjMjEwYTc0NjI1NTczYjc3OTM0ZTMzZGNhNzI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCkBAIC04NSw3ICs4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8
U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgIHVpbnQzMl90
IG1fbnVtQ2FjaGVhYmxlU2xvdHM7CiAgICAgICAgIHVpbnQzMl90IG1fanNTdHJpbmdzU2l6ZTsK
LSAgICAgICAgT3duQXJyYXlQdHI8SlNWYWx1ZT4gbV9qc1N0cmluZ3M7CisgICAgICAgIE93bkFy
cmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1fanNTdHJpbmdzOwogICAgIH07CiAKICAg
ICBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUoSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKaW5kZXggN2FiMWQxYzEwNzQ0
ZjUwM2JmYTgxZDE3OWE3YjNmNGIzZGIwNjQ0My4uODBiMDQ4ZTBhMzA4NDY0NTU4YTc5NjdkMjBi
YmQ3NDdmZWI3ZTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdGF0aWNTY29wZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgQVNTRVJUX0NMQVNT
X0ZJVFNfSU5fQ0VMTChKU1N0YXRpY1Njb3BlT2JqZWN0KTsKIHZvaWQgSlNTdGF0aWNTY29wZU9i
amVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEpTVmFyaWFi
bGVPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwotICAgIG1hcmtTdGFjay5hcHBlbmQo
ZCgpLT5yZWdpc3RlclN0b3JlLmpzVmFsdWUoKSk7CisgICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRB
cHBlbmQoJmQoKS0+cmVnaXN0ZXJTdG9yZSk7CiB9CiAKIEpTT2JqZWN0KiBKU1N0YXRpY1Njb3Bl
T2JqZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmluZGV4IGJhMjgxMzlhNGNhZWQyMjJiYzFj
YmJmODRiNGFmYzNhNzRiODJhOWEuLjg0OGM0MzFhYzBjNGI0MGZkNDZjN2Y3NDgxZTQ5NzEzNzI4
ZDdiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAg
LTI1NSw3ICsyNTUsNyBAQCBVU3RyaW5nIEpTU3RyaW5nOjp0b1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiAKIGlubGluZSBTdHJpbmdPYmplY3QqIFN0cmluZ09iamVjdDo6Y3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykKIHsKLSAgICByZXR1cm4gbmV3IChleGVj
KSBTdHJpbmdPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdPYmplY3RT
dHJ1Y3R1cmUoKSwgc3RyaW5nKTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBTdHJpbmdPYmplY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ09i
amVjdFN0cnVjdHVyZSgpLCBzdHJpbmcpOwogfQogCiBKU09iamVjdCogSlNTdHJpbmc6OnRvT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFsdWUuaAppbmRleCBjYWQ5NjYyODFkYjdjZDdiMGU2NjdhNjliOTBkMmRiYzRkOGY3Y2U2Li5i
MmU3YTUxZTU4MTE5ODg2MmRiYmQ4NmVkOTU4ZWVmNmMwZWVlMWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCkBAIC00Nyw2ICs0Nyw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHN0cnVjdCBDbGFzc0luZm87CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwogCisgICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIERlcHJlY2F0ZWRQdHI7CisgICAgdGVtcGxhdGUgPGNs
YXNzIFQ+IGNsYXNzIFdyaXRlQmFycmllckJhc2U7CisKICAgICBlbnVtIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07CiAK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMjEyLDYgKzIxNSw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2VuZGlmCiAKICAgICBwcml2YXRlOgorICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNW
YWx1ZShEZXByZWNhdGVkUHRyPFQ+KTsKKyAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFs
dWUoV3JpdGVCYXJyaWVyQmFzZTxUPik7CisKICAgICAgICAgZW51bSBIYXNoVGFibGVEZWxldGVk
VmFsdWVUYWcgeyBIYXNoVGFibGVEZWxldGVkVmFsdWUgfTsKICAgICAgICAgSlNWYWx1ZShIYXNo
VGFibGVEZWxldGVkVmFsdWVUYWcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAppbmRleCAyYzM5ZjVjMjM4NDlmZWUyYWZmYTE5NGQ0
YzZlZTU5Mzk5YWJhNzQxLi42YzczYjJmMGRhOGE1ODBlMWUxMGQxYmNlOGUzMDhkNGZjMTg2YzQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVj
dC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgdm9pZCBKU1dyYXBwZXJPYmplY3Q6Om1hcmtDaGlsZHJl
bihNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBKU09iamVjdDo6bWFya0NoaWxkcmVuKG1h
cmtTdGFjayk7CiAgICAgaWYgKG1faW50ZXJuYWxWYWx1ZSkKLSAgICAgICAgbWFya1N0YWNrLmFw
cGVuZChtX2ludGVybmFsVmFsdWUpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2ludGVy
bmFsVmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKaW5kZXggZjE5Y2QzMGM4NTA0OTQwOWEz
MzhjY2UyN2Y2MTdlODk5ZWRlMzQwYi4uNGVhZjJjMDQwOWUzNzhmNTlmNDc4Yjc5N2UzNTA5NTcx
YWVhODkxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFw
cGVyT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVy
T2JqZWN0LmgKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGV4cGxp
Y2l0IEpTV3JhcHBlck9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAogICAg
IHB1YmxpYzoKLSAgICAgICAgSlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbFZhbHVlOyB9Ci0gICAgICAgIHZvaWQgc2V0SW50ZXJuYWxWYWx1ZShKU1ZhbHVl
KTsKKyAgICAgICAgSlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbnRl
cm5hbFZhbHVlLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0SW50ZXJuYWxWYWx1ZShKU0dsb2Jh
bERhdGEmLCBKU1ZhbHVlKTsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgICAgIHsgCkBAIC00Nyw3
ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVl
IG1faW50ZXJuYWxWYWx1ZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1faW50ZXJu
YWxWYWx1ZTsKICAgICB9OwogCiAgICAgaW5saW5lIEpTV3JhcHBlck9iamVjdDo6SlNXcmFwcGVy
T2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQpAQCAtNTYsMTEg
KzU2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBwdXRBbm9ueW1vdXNWYWx1ZSgwLCBq
c051bGwoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgSlNXcmFwcGVyT2JqZWN0OjpzZXRJ
bnRlcm5hbFZhbHVlKEpTVmFsdWUgdmFsdWUpCisgICAgaW5saW5lIHZvaWQgSlNXcmFwcGVyT2Jq
ZWN0OjpzZXRJbnRlcm5hbFZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSB2
YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVCghdmFs
dWUuaXNPYmplY3QoKSk7Ci0gICAgICAgIG1faW50ZXJuYWxWYWx1ZSA9IHZhbHVlOworICAgICAg
ICBtX2ludGVybmFsVmFsdWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKICAgICAgICAg
cHV0QW5vbnltb3VzVmFsdWUoMCwgdmFsdWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRleCBkZjg3ZTdmODZiNTZlZDA1
NzE4OTIwYWQwMjZlMWU1YzJiNjdmZTI5Li5iYzJlNzM2MjQ2OTU4M2JkYmY1YzM1MDQ0ZTEwYzdk
ZDdhODE0NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRl
cmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFs
UGFyc2VyLmNwcApAQCAtMzczLDcgKzM3Myw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjo6cGFy
c2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y2FzZSBEb1BhcnNlT2JqZWN0RW5kRXhwcmVzc2lvbjoKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBhc09iamVjdChvYmplY3RTdGFjay5sYXN0KCkpLT5wdXREaXJlY3QoaWRlbnRpZmll
clN0YWNrLmxhc3QoKSwgbGFzdFZhbHVlKTsKKyAgICAgICAgICAgICAgICBhc09iamVjdChvYmpl
Y3RTdGFjay5sYXN0KCkpLT5wdXREaXJlY3QobV9leGVjLT5nbG9iYWxEYXRhKCksIGlkZW50aWZp
ZXJTdGFjay5sYXN0KCksIGxhc3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0
YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9r
ZW4oKS50eXBlID09IFRva0NvbW1hKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvUGFyc2VP
YmplY3RTdGFydEV4cHJlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmNwcAppbmRleCBkYWMxYzk0ZGM1ZWIzMmNhNjBkNzhlNzY2ZTg3YWIyODE3YmFkYjIzLi4xM2Vh
OTIzMDMwNTlkNWU5NmM3NzEzZGI2YTA1NzYwYWNjMmIxMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBzZXRVcFN0YXRp
Y0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpT
T2JqZWN0KgogI2VuZGlmCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG5ldyAoZXhlYykgTmF0aXZl
RnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5wcm90b3R5
cGVGdW5jdGlvblN0cnVjdHVyZSgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJvcGVydHlO
YW1lLCBlbnRyeS0+ZnVuY3Rpb24oKSk7CiAKLSAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0RnVu
Y3Rpb24ocHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAg
ICAgIHRoaXNPYmotPnB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVy
dHlOYW1lLCBmdW5jdGlvbiwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CiAgICAgICAgIGxvY2F0aW9u
ID0gdGhpc09iai0+Z2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggMGQ2ZDk4ZmI0YWM0NDMzMmMy
OTZiMTdjZWRlMTA4YzlhMDZlNjNjNi4uNDMxODRlNTZkY2FhZWQ1ZTU0YTNkYWFhMzE2NWU3YmM0
NWY5YTAzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTMxMiw5
ICszMTIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0
ZXMoKSAmIEZ1bmN0aW9uKSB7IC8vIGZ1bmN0aW9uOiBwdXQgYXMgb3ZlcnJpZGUgcHJvcGVydHkK
ICAgICAgICAgICAgIGlmIChMSUtFTFkodmFsdWUuaXNDZWxsKCkpKQotICAgICAgICAgICAgICAg
IHRoaXNPYmotPnB1dERpcmVjdEZ1bmN0aW9uKHByb3BlcnR5TmFtZSwgdmFsdWUuYXNDZWxsKCkp
OworICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgdmFsdWUp
OworICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKCEoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIFJlYWRPbmx5KSkKICAgICAgICAgICAgIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigp
KGV4ZWMsIHRoaXNPYmosIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFya1N0YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXJrU3RhY2suaAppbmRleCBjM2NiNGYyZDcyYTg0ZGZkNjU1ZGNjOThiZTU0YTc2NWVlNTg4OWU1
Li4wYjc5NDFlOTY4ZTQyMDMxMjQ0MzkyM2M3YjVlYTA0YjgxYmVmMzRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmlu
ZSBNYXJrU3RhY2tfaAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIldyaXRlQmFy
cmllci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0b3IuaD4KQEAgLTQ5LDE3ICs1MCwyMyBAQCBu
YW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgICAgICB7CiAgICAgICAgIH0KLQotICAgICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKEpTVmFsdWUpOwotICAgICAgICB2b2lkIGFwcGVuZChK
U0NlbGwqKTsKICAgICAgICAgCi0gICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmRWYWx1
ZXMoUmVnaXN0ZXIqIHZhbHVlcywgc2l6ZV90IGNvdW50LCBNYXJrU2V0UHJvcGVydGllcyBwcm9w
ZXJ0aWVzID0gTm9OdWxsVmFsdWVzKQorICAgICAgICB2b2lkIGRlcHJlY2F0ZWRBcHBlbmQoSlNW
YWx1ZSopOworICAgICAgICB2b2lkIGRlcHJlY2F0ZWRBcHBlbmQoSlNDZWxsKiopOworICAgICAg
ICB2b2lkIGRlcHJlY2F0ZWRBcHBlbmQoUmVnaXN0ZXIqKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHZvaWQgYXBwZW5kKFdyaXRlQmFycmllckJhc2U8VD4qKTsKKyAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYXBwZW5kKERlcHJlY2F0ZWRQdHI8VD4qKTsKKyAgICAg
ICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkZXByZWNhdGVkQXBwZW5kVmFsdWVzKFJl
Z2lzdGVyKiByZWdpc3RlcnMsIHNpemVfdCBjb3VudCwgTWFya1NldFByb3BlcnRpZXMgcHJvcGVy
dGllcyA9IE5vTnVsbFZhbHVlcykKICAgICAgICAgewotICAgICAgICAgICAgYXBwZW5kVmFsdWVz
KHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHZhbHVlcyksIGNvdW50LCBwcm9wZXJ0aWVzKTsK
KyAgICAgICAgICAgIEpTVmFsdWUqIHZhbHVlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+
KHJlZ2lzdGVycyk7CisgICAgICAgICAgICBpZiAoY291bnQpCisgICAgICAgICAgICAgICAgbV9t
YXJrU2V0cy5hcHBlbmQoTWFya1NldCh2YWx1ZXMsIHZhbHVlcyArIGNvdW50LCBwcm9wZXJ0aWVz
KSk7CiAgICAgICAgIH0KIAotICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kVmFsdWVz
KEpTVmFsdWUqIHZhbHVlcywgc2l6ZV90IGNvdW50LCBNYXJrU2V0UHJvcGVydGllcyBwcm9wZXJ0
aWVzID0gTm9OdWxsVmFsdWVzKQorICAgICAgICB2b2lkIGFwcGVuZFZhbHVlcyhXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+KiBiYXJyaWVycywgc2l6ZV90IGNvdW50LCBNYXJrU2V0UHJvcGVydGll
cyBwcm9wZXJ0aWVzID0gTm9OdWxsVmFsdWVzKQogICAgICAgICB7CisgICAgICAgICAgICBKU1Zh
bHVlKiB2YWx1ZXMgPSBiYXJyaWVycy0+c2xvdCgpOwogICAgICAgICAgICAgaWYgKGNvdW50KQog
ICAgICAgICAgICAgICAgIG1fbWFya1NldHMuYXBwZW5kKE1hcmtTZXQodmFsdWVzLCB2YWx1ZXMg
KyBjb3VudCwgcHJvcGVydGllcykpOwogICAgICAgICB9CkBAIC03NCw2ICs4MSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICB2b2lkIGludGVy
bmFsQXBwZW5kKEpTQ2VsbCopOworICAgICAgICB2b2lkIGludGVybmFsQXBwZW5kKEpTVmFsdWUp
OwogICAgICAgICB2b2lkIG1hcmtDaGlsZHJlbihKU0NlbGwqKTsKIAogICAgICAgICBzdHJ1Y3Qg
TWFya1NldCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3Bw
CmluZGV4IDA4MGQ3ZDIxZTkxNGU0MjhhMzUwYzg0MTIwM2ZjNGExOTg2ZTljMDguLmM3OTMxNmJl
YTZjOTUwNzEwNTliZjZhYzZhYWY5MjdkNTZjNjMzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCkBAIC04OSwxNCArODksMTQgQEAgY29uc3QgQ2xh
c3NJbmZvIE1hdGhPYmplY3Q6OmluZm8gPSB7ICJNYXRoIiwgMCwgMCwgRXhlY1N0YXRlOjptYXRo
VGFibGUgfTsKIE1hdGhPYmplY3Q6Ok1hdGhPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVj
dHVyZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSkKIHsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMs
ICJFIiksIGpzTnVtYmVyKGV4cCgxLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9u
bHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkxO
MiIpLCBqc051bWJlcihsb2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5
KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJMTjEw
IiksIGpzTnVtYmVyKGxvZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5
KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJMT0cy
RSIpLCBqc051bWJlcigxLjAgLyBsb2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJl
YWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMs
ICJMT0cxMEUiKSwganNOdW1iZXIoMS4wIC8gbG9nKDEwLjApKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZp
ZXIoZXhlYywgIlBJIiksIGpzTnVtYmVyKHBpRG91YmxlKSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIo
ZXhlYywgIlNRUlQxXzIiKSwganNOdW1iZXIoc3FydCgwLjUpKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZp
ZXIoZXhlYywgIlNRUlQyIiksIGpzTnVtYmVyKHNxcnQoMi4wKSksIERvbnREZWxldGUgfCBEb250
RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkUiKSwganNOdW1iZXIoZXhwKDEuMCkpLCBE
b250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJMTjIiKSwganNO
dW1iZXIobG9nKDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJMTjEwIiksIGpzTnVtYmVyKGxvZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51
bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkxPRzJFIiksIGpzTnVtYmVyKDEuMCAvIGxvZygy
LjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiTE9H
MTBFIiksIGpzTnVtYmVyKDEuMCAvIGxvZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8
IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIElkZW50aWZpZXIoZXhlYywgIlBJIiksIGpzTnVtYmVyKHBpRG91YmxlKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiU1FSVDFfMiIpLCBqc051
bWJlcihzcXJ0KDAuNSkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJTUVJUMiIpLCBqc051bWJlcihzcXJ0KDIuMCkpLCBEb250RGVsZXRlIHwgRG9udEVu
dW0gfCBSZWFkT25seSk7CiB9CiAKIC8vIEVDTUEgMTUuOApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBl
YjUwOGViZDNhODhhYmVkZDYyZWFmOTQzYmYxN2VlNDJhZTAwZDE0Li40MjFlZWNmZDBkYmRjNzlm
Y2UyZWIwNDA1NWJkODQxODEzOWUwMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMzcsOCArMzcs
OCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqCiB7CiAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUq
IHByb3RvdHlwZSA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlLCB0aGlzKTsKIAotICAg
IHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQotICAgIHB1
dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgIHB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUs
IHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIG1fZXJy
b3JTdHJ1Y3R1cmUgPSBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUocHJvdG90eXBlKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JQcm90b3R5cGUuY3BwCmluZGV4IDU0MDIyMGE2MjJjNmI3ZjZkNDRkMmI2YjZlZmRhOWI0YTQ3
OTUyZGEuLjRlMTAyNjhlZWIyZmUwZTZiNzUwZTBhZGQxNDZmN2NkNzI2ZGJlYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlw
ZS5jcHAKQEAgLTM0LDkgKzM0LDkgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOYXRpdmVF
cnJvclByb3RvdHlwZSk7CiBOYXRpdmVFcnJvclByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5
cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1l
c3NhZ2UsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQogICAgIDogSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewotICAgIHB1dERp
cmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1l
c3NhZ2UpLCAwKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2Us
IGpzU3RyaW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwgMCk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFt
ZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCAwKTsKKyAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubWVzc2FnZSwganNTdHJpbmco
ZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCAwKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250
RW51bSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IDUzNjljYTBjZmRkMmFi
MDRiNDA2MDc2OWMyMjJmMjE2YmYzOGE3MTguLjIzOGRjOTNjMzY2M2U1MzZhOTJiNmY4NDFiNzcz
YWUwNjhkOWMxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTU4LDEwICs1OCwxMCBAQCBOdW1iZXJDb25zdHJ1Y3Rv
cjo6TnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBudW1iZXJQcm90b3R5cGUtPmlu
Zm8uY2xhc3NOYW1lKSkKIHsKICAgICAvLyBOdW1iZXIuUHJvdG90eXBlCi0gICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgbnVtYmVy
UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCBudW1iZXJQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKIAogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCi0g
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9u
dERlbGV0ZSk7CiB9CiAKIGJvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhOdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
CiB7CiAgICAgTnVtYmVyT2JqZWN0KiBvYmplY3QgPSBuZXcgKGV4ZWMpIE51bWJlck9iamVjdChl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm51bWJlck9iamVjdFN0cnVjdHVyZSgpKTsKICAg
ICBkb3VibGUgbiA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IGV4ZWMtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGV4ZWMpIDogMDsKLSAgICBvYmplY3QtPnNldEludGVybmFsVmFsdWUoanNOdW1iZXIo
bikpOworICAgIG9iamVjdC0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpz
TnVtYmVyKG4pKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuY3BwCmluZGV4IDFh
N2U0NGNjZWRmZDkyNWViMWE1OTQxYTkzZDE3NzVlMjFkMmYyYzkuLjU2OWRiZWRiNjY5ODA4MTM2
YzUwNWM2NjIwMDNjMjE3YTRhOGU0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyT2JqZWN0LmNwcApAQCAtNDQsNyArNDQsNyBAQCBKU1ZhbHVlIE51bWJlck9i
amVjdDo6Z2V0SlNOdW1iZXIoKQogTnVtYmVyT2JqZWN0KiBjb25zdHJ1Y3ROdW1iZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIG51bWJlcikKIHsKICAgICBOdW1iZXJPYmplY3QqIG9iamVjdCA9
IG5ldyAoZXhlYykgTnVtYmVyT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bnVt
YmVyT2JqZWN0U3RydWN0dXJlKCkpOwotICAgIG9iamVjdC0+c2V0SW50ZXJuYWxWYWx1ZShudW1i
ZXIpOworICAgIG9iamVjdC0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIG51
bWJlcik7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggMGI4NmMwMDRhYTBhMDZlODM0
Mjk0ZGE2NmZkZmM3ZmNmZDU3YWI3ZS4uMzU1MDg5NDcwOWQyOGI3ODA0ODllNWEwNzJjNWU5Mjlm
NjkyYzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQ
cm90b3R5cGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKEV4ZWNTdGF0ZSopOwogTnVtYmVy
UHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
U3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSkKICAgICA6IE51bWJlck9iamVj
dChzdHJ1Y3R1cmUpCiB7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShqc051bWJlcigwKSk7CisgICAg
c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVtYmVyKDApKTsKIAogICAg
IC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBOdW1iZXJDb25z
dHJ1Y3RvciBoYXMgYmVlbiBjb25zdHJ1Y3RlZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggY2EzZGNkN2MyZDUzOTNj
YTg4ZTE1ZDQxYjljM2RlNGRkYzdmMjJlZS4uZjMxZGE2N2U1ZjE3ZDc1NzJmOWM1MjhlMjIxMzdm
YjRmYjkyMjI2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcApAQCAtNDcsMTAgKzQ3LDEwIEBAIE9iamVjdENvbnN0cnVjdG9y
OjpPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplCiA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIpKQogewogICAgIC8vIEVD
TUEgMTUuMi4zLjEKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIG9iamVjdFByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIAogICAgIC8vIG5vLiBv
ZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVy
KDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiAgICAgCiAgICAgcHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0
aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJl
LCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHJvdG90eXBlT2YsIG9iamVjdENvbnN0cnVj
dG9yR2V0UHJvdG90eXBlT2YpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVj
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAyLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5RGVzY3JpcHRvciksIERvbnRFbnVtKTsKQEAgLTExNywxNSArMTE3LDE1IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlCiAKICAgICBKU09iamVjdCogZGVzY3JpcHRpb24gPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKICAgICBpZiAoIWRlc2NyaXB0b3IuaXNBY2Nlc3Nv
ckRlc2NyaXB0b3IoKSkgewotICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS52YWx1ZSwgZGVzY3JpcHRvci52YWx1ZSgpID8gZGVzY3JpcHRvci52YWx1
ZSgpIDoganNVbmRlZmluZWQoKSwgMCk7Ci0gICAgICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3Qo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRvci53cml0
YWJsZSgpKSwgMCk7CisgICAgICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWUsIGRlc2NyaXB0b3IudmFsdWUoKSA/
IGRlc2NyaXB0b3IudmFsdWUoKSA6IGpzVW5kZWZpbmVkKCksIDApOworICAgICAgICBkZXNjcmlw
dGlvbi0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LndyaXRhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRvci53cml0YWJsZSgpKSwgMCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuZ2V0LCBkZXNjcmlwdG9yLmdldHRlcigpID8gZGVzY3JpcHRvci5nZXR0ZXIoKSA6IGpzVW5k
ZWZpbmVkKCksIDApOwotICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5zZXQsIGRlc2NyaXB0b3Iuc2V0dGVyKCkgPyBkZXNjcmlwdG9yLnNldHRlcigp
IDoganNVbmRlZmluZWQoKSwgMCk7CisgICAgICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0LCBkZXNjcmlwdG9yLmdl
dHRlcigpID8gZGVzY3JpcHRvci5nZXR0ZXIoKSA6IGpzVW5kZWZpbmVkKCksIDApOworICAgICAg
ICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnNldCwgZGVzY3JpcHRvci5zZXR0ZXIoKSA/IGRlc2NyaXB0b3Iuc2V0dGVyKCkg
OiBqc1VuZGVmaW5lZCgpLCAwKTsKICAgICB9CiAgICAgCi0gICAgZGVzY3JpcHRpb24tPnB1dERp
cmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSwganNCb29sZWFuKGRlc2NyaXB0
b3IuZW51bWVyYWJsZSgpKSwgMCk7Ci0gICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uZmlndXJhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRvci5jb25maWd1
cmFibGUoKSksIDApOworICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSwganNCb29sZWFuKGRlc2NyaXB0
b3IuZW51bWVyYWJsZSgpKSwgMCk7CisgICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUsIGpzQm9vbGVh
bihkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSwgMCk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGRlc2NyaXB0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaAppbmRleCAxMjUyMzQ1MzcxNDE1MDJhNWJmMzY1YzcxNzhkMWU3OWI0YWIwMjcy
Li42ZTg0MTIzOWFlZDc2NzY5ZDE4N2Q3NDMxOWFmYmI2YWYxN2Y5ZGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC00MjksNyArNDI5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90
b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAgICAgLy8g
c2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KICAgICAgICAgICAgIGlmIChj
ZWxsLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAgICAgICBhc09i
amVjdChjZWxsKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoKTsKKyAgICAgICAgICAgICAgICBh
c09iamVjdChjZWxsKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCkpOwogICAgICAgICAgICAgICAgIGlmIChzbG90QmFzZSA9PSBjZWxsKQogICAgICAgICAg
ICAgICAgICAgICBzbG90T2Zmc2V0ID0gY2VsbC0+c3RydWN0dXJlKCktPmdldChwcm9wZXJ0eU5h
bWUpOyAKICAgICAgICAgICAgIH0KQEAgLTQ1NCw3ICs0NTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxv
b3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAgICAgICAgICAgICAvLyBzaG91bGQgbm90IGJl
IHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICAgICAgaWYgKGJhc2UtPnN0cnVjdHVy
ZSgpLT5pc0RpY3Rpb25hcnkoKSkKLSAgICAgICAgICAgICAgICBhc09iamVjdChiYXNlKS0+Zmxh
dHRlbkRpY3Rpb25hcnlPYmplY3QoKTsKKyAgICAgICAgICAgICAgICBhc09iamVjdChiYXNlKS0+
ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwogCiAgICAg
ICAgICAgICArK2NvdW50OwogICAgICAgICB9CkBAIC00NzEsNyArNDcxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdCogYmFz
ZTsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGJhc2UgPSAqaXRlcjsKKyAg
ICAgICAgICAgIGJhc2UgPSBpdGVyLT5nZXQoKTsKICAgICAgICAgICAgIGlmIChuZXh0ID09IGVu
ZCkKICAgICAgICAgICAgICAgICByZXR1cm4gaXNTdHJpY3RQdXQgPyBKU1ZhbHVlKCkgOiBiYXNl
OwogICAgICAgICAgICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIHByb3Bl
cnR5LCBzbG90KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3RvdHlwZUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Rv
dHlwZUZ1bmN0aW9uLmNwcAppbmRleCAzNTI5MDgwNWNjOTE2MjE5YTAyYThkY2I0MmYzZmQ1ZTI4
ZWZmNWYwLi45NWUxMDMzODQ4MWVkMDUxZDVmNzI4MmNhNzhhMDVhMDNhOWUzMGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3Bw
CkBAIC0zNyw3ICszNyw3IEBAIFByb3RvdHlwZUZ1bmN0aW9uOjpQcm90b3R5cGVGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgLCBtX2Z1bmN0
aW9uKGZ1bmN0aW9uKQogewogICAgIEFTU0VSVF9BUkcoZnVuY3Rpb24sIGZ1bmN0aW9uKTsKLSAg
ICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3Ro
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxl
bmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAogUHJvdG90eXBl
RnVuY3Rpb246OlByb3RvdHlwZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5cGVG
dW5jdGlvblN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24pCkBAIC00NSw3ICs0NSw3IEBAIFByb3RvdHlwZUZ1bmN0aW9u
OjpQcm90b3R5cGVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplCiAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogewogICAgIEFTU0VSVF9BUkcoZnVu
Y3Rpb24sIGZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKIH0KICAgICAKIENhbGxUeXBlIFByb3RvdHlwZUZ1bmN0aW9uOjpnZXRDYWxsRGF0YShD
YWxsRGF0YSYgY2FsbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9QdXRQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1
dFByb3BlcnR5U2xvdC5oCmluZGV4IDRiMGIzOTQ4ZmJiMjlmMDgyYTMxNjIxZDY2NWQzNWMzZGMy
NmY3MTcuLjRjOWUwZTYyZmNlZThhMTA5MzE0NWE1ZDZlYmM0NDEyZDY5MTY5NjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCkBAIC00NSwx
NCArNDUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNl
dCkKKyAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1Byb3BlcnR5KERlcHJlY2F0ZWRQdHI8SlNPYmpl
Y3Q+IGJhc2UsIHNpemVfdCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdHlwZSA9
IEV4aXN0aW5nUHJvcGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNlOwogICAgICAgICAg
ICAgbV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldE5ld1By
b3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldE5l
d1Byb3BlcnR5KERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IGJhc2UsIHNpemVfdCBvZmZzZXQpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG1fdHlwZSA9IE5ld1Byb3BlcnR5OwogICAgICAgICAgICAg
bV9iYXNlID0gYmFzZTsKQEAgLTYwLDcgKzYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IH0KIAogICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAg
ICAgSlNPYmplY3QqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KKyAgICAgICAgSlNP
YmplY3QqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2UuZ2V0KCk7IH0KIAogICAgICAgICBi
b29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAg
ICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJs
ZTsgfQpAQCAtNzAsNyArNzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgIHBy
aXZhdGU6CiAgICAgICAgIFR5cGUgbV90eXBlOwotICAgICAgICBKU09iamVjdCogbV9iYXNlOwor
ICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0PiBtX2Jhc2U7CiAgICAgICAgIHNpemVfdCBt
X29mZnNldDsKICAgICAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4
IDMwZDNlYWI1M2E2NGFkNzI3MzEzOTIwNDM1NjNiZThkNWIzMTNlMDAuLjFiMzA1MTQ5ZmQ0YmMw
ODJjNDlmYTI3MDhkZTQ3M2JlOTZkMWUyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTEwMCwxMCArMTAwLDEwIEBA
IFJlZ0V4cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgLCBkKGFkb3B0UHRyKG5ldyBSZWdFeHBDb25z
dHJ1Y3RvclByaXZhdGUpKQogewogICAgIC8vIEVDTUEgMTUuMTAuNS4xIFJlZ0V4cC5wcm90b3R5
cGUKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCByZWdFeHBQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHJlZ0V4cFByb3RvdHlwZSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBm
b3IgY29uc3RydWN0b3IKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigyKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5
IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKIH0KIAogUmVnRXhwTWF0Y2hlc0FycmF5OjpSZWdF
eHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUq
IGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCmlu
ZGV4IDU0YzUwODJjNWU0Y2JkY2JlYjFiYjdmNDZhNThiOTlmN2VlYWQ2ZmYuLjk3NmNmZjY0YjQ5
OWNlYjA5YWZjMWIyYTI4NzEzODY3NjQxYmMxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgdm9pZCBTY29wZUNo
YWluTm9kZTo6cHJpbnQoKSBjb25zdAogewogICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBzY29wZUVu
ZCA9IGVuZCgpOwogICAgIGZvciAoU2NvcGVDaGFpbkl0ZXJhdG9yIHNjb3BlSXRlciA9IGJlZ2lu
KCk7IHNjb3BlSXRlciAhPSBzY29wZUVuZDsgKytzY29wZUl0ZXIpIHsKLSAgICAgICAgSlNPYmpl
Y3QqIG8gPSAqc2NvcGVJdGVyOworICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0PiBvID0g
KnNjb3BlSXRlcjsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7CiAgICAgICAgIG8tPmdldFByb3BlcnR5TmFtZXMoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZXMpOwogICAgICAgICBQcm9wZXJ0
eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgcHJvcEVuZCA9IHByb3BlcnR5TmFtZXMuZW5kKCk7
CiAKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLSBbc2NvcGUgJXBdIC0tLS0tXG4iLCBv
KTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLSBbc2NvcGUgJXBdIC0tLS0tXG4iLCBv
LmdldCgpKTsKICAgICAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3Ig
cHJvcEl0ZXIgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IHByb3BJdGVyICE9IHByb3BFbmQ7IHBy
b3BJdGVyKyspIHsKICAgICAgICAgICAgIElkZW50aWZpZXIgbmFtZSA9ICpwcm9wSXRlcjsKICAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMsICIsIG5hbWUudXN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVD
aGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCmluZGV4
IGIxMDRlNzUzYzIzZmNiMzZiNzI0MGY5MmViNzkyNmY0M2NhNDJhNjMuLjExZjM2OTI4NTkwMWY4
OGFlYmE0OTA2YjlhZjQzYWFiZTE4YzU5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZUNoYWluLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgU2NvcGVDaGFpbl9o
CiAjZGVmaW5lIFNjb3BlQ2hhaW5faAogCisjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5j
bHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01Miw3ICs1
Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB+U2NvcGVDaGFpbk5vZGUoKQogICAgICAg
ICB7CiAgICAgICAgICAgICBuZXh0ID0gMDsKLSAgICAgICAgICAgIG9iamVjdCA9IDA7CiAgICAg
ICAgICAgICBnbG9iYWxEYXRhID0gMDsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IDA7CiAg
ICAgICAgICAgICBnbG9iYWxUaGlzID0gMDsKQEAgLTYwLDcgKzYwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjZW5kaWYKIAogICAgICAgICBTY29wZUNoYWluTm9kZSogbmV4dDsKLSAgICAgICAgSlNP
YmplY3QqIG9iamVjdDsKKyAgICAgICAgRGVwcmVjYXRlZFB0cjxKU09iamVjdD4gb2JqZWN0Owog
ICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGE7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3Q7CiAgICAgICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzOwpAQCAtMTMxLDgg
KzEzMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBKU09iamVjdCogY29uc3QgJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX25vZGUtPm9i
amVjdDsgfQotICAgICAgICBKU09iamVjdCogY29uc3QgKiBvcGVyYXRvci0+KCkgY29uc3QgeyBy
ZXR1cm4gJihvcGVyYXRvciooKSk7IH0KKyAgICAgICAgRGVwcmVjYXRlZFB0cjxKU09iamVjdD4g
Y29uc3QgJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX25vZGUtPm9iamVjdDsgfQorICAg
ICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0PiBjb25zdCAqIG9wZXJhdG9yLT4oKSBjb25zdCB7
IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQogICAgIAogICAgICAgICBTY29wZUNoYWluSXRlcmF0
b3ImIG9wZXJhdG9yKysoKSB7IG1fbm9kZSA9IG1fbm9kZS0+bmV4dDsgcmV0dXJuICp0aGlzOyB9
CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBTY29wZUNo
YWluTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQogCi0gICAgICAgIEpTT2Jq
ZWN0KiB0b3AoKSBjb25zdCB7IHJldHVybiBtX25vZGUtPm9iamVjdDsgfQorICAgICAgICBKU09i
amVjdCogdG9wKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5vYmplY3QuZ2V0KCk7IH0KIAogICAg
ICAgICBTY29wZUNoYWluSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX25vZGUtPmJl
Z2luKCk7IH0KICAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbm9kZS0+ZW5kKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlQ2hhaW5NYXJrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29w
ZUNoYWluTWFyay5oCmluZGV4IDk4NGQxMDEzNjhhOWJjOWNhMDc4ZGEyN2FjY2IwMmY3NWExZGVl
ZDYuLmZhYTQ4MjRjZGZjY2Y3ZjIyNGRhYjYwYzMwYjQxMzRmYzNkNmY4ZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW5NYXJrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbk1hcmsuaApAQCAtMjgsNyArMjgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBTY29wZUNoYWluOjptYXJrQWdn
cmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKSBjb25zdAogICAgIHsKICAgICAgICAgZm9yIChT
Y29wZUNoYWluTm9kZSogbiA9IG1fbm9kZTsgbjsgbiA9IG4tPm5leHQpCi0gICAgICAgICAgICBt
YXJrU3RhY2suYXBwZW5kKG4tPm9iamVjdCk7CisgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5k
KCZuLT5vYmplY3QpOwogICAgIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAppbmRleCA1NjE0OTMyZmZlMDBl
ZjliZmI2OTJmYTRjNzJlYzMxYmU0ZGJkZjExLi5jNjNhMjBkYTEwYjFkMDk0NzYxOTE4YjYyMmUy
YWQ0YzE0MWQ2ODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
bWFsbFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxs
U3RyaW5ncy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzVG9TdG9yZSA9IDB4MTAwOwogCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaXNNYXJrZWQoSlNTdHJpbmcqIHN0cmluZykKK3N0YXRpYyBpbmxpbmUgYm9vbCBp
c01hcmtlZChKU0NlbGwqIHN0cmluZykKIHsKICAgICByZXR1cm4gc3RyaW5nICYmIEhlYXA6Omlz
Q2VsbE1hcmtlZChzdHJpbmcpOwogfQpAQCAtODMsOSArODMsOSBAQCB2b2lkIFNtYWxsU3RyaW5n
czo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgICAgIHNvLCBpdCdzIHBy
b2JhYmx5IHJlYXNvbmFibGUgdG8gbWFyayB0aGUgcmVzdC4gSWYgbm90LCB3ZSBjbGVhciB0aGUg
Y2FjaGUuCiAgICAgICovCiAKLSAgICBib29sIGlzQW55U3RyaW5nTWFya2VkID0gaXNNYXJrZWQo
bV9lbXB0eVN0cmluZyk7CisgICAgYm9vbCBpc0FueVN0cmluZ01hcmtlZCA9IGlzTWFya2VkKG1f
ZW1wdHlTdHJpbmcuZ2V0KCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1DaGFy
YWN0ZXJzVG9TdG9yZSAmJiAhaXNBbnlTdHJpbmdNYXJrZWQ7ICsraSkKLSAgICAgICAgaXNBbnlT
dHJpbmdNYXJrZWQgPSBpc01hcmtlZChtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbaV0pOworICAg
ICAgICBpc0FueVN0cmluZ01hcmtlZCA9IGlzTWFya2VkKG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
c1tpXS5nZXQoKSk7CiAgICAgCiAgICAgaWYgKCFpc0FueVN0cmluZ01hcmtlZCkgewogICAgICAg
ICBjbGVhcigpOwpAQCAtOTMsMTAgKzkzLDEwIEBAIHZvaWQgU21hbGxTdHJpbmdzOjptYXJrQ2hp
bGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgfQogICAgIAogICAgIGlmIChtX2VtcHR5
U3RyaW5nKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1fZW1wdHlTdHJpbmcpOworICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKCZtX2VtcHR5U3RyaW5nKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtQ2hhcmFjdGVyc1RvU3RvcmU7ICsraSkgewogICAgICAgICBpZiAobV9zaW5n
bGVDaGFyYWN0ZXJTdHJpbmdzW2ldKQotICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX3Np
bmdsZUNoYXJhY3RlclN0cmluZ3NbaV0pOworICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgm
bV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2ldKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKaW5kZXggYWM4NGZlODg3MzU1MTY5OGNl
Njk4OTMxM2I2ZWUxN2YxODhiNjQyMy4uZWU3OTViNjIyMzgxNTQ4NGZjYmFmY2MxYmNmZDZjOWQ3
MDQ4NTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxT
dHJpbmdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdz
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgU21hbGxTdHJpbmdzX2gKIAogI2luY2x1ZGUg
IlVTdHJpbmcuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvRml4
ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNDcsMTMgKzQ4LDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZW1wdHlTdHJp
bmcpCiAgICAgICAgICAgICAgICAgY3JlYXRlRW1wdHlTdHJpbmcoZ2xvYmFsRGF0YSk7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9lbXB0eVN0cmluZzsKKyAgICAgICAgICAgIHJldHVybiBtX2VtcHR5
U3RyaW5nLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIEpTU3RyaW5nKiBzaW5nbGVDaGFyYWN0
ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBjaGFyIGNoYXJhY3Rl
cikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3Nb
Y2hhcmFjdGVyXSkKICAgICAgICAgICAgICAgICBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmco
Z2xvYmFsRGF0YSwgY2hhcmFjdGVyKTsKLSAgICAgICAgICAgIHJldHVybiBtX3NpbmdsZUNoYXJh
Y3RlclN0cmluZ3NbY2hhcmFjdGVyXTsKKyAgICAgICAgICAgIHJldHVybiBtX3NpbmdsZUNoYXJh
Y3RlclN0cmluZ3NbY2hhcmFjdGVyXS5nZXQoKTsKICAgICAgICAgfQogCiAgICAgICAgIFN0cmlu
Z0ltcGwqIHNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7
CkBAIC02MywxNCArNjQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdW5zaWduZWQg
Y291bnQoKSBjb25zdDsKICNpZiBFTkFCTEUoSklUKQotICAgICAgICBKU1N0cmluZyoqIHNpbmds
ZUNoYXJhY3RlclN0cmluZ3MoKSB7IHJldHVybiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3MuZGF0
YSgpOyB9CisgICAgICAgIEpTQ2VsbCoqIHNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSB7IHJldHVy
biBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbMF0uc2xvdCgpOyB9CiAjZW5kaWYKICAgICBwcml2
YXRlOgogICAgICAgICB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOwogICAg
ICAgICB2b2lkIGNyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEqLCB1bnNp
Z25lZCBjaGFyKTsKIAotICAgICAgICBKU1N0cmluZyogbV9lbXB0eVN0cmluZzsKLSAgICAgICAg
Rml4ZWRBcnJheTxKU1N0cmluZyosIDB4MTAwPiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3M7Cisg
ICAgICAgIERlcHJlY2F0ZWRQdHI8SlNTdHJpbmc+IG1fZW1wdHlTdHJpbmc7CisgICAgICAgIEZp
eGVkQXJyYXk8RGVwcmVjYXRlZFB0cjxKU1N0cmluZz4sIDB4MTAwPiBtX3NpbmdsZUNoYXJhY3Rl
clN0cmluZ3M7CiAgICAgICAgIE93blB0cjxTbWFsbFN0cmluZ3NTdG9yYWdlPiBtX3N0b3JhZ2U7
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCmluZGV4IDEwMTY1MGMzYzIxYjVkYjI4MmFkMDg2N2Q2MzNmNDc1Yjk4
OTFmNDEuLjYwNDQ3M2JkYzI4MzgyNWU2NjgwNWY0MWRiOWRhNjAzOGIxM2U0ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgU3RyaW5nQ29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICA6IEludGVybmFs
RnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElk
ZW50aWZpZXIoZXhlYywgc3RyaW5nUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkK
IHsKICAgICAvLyBFQ01BIDE1LjUuMy4xIFN0cmluZy5wcm90b3R5cGUKLSAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzdHJpbmdQ
cm90b3R5cGUsIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIHN0cmluZ1Byb3RvdHlwZSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERv
bnREZWxldGUpOwogCiAgICAgLy8gRUNNQSAxNS41LjMuMiBmcm9tQ2hhckNvZGUoKQogI2lmIEVO
QUJMRShKSVQpICYmIEVOQUJMRShKSVRfT1BUSU1JWkVfTkFUSVZFX0NBTEwpCkBAIC02Miw3ICs2
Miw3IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVj
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZnJvbUNoYXJDb2RlLCBzdHJpbmdGcm9tQ2hhckNvZGUpLCBEb250RW51bSk7
CiAjZW5kaWYKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgotICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxl
dGUpOwogfQogCiAvLyBFQ01BIDE1LjUuMgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggZGMyNzYxODgxYTQ2MWI0YzUwYWRkNzU0Y2JmYjE2
NmFhZTI5MGJkMy4uNjNlNDE0NDU2MzFkNTQxODIzZGQ1NThhYTI4MTEzOWI2YjM0NDkwZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0z
MiwxOSArMzIsMTkgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ09iamVjdDo6aW5mbyA9IHsgIlN0
cmluZyIsIDAsIDAsIDAgfTsKIFN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiAgICAgOiBKU1dy
YXBwZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAgIHNldEludGVybmFsVmFsdWUoanNFbXB0eVN0
cmluZyhleGVjKSk7CisgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpz
RW1wdHlTdHJpbmcoZXhlYykpOwogfQogCi1TdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNTdHJpbmcqIHN0cmluZykKK1N0
cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCiAgICAg
OiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAgIHNldEludGVybmFsVmFsdWUoc3Ry
aW5nKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVlKGdsb2JhbERhdGEsIHN0cmluZyk7CiB9CiAKIFN0
cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cmluZykKICAgICA6IEpT
V3JhcHBlck9iamVjdChzdHJ1Y3R1cmUpCiB7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShqc1N0cmlu
ZyhleGVjLCBzdHJpbmcpKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEo
KSwganNTdHJpbmcoZXhlYywgc3RyaW5nKSk7CiB9CiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggZTNhZGQ3N2I5MmJiZmY1ODQzMTg2YjQ2ZGVjNGVkNWNl
ZGMwNzczOC4uMDM0ODhmNTcxZTcwNzUzNzlkZjhkZWYzODViY2I3NTAwNGU5ZDA1MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKQEAgLTUzLDcgKzUz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBK
U1dyYXBwZXJPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBTdHJpbmdPYmplY3QoTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlNTdHJpbmcqKTsKKyAgICAgICAgU3RyaW5nT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEpTU3RyaW5n
Kik7CiAgIH07CiAKICAgICBTdHJpbmdPYmplY3QqIGFzU3RyaW5nT2JqZWN0KEpTVmFsdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
aW5kZXggOGIzZDA1NmM4ZWFhYzg2YmJiNDNkZjQxOWRmNTkzNGQ1OGFkNmQ0Yy4uNmNmMDc5MjE5
Yjk3MjY3OTM0NjNhNGIzNmMwM2ZkNDIyZmRlNDlmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAg
U3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIHB1dEFub255bW91c1ZhbHVlKDAsIGdsb2Jh
bE9iamVjdCk7CiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIsIGFm
dGVyIFN0cmluZ0NvbnN0cnVjdG9yIGhhcyBiZWVuIGJ1aWx0Ci0gICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgs
IGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIGJv
b2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDAxNzllZWRiMGM0
OWNlMTdkN2FjYTU5YzY5NGZkOWI1Yjk5ZWJlZGYuLmU4ZjVkN2E5OTc5MTBkNmJmY2E5NzI5MWQ3
Y2E0OTI4NGU0ZWI3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTVmFsdWUg
cHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIHVuc2lnbmVkIGFub255CiAgICAg
bV90cmFuc2l0aW9ucy5tX3NpbmdsZVRyYW5zaXRpb24gPSAwOwogCiAgICAgQVNTRVJUKG1fcHJv
dG90eXBlKTsKLSAgICBBU1NFUlQobV9wcm90b3R5cGUuaXNPYmplY3QoKSB8fCBtX3Byb3RvdHlw
ZS5pc051bGwoKSk7CisgICAgQVNTRVJUKG1fcHJvdG90eXBlLT5pc09iamVjdCgpIHx8IG1fcHJv
dG90eXBlLT5pc051bGwoKSk7CiAKICNpZm5kZWYgTkRFQlVHCiAjaWYgRU5BQkxFKEpTQ19NVUxU
SVBMRV9USFJFQURTKQpAQCAtNDc2LDcgKzQ3Niw3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
CiAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICBSZWZQ
dHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZS0+bV9wcm90b3R5cGUs
IHN0cnVjdHVyZS0+dHlwZUluZm8oKSwgc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7
CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUtPm1f
cHJvdG90eXBlLmdldCgpLCBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCksIHN0cnVjdHVyZS0+YW5vbnlt
b3VzU2xvdENvdW50KCkpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQcm90b3R5cGVDaGFp
biA9IHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKICAgICB0cmFuc2l0aW9uLT5t
X3ByZXZpb3VzID0gc3RydWN0dXJlOwpAQCAtNTk1LDcgKzU5NSw3IEBAIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIERpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkpOwogICAgIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUo
c3RydWN0dXJlLT5tX3Byb3RvdHlwZSwgc3RydWN0dXJlLT50eXBlSW5mbygpLCBzdHJ1Y3R1cmUt
PmFub255bW91c1Nsb3RDb3VudCgpKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9u
ID0gY3JlYXRlKHN0cnVjdHVyZS0+bV9wcm90b3R5cGUuZ2V0KCksIHN0cnVjdHVyZS0+dHlwZUlu
Zm8oKSwgc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7CiAgICAgdHJhbnNpdGlvbi0+
bV9kaWN0aW9uYXJ5S2luZCA9IGtpbmQ7CiAgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eTsKICAgICB0
cmFuc2l0aW9uLT5tX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMgPSBzdHJ1Y3R1cmUtPm1faGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllczsKQEAgLTYyMCw3ICs2MjAsNyBAQCBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gU3RydWN0dXJlOjp0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3Ry
dWN0dXJlKiBzdAogICAgIHJldHVybiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSwg
VW5jYWNoZWREaWN0aW9uYXJ5S2luZCk7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1
Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTT2JqZWN0KiBvYmplY3QpCitQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJU
KGlzRGljdGlvbmFyeSgpKTsKICAgICBpZiAoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewpA
QCAtNjUxLDcgKzY1MSw3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZsYXR0
ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIAogICAgICAg
ICAvLyBDb3B5IHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSB2YWx1ZXMgaW50byB0aGVpciBmaW5hbCBs
b2NhdGlvbnMKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7
IGkrKykKLSAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGFub255bW91c1Nsb3RD
b3VudCArIGksIHZhbHVlc1tpXSk7CisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNl
dChnbG9iYWxEYXRhLCBhbm9ueW1vdXNTbG90Q291bnQgKyBpLCB2YWx1ZXNbaV0pOwogCiAgICAg
ICAgIGlmIChtX3Byb3BlcnR5VGFibGUtPmRlbGV0ZWRPZmZzZXRzKSB7CiAgICAgICAgICAgICBk
ZWxldGUgbV9wcm9wZXJ0eVRhYmxlLT5kZWxldGVkT2Zmc2V0czsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZjQ4MDA1MWUwYjg2ODgxNDk2MThiMzcxYWY1
N2NlMThiNzE2YTRjOC4uNzc3MjRhY2ZmMzU0NjYwYzgyNTIyYTdhNTc1MTQ4ZjZlODlmNzg0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTgwLDcgKzgw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5z
aXRpb24oU3RydWN0dXJlKik7CiAKLSAgICAgICAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGZsYXR0
ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTT2JqZWN0Kik7CisgICAgICAgIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVj
dCopOwogCiAgICAgICAgIH5TdHJ1Y3R1cmUoKTsKIApAQCAtOTQsNyArOTQsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8oKSBjb25zdCB7IHJl
dHVybiBtX3R5cGVJbmZvOyB9CiAKLSAgICAgICAgSlNWYWx1ZSBzdG9yZWRQcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX3Byb3RvdHlwZTsgfQorICAgICAgICBKU1ZhbHVlIHN0b3JlZFByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIERlcHJl
Y2F0ZWRQdHI8VW5rbm93bj4qIHN0b3JlZFByb3RvdHlwZVNsb3QoKSB7IHJldHVybiAmbV9wcm90
b3R5cGU7IH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKikg
Y29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUq
KSBjb25zdDsKIApAQCAtMjA2LDcgKzIwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IFR5cGVJbmZvIG1fdHlwZUluZm87CiAKLSAgICAgICAgSlNWYWx1ZSBtX3Byb3RvdHlwZTsKKyAg
ICAgICAgRGVwcmVjYXRlZFB0cjxVbmtub3duPiBtX3Byb3RvdHlwZTsKICAgICAgICAgbXV0YWJs
ZSBSZWZQdHI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CiAKICAgICAg
ICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9wcmV2aW91czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha0dDTWFwLmgKaW5kZXggYzA2M2RkMjc4YTYxZGRkNDQ0ZTZhNTJlYzM5MDEwYjU0
MmNjZDA5ZS4uOTE1YWQwZjZlMjBkNzkxZDhhNzc5MDJlMDg0MTE0NTk3MTE1MjIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTQ2LDIyICs0NiwyOSBA
QCBjbGFzcyBXZWFrR0NNYXAgewogICAgICovCiAKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVu
YW1lIEhhc2hNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAg
IHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6Y29uc3RfaXRl
cmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPEtleVR5
cGUsIERlcHJlY2F0ZWRQdHI8TWFwcGVkVHlwZT4gPjo6aXRlcmF0b3IgaXRlcmF0b3I7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPEtleVR5cGUsIERlcHJlY2F0ZWRQdHI8TWFwcGVkVHlw
ZT4gPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgICAgCiAgICAgYm9vbCBpc0Vt
cHR5KCkgeyByZXR1cm4gbV9tYXAuaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9t
YXAuY2xlYXIoKTsgfQogCi0gICAgTWFwcGVkVHlwZSBnZXQoY29uc3QgS2V5VHlwZSYga2V5KSBj
b25zdDsKLSAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIGNvbnN0
IE1hcHBlZFR5cGUmKTsgCi0gICAgTWFwcGVkVHlwZSB0YWtlKGNvbnN0IEtleVR5cGUmIGtleSk7
CisgICAgTWFwcGVkVHlwZSogZ2V0KGNvbnN0IEtleVR5cGUmKSBjb25zdDsKKyAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFR5cGUqKTsgCisgICAgTWFw
cGVkVHlwZSogdGFrZShjb25zdCBLZXlUeXBlJik7CiAKICAgICAvLyBUaGVzZSB1bmNoZWNrZWQg
ZnVuY3Rpb25zIHByb3ZpZGUgYWNjZXNzIHRvIGEgdmFsdWUgZXZlbiBpZiB0aGUgdmFsdWUncwog
ICAgIC8vIG1hcmsgYml0IGlzIG5vdCBzZXQuIFRoaXMgaXMgdXNlZCwgYW1vbmcgb3RoZXIgdGhp
bmdzLCB0byByZXRyaWV2ZSB2YWx1ZXMKICAgICAvLyBkdXJpbmcgdGhlIEdDIG1hcmsgcGhhc2Us
IHdoaWNoIGJlZ2lucyBieSBjbGVhcmluZyBhbGwgbWFyayBiaXRzLgogCi0gICAgTWFwcGVkVHlw
ZSB1bmNoZWNrZWRHZXQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdCB7IHJldHVybiBtX21hcC5n
ZXQoa2V5KTsgfQotICAgIGJvb2wgdW5jaGVja2VkUmVtb3ZlKGNvbnN0IEtleVR5cGUmLCBjb25z
dCBNYXBwZWRUeXBlJik7CisgICAgTWFwcGVkVHlwZSogdW5jaGVja2VkR2V0KGNvbnN0IEtleVR5
cGUmIGtleSkgY29uc3QgeyByZXR1cm4gbV9tYXAuZ2V0KGtleSkuZ2V0KCk7IH0KKyAgICBEZXBy
ZWNhdGVkUHRyPE1hcHBlZFR5cGU+KiB1bmNoZWNrZWRHZXRTbG90KGNvbnN0IEtleVR5cGUmIGtl
eSkKKyAgICB7CisgICAgICAgIGl0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CisgICAg
ICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiAmaXRlci0+c2Vjb25kOworICAgIH0KKyAgICBib29sIHVuY2hlY2tlZFJlbW92
ZShjb25zdCBLZXlUeXBlJiwgTWFwcGVkVHlwZSopOwogCiAgICAgaXRlcmF0b3IgdW5jaGVja2Vk
QmVnaW4oKSB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgaXRlcmF0b3IgdW5jaGVja2Vk
RW5kKCkgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KQEAgLTY5LDU0ICs3Niw1NCBAQCBwdWJsaWM6
CiAgICAgY29uc3RfaXRlcmF0b3IgdW5jaGVja2VkQmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21h
cC5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgdW5jaGVja2VkRW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXAuZW5kKCk7IH0KIAotICAgIGJvb2wgaXNWYWxpZChpdGVyYXRvciBpdCkgY29u
c3QgeyByZXR1cm4gSGVhcDo6aXNDZWxsTWFya2VkKGl0LT5zZWNvbmQpOyB9Ci0gICAgYm9vbCBp
c1ZhbGlkKGNvbnN0X2l0ZXJhdG9yIGl0KSBjb25zdCB7IHJldHVybiBIZWFwOjppc0NlbGxNYXJr
ZWQoaXQtPnNlY29uZCk7IH0KKyAgICBib29sIGlzVmFsaWQoaXRlcmF0b3IgaXQpIGNvbnN0IHsg
cmV0dXJuIEhlYXA6OmlzQ2VsbE1hcmtlZChpdC0+c2Vjb25kLmdldCgpKTsgfQorICAgIGJvb2wg
aXNWYWxpZChjb25zdF9pdGVyYXRvciBpdCkgY29uc3QgeyByZXR1cm4gSGVhcDo6aXNDZWxsTWFy
a2VkKGl0LT5zZWNvbmQuZ2V0KCkpOyB9CiAKIHByaXZhdGU6Ci0gICAgSGFzaE1hcDxLZXlUeXBl
LCBNYXBwZWRUeXBlPiBtX21hcDsKKyAgICBIYXNoTWFwPEtleVR5cGUsIERlcHJlY2F0ZWRQdHI8
TWFwcGVkVHlwZT4gPiBtX21hcDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIE1hcHBlZFR5cGU+Ci1pbmxpbmUgTWFwcGVkVHlwZSBXZWFrR0NNYXA8S2V5VHlwZSwg
TWFwcGVkVHlwZT46OmdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0CitpbmxpbmUgTWFwcGVk
VHlwZSogV2Vha0dDTWFwPEtleVR5cGUsIE1hcHBlZFR5cGU+OjpnZXQoY29uc3QgS2V5VHlwZSYg
a2V5KSBjb25zdAogewotICAgIE1hcHBlZFR5cGUgcmVzdWx0ID0gbV9tYXAuZ2V0KGtleSk7Ci0g
ICAgaWYgKHJlc3VsdCA9PSBIYXNoVHJhaXRzPE1hcHBlZFR5cGU+OjplbXB0eVZhbHVlKCkpCisg
ICAgTWFwcGVkVHlwZSogcmVzdWx0ID0gbV9tYXAuZ2V0KGtleSkuZ2V0KCk7CisgICAgaWYgKHJl
c3VsdCA9PSBIYXNoVHJhaXRzPE1hcHBlZFR5cGUqPjo6ZW1wdHlWYWx1ZSgpKQogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIGlmICghSGVhcDo6aXNDZWxsTWFya2VkKHJlc3VsdCkpCi0gICAg
ICAgIHJldHVybiBIYXNoVHJhaXRzPE1hcHBlZFR5cGU+OjplbXB0eVZhbHVlKCk7CisgICAgICAg
IHJldHVybiBIYXNoVHJhaXRzPE1hcHBlZFR5cGUqPjo6ZW1wdHlWYWx1ZSgpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBl
ZFR5cGU+Ci1NYXBwZWRUeXBlIFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6dGFrZShj
b25zdCBLZXlUeXBlJiBrZXkpCitNYXBwZWRUeXBlKiBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVk
VHlwZT46OnRha2UoY29uc3QgS2V5VHlwZSYga2V5KQogewotICAgIE1hcHBlZFR5cGUgcmVzdWx0
ID0gbV9tYXAudGFrZShrZXkpOwotICAgIGlmIChyZXN1bHQgPT0gSGFzaFRyYWl0czxNYXBwZWRU
eXBlPjo6ZW1wdHlWYWx1ZSgpKQorICAgIE1hcHBlZFR5cGUqIHJlc3VsdCA9IG1fbWFwLnRha2Uo
a2V5KS5nZXQoKTsKKyAgICBpZiAocmVzdWx0ID09IEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+Ojpl
bXB0eVZhbHVlKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgaWYgKCFIZWFwOjppc0Nl
bGxNYXJrZWQocmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIEhhc2hUcmFpdHM8TWFwcGVkVHlwZT46
OmVtcHR5VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+Ojpl
bXB0eVZhbHVlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
S2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4KLXBhaXI8dHlwZW5hbWUgSGFzaE1hcDxLZXlU
eXBlLCBNYXBwZWRUeXBlPjo6aXRlcmF0b3IsIGJvb2w+IFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBw
ZWRUeXBlPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgdmFsdWUp
CitwYWlyPHR5cGVuYW1lIFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6aXRlcmF0b3Is
IGJvb2w+IFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6c2V0KGNvbnN0IEtleVR5cGUm
IGtleSwgTWFwcGVkVHlwZSogdmFsdWUpCiB7CiAgICAgSGVhcDo6bWFya0NlbGwodmFsdWUpOyAv
LyBJZiB2YWx1ZSBpcyBuZXdseSBhbGxvY2F0ZWQsIGl0J3Mgbm90IG1hcmtlZCwgc28gbWFyayBp
dCBub3cuCiAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwg
dmFsdWUpOwogICAgIGlmICghcmVzdWx0LnNlY29uZCkgeyAvLyBwcmUtZXhpc3RpbmcgZW50cnkK
LSAgICAgICAgcmVzdWx0LnNlY29uZCA9ICFIZWFwOjppc0NlbGxNYXJrZWQocmVzdWx0LmZpcnN0
LT5zZWNvbmQpOworICAgICAgICByZXN1bHQuc2Vjb25kID0gIUhlYXA6OmlzQ2VsbE1hcmtlZChy
ZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKSk7CiAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25k
ID0gdmFsdWU7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+Ci1ib29sIFdlYWtHQ01hcDxLZXlUeXBl
LCBNYXBwZWRUeXBlPjo6dW5jaGVja2VkUmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3Qg
TWFwcGVkVHlwZSYgdmFsdWUpCitib29sIFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6
dW5jaGVja2VkUmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkVHlwZSogdmFsdWUpCiB7
CiAgICAgaXRlcmF0b3IgaXQgPSBtX21hcC5maW5kKGtleSk7CiAgICAgaWYgKGl0ID09IG1fbWFw
LmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGl0LT5zZWNvbmQgIT0gdmFs
dWUpCisgICAgaWYgKGl0LT5zZWNvbmQuZ2V0KCkgIT0gdmFsdWUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBtX21hcC5yZW1vdmUoaXQpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTU4NjE0
MTA2YTA2OTUxODE2NGJhYmQ4MzNjZDVlMjZjNTFmN2RlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKQEAgLTAsMCArMSwxNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdyaXRlQmFycmllcl9oCisjZGVmaW5lIFdyaXRlQmFy
cmllcl9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3Mg
SlNDZWxsOworY2xhc3MgSlNHbG9iYWxEYXRhOworCit0eXBlZGVmIGVudW0geyB9IFVua25vd247
CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBEZXByZWNhdGVkUHRyIHsKK3B1YmxpYzoKKyAg
ICBEZXByZWNhdGVkUHRyKCkgOiBtX2NlbGwoMCkgeyB9CisgICAgRGVwcmVjYXRlZFB0cihUKiBj
ZWxsKSA6IG1fY2VsbChyZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGNlbGwpKSB7IH0KKyAgICBU
KiBnZXQoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihtX2NlbGwpOyB9Cisg
ICAgVCogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fY2VsbCk7
IH0KKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1f
Y2VsbCk7IH0KKyAgICAKKyAgICBKU0NlbGwqKiBzbG90KCkgeyByZXR1cm4gJm1fY2VsbDsgfQor
ICAgIAorICAgIHR5cGVkZWYgVCogKERlcHJlY2F0ZWRQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBl
KTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKigpIGNvbnN0IHsgcmV0dXJuIG1f
Y2VsbCA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29sVHlwZSo+KDEpIDogMDsgfQor
CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jZWxsOyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICBKU0NlbGwqIG1fY2VsbDsKK307CisKK3RlbXBsYXRlIDw+IGNsYXNzIERlcHJl
Y2F0ZWRQdHI8VW5rbm93bj4geworcHVibGljOgorICAgIERlcHJlY2F0ZWRQdHIoKSB7IH0KKyAg
ICBEZXByZWNhdGVkUHRyKEpTVmFsdWUgdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9CisgICAg
RGVwcmVjYXRlZFB0cihKU0NlbGwqIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHsgfQorICAgIGNv
bnN0IEpTVmFsdWUmIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBjb25zdCBK
U1ZhbHVlKiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAmbV92YWx1ZTsgfQorICAgIGNvbnN0
IEpTVmFsdWUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV92YWx1ZTsgfQorICAgIAor
ICAgIEpTVmFsdWUqIHNsb3QoKSB7IHJldHVybiAmbV92YWx1ZTsgfQorICAgIAorICAgIHR5cGVk
ZWYgSlNWYWx1ZSAoRGVwcmVjYXRlZFB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOworICAgIG9w
ZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA/IHJl
aW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29sVHlwZSo+KDEpIDogMDsgfQorICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fdmFsdWU7IH0KKyAgICAKK3ByaXZhdGU6Cisg
ICAgSlNWYWx1ZSBtX3ZhbHVlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBX
cml0ZUJhcnJpZXJDaGVjayB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgSXNKU1ZhbHVlID0gZmFs
c2U7Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgV3JpdGVCYXJyaWVyQ2hlY2s8SlNWYWx1ZT4g
eworICAgIHN0YXRpYyBjb25zdCBib29sIElzSlNWYWx1ZSA9IHRydWU7Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZSB7CitwdWJsaWM6CisgICAgQ09N
UElMRV9BU1NFUlQoIVdyaXRlQmFycmllckNoZWNrPFQ+OjpJc0pTVmFsdWUsIFdyaXRlQmFycmll
cl9KU1ZhbHVlX2lzX2ludmFsaWRfX3VzZV91bmtub3duKTsKKyAgICB2b2lkIHNldChKU0dsb2Jh
bERhdGEmLCBjb25zdCBKU0NlbGwqLCBUKiB2YWx1ZSkgeyB0aGlzLT5tX2NlbGwgPSByZWludGVy
cHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsgfQorICAgIAorICAgIFQqIGdldCgpIGNvbnN0IHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG1fY2VsbCk7IH0KKyAgICBUKiBvcGVyYXRvcioo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsgfQorICAgIFQqIG9wZXJh
dG9yLT4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsgfQorICAgIAor
ICAgIEpTQ2VsbCoqIHNsb3QoKSB7IHJldHVybiAmbV9jZWxsOyB9CisgICAgCisgICAgdHlwZWRl
ZiBUKiAoV3JpdGVCYXJyaWVyQmFzZTo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOworICAgIG9wZXJh
dG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsID8gcmVpbnRl
cnByZXRfY2FzdDxVbnNwZWNpZmllZEJvb2xUeXBlKj4oMSkgOiAwOyB9CisgICAgCisgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jZWxsOyB9CisKK3Byb3RlY3RlZDoKKyAg
ICBKU0NlbGwqIG1fY2VsbDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXcml0
ZUJhcnJpZXIgOiBwdWJsaWMgV3JpdGVCYXJyaWVyQmFzZTxUPiB7CitwdWJsaWM6CisgICAgV3Jp
dGVCYXJyaWVyKCkgeyB0aGlzLT5tX2NlbGwgPSAwOyB9CisgICAgV3JpdGVCYXJyaWVyKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlNDZWxsKiBvd25lciwgVCogdmFsdWUpCisgICAg
eworICAgICAgICBzZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKKyAgICB9CisKK307CisK
K3RlbXBsYXRlIDw+IGNsYXNzIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4geworcHVibGljOgor
ICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IEpTQ2VsbCosIEpTVmFsdWUgdmFsdWUp
IHsgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IH0KKyAgICB2b2lkIHNldFdpdGhv
dXRXcml0ZUJhcnJpZXIoSlNWYWx1ZSB2YWx1ZSkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2Rl
KHZhbHVlKTsgfQorICAgIEpTVmFsdWUgZ2V0KCkgY29uc3QgeyByZXR1cm4gSlNWYWx1ZTo6ZGVj
b2RlKG1fdmFsdWUpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV92YWx1ZSA9IEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKCkpOyB9CisgICAgdm9pZCBzZXRVbmRlZmluZWQoKSB7IG1fdmFsdWUgPSBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7IH0KKyAgICBib29sIGlzTnVtYmVyKCkgY29u
c3QgeyByZXR1cm4gZ2V0KCkuaXNOdW1iZXIoKTsgfQorICAgIEpTVmFsdWUqIHNsb3QoKQorICAg
IHsgCisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB2OworICAg
ICAgICAgICAgSlNWYWx1ZSogc2xvdDsKKyAgICAgICAgfSB1OworICAgICAgICB1LnYgPSAmbV92
YWx1ZTsKKyAgICAgICAgcmV0dXJuIHUuc2xvdDsKKyAgICB9CisgICAgCisgICAgdHlwZWRlZiBK
U1ZhbHVlIChXcml0ZUJhcnJpZXJCYXNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3Bl
cmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID8gcmVp
bnRlcnByZXRfY2FzdDxVbnNwZWNpZmllZEJvb2xUeXBlKj4oMSkgOiAwOyB9CisgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV92YWx1ZTsgfSAKKyAgICAKK3Byb3RlY3RlZDoK
KyAgICBFbmNvZGVkSlNWYWx1ZSBtX3ZhbHVlOworfTsKKwordGVtcGxhdGUgPD4gY2xhc3MgV3Jp
dGVCYXJyaWVyPFVua25vd24+IDogcHVibGljIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gewor
cHVibGljOgorICAgIFdyaXRlQmFycmllcigpIHsgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKCkpOyB9CisgICAgV3JpdGVCYXJyaWVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSlNDZWxsKiBvd25lciwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNldChn
bG9iYWxEYXRhLCBvd25lciwgdmFsdWUpOworICAgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlcHJlY2F0ZWRQ
dHI8VT4mIGxocywgY29uc3QgRGVwcmVjYXRlZFB0cjxWPiYgcmhzKQoreworICAgIHJldHVybiBs
aHMuZ2V0KCkgPT0gcmhzLmdldCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFU+JiBs
aHMsIGNvbnN0IFdyaXRlQmFycmllckJhc2U8Vj4mIHJocykKK3sKKyAgICByZXR1cm4gbGhzLmdl
dCgpID09IHJocy5nZXQoKTsKK30KKworfQorCisjZW5kaWYgLy8gV3JpdGVCYXJyaWVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNj
cmlwdEdsdWUvQ2hhbmdlTG9nCmluZGV4IDJiZTRjZWJhOTI2OTI3NTVkZjk4OTFjZWEyMTFkYTk0
OGYzOGM0MzIuLmRmZjhkMWRhMTc3NWViZDhlMDA5MWQ0NDJjNDZkMDAyYjIyYzFmY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRHbHVlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTAxLTI3ICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ29udmVydCBtYXJrc3RhY2sgdG8gYSBzbG90IHZpc2l0b3IgQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzIxOQor
CisgICAgICAgIFRoZXJlJ3Mgbm8gcmVhc29uIHRvIHJlY3Vyc2UgaGVyZSwgdGhlIHZhbHVlIHdl
CisgICAgICAgIHdlcmUgbWFya2luZyB3YXMgcHJvdGVjdGVkLgorCisgICAgICAgICogSlNWYWx1
ZVdyYXBwZXIuY3BwOgorICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0TWFyayk6CisK
IDIwMTEtMDEtMjMgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xs
b3ctdXAgdG8gcjc2NDc3LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFs
dWVXcmFwcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAK
aW5kZXggZTA4NzlhMDBlYjI2OGNjNWIzN2NkNjlhYTUwMjgwMTVkNTkyOGU4ZC4uZDlhYzQ5N2Q5
MTk0MmRjYmFlNzc4NWNkN2MzYjFhNTQ1Mjc2OGY5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUv
SlNWYWx1ZVdyYXBwZXIuY3BwCkBAIC0xOTQsMTUgKzE5NCw0IEBAIENGVHlwZVJlZiBKU1ZhbHVl
V3JhcHBlcjo6SlNPYmplY3RDb3B5Q0ZWYWx1ZSh2b2lkICpkYXRhKQogCiB2b2lkIEpTVmFsdWVX
cmFwcGVyOjpKU09iamVjdE1hcmsodm9pZCAqZGF0YSkKIHsKLSAgICBKU1ZhbHVlV3JhcHBlciog
cHRyID0gKEpTVmFsdWVXcmFwcGVyKilkYXRhOwotICAgIGlmIChwdHIpCi0gICAgewotICAgICAg
ICAvLyBUaGlzIHJlc3VsdHMgaW4gcmVjdXJzaXZlIG1hcmtpbmcgYnV0IHdpbGwgYmUgb3RoZXJ3
aXNlIHNhZmUgYW5kIGNvcnJlY3QuCi0gICAgICAgIC8vIFdlIGNsYWltIHRoZSBhcnJheSB2cHRy
IGlzIDAgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byBpdCBoZXJlLCBhbmQKLSAgICAg
ICAgLy8gY2xhaW1pbmcgMCBpcyBmdW5jdGlvbmFsbHkgaGFybWxlc3MgLS0gaXQgbWVyZWx5IG1l
YW5zIHRoYXQgd2UgY2FuJ3QKLSAgICAgICAgLy8gZGV2aXJ0dWFsaXNlIG1hcmtpbmcgb2YgYXJy
YXlzIHdoZW4gcmVjdXJzaW5nIGZyb20gdGhpcyBwb2ludC4KLSAgICAgICAgTWFya1N0YWNrIG1h
cmtTdGFjaygwKTsKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChwdHItPmZWYWx1ZS5nZXQoKSk7
Ci0gICAgICAgIG1hcmtTdGFjay5kcmFpbigpOwotICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YTYw
MTUwNTI2ZDFmZDViYjgzMjg1NzI1MjZkNzdiNTYwODdhN2Q1Li5lMWRlYWIyOWQyYzU2ODRjZDdi
ZWY2NmE4ODg4YmVlNmZjZTRjM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTEt
MDEtMjcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IG1hcmtzdGFjayB0byBhIHNs
b3QgdmlzaXRvciBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUzMjE5CisKKyAgICAgICAgVXBkYXRlIFdlYkNvcmUgdG8gdGhlIG5ldyBtYXJraW5n
IGFwaXMsIGNvcnJlY3QgYmluZGluZ3MKKyAgICAgICAgY29kZWdlbi4gCisKKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1dyaXRlQmFycmllci5oOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6Z2xvYmFsRGF0YSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTQXVkaW9Db25zdHJ1Y3Rvcjo6SlNBdWRpb0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya0RPTU5v
ZGVzRm9yRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWFya0RPTU9iamVjdFdyYXBwZXIp
OgorICAgICAgICAoV2ViQ29yZTo6bWFya0RPTU5vZGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUds
b2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFs
T2JqZWN0OjpzZXRJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2Jh
bE9iamVjdDo6aW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6SlNET01H
bG9iYWxPYmplY3REYXRhOjpKU0RPTUdsb2JhbE9iamVjdERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RE9NQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRMb2NhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpEaWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93U2hlbGw6OkpTRE9NV2luZG93U2hlbGwpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93U2hlbGw6Om1hcmtDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1No
ZWxsOjp1bndyYXBwZWRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OndpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3cpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2
ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50
TGlzdGVuZXI6Om1hcmtKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlv
bik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OnNldEFsbCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VD
b25zdHJ1Y3Rvcjo6SlNJbWFnZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0ltYWdlRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZUNoYWluKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTSmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVUeXBlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNO
b2RlRmlsdGVyQ29uZGl0aW9uOjptYXJrQWdncmVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Tm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ29uZGl0aW9uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmls
dGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTT3B0aW9uQ29uc3RydWN0b3I6OkpTT3B0aW9uQ29u
c3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDYWNoZWRGcmFtZURhdGE6OnJlc3RvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRH
bG9iYWxPYmplY3Q6OnNldCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpwdXRQcm9w
ZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKIDIwMTEtMDEtMjggIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1dy
aXRlQmFycmllci5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9X
cml0ZUJhcnJpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODU3ZDJmZjY2ZmI1YzNlZGQ4YWRiOGIyN2E5Njg4
OGYxNWFlYjRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2Vi
Q29yZV9GV0RfV3JpdGVCYXJyaWVyX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfV3JpdGVCYXJyaWVy
X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Xcml0ZUJhcnJpZXIuaD4KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgppbmRleCA5MzZkYzA5M2UxZmNkNjNkM2RjYTEzNzI5NTQ3NGI4YzM1ODE2
M2ZiLi4wMzU0NGE2Y2MzNGY5OGZiMzdhZDQ2OWI4MTRhYjc0MTE2NTRkNzZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtNDQ2LDcgKzQ0Niw2IEBAIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1h
cmt1cEVQS05TXzVSYW5nZUUKIF9fWk43V2ViQ29yZTE2ZW5jbG9zaW5nSW50UmVjdEVSSzdfTlNS
ZWN0CiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQogX19a
TjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdF
ZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCi1fX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nh
c2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTlMwXzlXZWFrR0NNYXBJUE4zV1RGMTBTdHJpbmdJbXBsRVBO
UzBfOEpTU3RyaW5nRUVFUzZfCiBfX1pON1dlYkNvcmUxN0NyZWRlbnRpYWxTdG9yYWdlM2dldEVS
S05TXzE1UHJvdGVjdGlvblNwYWNlRQogX19aTjdXZWJDb3JlMTdET01JbXBsZW1lbnRhdGlvbjEz
aXNYTUxNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3RE9NSW1wbGVtZW50
YXRpb24xNGlzVGV4dE1JTUVUeXBlRVJLTjNXVEY2U3RyaW5nRQpAQCAtMTQzNCw2ICsxNDMzLDcg
QEAgX19OUE5fU2V0UHJvcGVydHkKIF9fTlBOX1VURjhGcm9tSWRlbnRpZmllcgogX19aTjdXZWJD
b3JlMTZTY3JpcHRDb250cm9sbGVyMjB3aW5kb3dTY3JpcHROUE9iamVjdEV2CiBfX1pON1dlYkNv
cmUxNlNjcmlwdENvbnRyb2xsZXIyOWNsZWFudXBTY3JpcHRPYmplY3RzRm9yUGx1Z2luRVB2Citf
X1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTlMwXzlXZWFr
R0NNYXBJUE4zV1RGMTBTdHJpbmdJbXBsRU5TMF84SlNTdHJpbmdFRUVTNl8KIF9fWk43V2ViQ29y
ZTE3SFRNTFBsdWdJbkVsZW1lbnQxMWdldE5QT2JqZWN0RXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRl
ck9iamVjdDR2aWV3RXYKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luOWNhbkFjY2Vzc0VQ
S1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldv
cmxkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAppbmRl
eCA1ZTdiNTUxM2ZlNjI2NWM5YzBkNTZmZWQyMTU2OWYwYjBlYjNlODdmLi45ODI1YTA4ZjMwYWQ5
ZjVmMzU0YTQ0OWMxN2I3NmY0ZjgwMGZjMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01XcmFwcGVyV29ybGQuaApAQCAtMzIsOCArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXI7CiAKLXR5cGVkZWYgSlNDOjpXZWFrR0NNYXA8
dm9pZCosIERPTU9iamVjdCo+IERPTU9iamVjdFdyYXBwZXJNYXA7Ci10eXBlZGVmIEpTQzo6V2Vh
a0dDTWFwPFN0cmluZ0ltcGwqLCBKU0M6OkpTU3RyaW5nKj4gSlNTdHJpbmdDYWNoZTsgCit0eXBl
ZGVmIEpTQzo6V2Vha0dDTWFwPHZvaWQqLCBET01PYmplY3Q+IERPTU9iamVjdFdyYXBwZXJNYXA7
Cit0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFN0cmluZ0ltcGwqLCBKU0M6OkpTU3RyaW5nPiBKU1N0
cmluZ0NhY2hlOyAKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkIDogcHVibGljIFJlZkNvdW50ZWQ8
RE9NV3JhcHBlcldvcmxkPiB7CiBwdWJsaWM6CkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNOb3JtYWwoKSBjb25zdCB7IHJldHVybiBtX2lzTm9ybWFsOyB9CiAKKyAgICBK
U0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0
YTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRE9NV3JhcHBlcldvcmxkKEpTQzo6SlNHbG9iYWxEYXRh
KiwgYm9vbCBpc05vcm1hbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvQ29uc3RydWN0b3IuY3BwCmluZGV4IDFlYTVhZTQwMWRkZDBhNDY3ZDEzYzg2NWJlZDcw
OTY3MDQ4NzM4YzMuLmMxOWQ3OTU3ZDc5YzU5YTg1NDllZDUxOTQwOTJmZjI1YWRkYzkwMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNw
cApAQCAtNDIsOCArNDIsOCBAQCBjb25zdCBDbGFzc0luZm8gSlNBdWRpb0NvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJBdWRpb0NvbnN0cnVjdG9yIiwgMCwgMCwgMCB9OwogSlNBdWRpb0NvbnN0cnVj
dG9yOjpKU0F1ZGlvQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIDogRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQoSlNBdWRp
b0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5
cGUoKSksIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1l
cygpLnByb3RvdHlwZSwgSlNIVE1MQXVkaW9FbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGds
b2JhbE9iamVjdCksIE5vbmUpOwotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUsIEpTSFRNTEF1ZGlvRWxlbWVudFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxP
YmplY3QpLCBOb25lKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRl
IHwgRG9udEVudW0pOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RBdWRpbyhFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmNwcAppbmRleCBlNTNkY2ZiNjAxYWEyYjkyZmExZTViMDhmNDQ2NjJm
NzM0MjNjNzZkLi43ZGUyNzE5ZTc3MWYwNDIxZDE5OWZkYmM3MjE3NDI0YWRjODgyMmFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTMzNSw5ICsz
MzUsOSBAQCB2b2lkIG1hcmtET01Ob2Rlc0ZvckRvY3VtZW50KE1hcmtTdGFjayYgbWFya1N0YWNr
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAKICAgICAgICAgSlNXcmFwcGVyQ2FjaGU6Oml0ZXJhdG9y
IG5vZGVFbmQgPSBub2RlRGljdC0+dW5jaGVja2VkRW5kKCk7CiAgICAgICAgIGZvciAoSlNXcmFw
cGVyQ2FjaGU6Oml0ZXJhdG9yIG5vZGVJdCA9IG5vZGVEaWN0LT51bmNoZWNrZWRCZWdpbigpOyBu
b2RlSXQgIT0gbm9kZUVuZDsgKytub2RlSXQpIHsKLSAgICAgICAgICAgIEpTTm9kZSoganNOb2Rl
ID0gbm9kZUl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICBpZiAoaXNPYnNlcnZhYmxlVGhyb3VnaERP
TShqc05vZGUsIHdvcmxkKSkKLSAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKGpzTm9k
ZSk7CisgICAgICAgICAgICBEZXByZWNhdGVkUHRyPEpTTm9kZT4mIGpzTm9kZSA9IG5vZGVJdC0+
c2Vjb25kOworICAgICAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZVRocm91Z2hET00oanNOb2RlLmdl
dCgpLCB3b3JsZCkpCisgICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmanNOb2RlKTsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTQxNiw4ICs0MTYsOCBAQCB2b2lkIG1hcmtET01PYmpl
Y3RXcmFwcGVyKE1hcmtTdGFjayYgbWFya1N0YWNrLCBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IHZvaWQqCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoSlNHbG9iYWxEYXRhV29ybGRJdGVy
YXRvciB3b3JsZEl0ZXIoJmdsb2JhbERhdGEpOyB3b3JsZEl0ZXI7ICsrd29ybGRJdGVyKSB7Ci0g
ICAgICAgIGlmIChET01PYmplY3QqIHdyYXBwZXIgPSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5j
aGVja2VkR2V0KG9iamVjdCkpCi0gICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHdyYXBwZXIp
OworICAgICAgICBpZiAoRGVwcmVjYXRlZFB0cjxET01PYmplY3Q+KiB3cmFwcGVyU2xvdCA9IHdv
cmxkSXRlci0+bV93cmFwcGVycy51bmNoZWNrZWRHZXRTbG90KG9iamVjdCkpCisgICAgICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKHdyYXBwZXJTbG90KTsKICAgICB9CiB9CiAKQEAgLTQyNiwxNSAr
NDI2LDE1IEBAIHZvaWQgbWFya0RPTU5vZGVXcmFwcGVyKE1hcmtTdGFjayYgbWFya1N0YWNrLCBE
b2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCiAgICAgaWYgKGRvY3VtZW50KSB7CiAgICAg
ICAgIEpTV3JhcHBlckNhY2hlTWFwJiB3cmFwcGVyQ2FjaGVNYXAgPSBkb2N1bWVudC0+d3JhcHBl
ckNhY2hlTWFwKCk7CiAgICAgICAgIGZvciAoSlNXcmFwcGVyQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSB3cmFwcGVyQ2FjaGVNYXAuYmVnaW4oKTsgaXRlciAhPSB3cmFwcGVyQ2FjaGVNYXAuZW5k
KCk7ICsraXRlcikgewotICAgICAgICAgICAgaWYgKEpTTm9kZSogd3JhcHBlciA9IGl0ZXItPnNl
Y29uZC0+dW5jaGVja2VkR2V0KG5vZGUpKQotICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBl
bmQod3JhcHBlcik7CisgICAgICAgICAgICBpZiAoRGVwcmVjYXRlZFB0cjxKU05vZGU+KiB3cmFw
cGVyU2xvdCA9IGl0ZXItPnNlY29uZC0+dW5jaGVja2VkR2V0U2xvdChub2RlKSkKKyAgICAgICAg
ICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHdyYXBwZXJTbG90KTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChKU0dsb2JhbERhdGFXb3JsZEl0ZXJhdG9yIHdv
cmxkSXRlcihKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOyB3b3JsZEl0ZXI7ICsr
d29ybGRJdGVyKSB7Ci0gICAgICAgIGlmIChET01PYmplY3QqIHdyYXBwZXIgPSB3b3JsZEl0ZXIt
Pm1fd3JhcHBlcnMudW5jaGVja2VkR2V0KG5vZGUpKQotICAgICAgICAgICAgbWFya1N0YWNrLmFw
cGVuZCh3cmFwcGVyKTsKKyAgICAgICAgaWYgKERlcHJlY2F0ZWRQdHI8RE9NT2JqZWN0Piogd3Jh
cHBlclNsb3QgPSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0U2xvdChub2RlKSkK
KyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQod3JhcHBlclNsb3QpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGUwYjViODkxZDQwYmZjMDA3YjkzYWI3YmZjMWI3NjY0YzlhMzhmZTYuLmEzMjhlZTk0NmE4
OWM2OTY3YzZjYjY4ZTFlNDk0YjVhOGYyMzc4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTUzLDE0ICs1MywxNCBAQCB2b2lk
IEpTRE9NR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAK
ICAgICBKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgZW5kID0gc3RydWN0dXJlcygpLmVuZCgp
OwogICAgIGZvciAoSlNET01TdHJ1Y3R1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gc3RydWN0dXJlcygp
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChpdC0+
c2Vjb25kLT5zdG9yZWRQcm90b3R5cGUoKSk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoaXQt
PnNlY29uZC0+c3RvcmVkUHJvdG90eXBlU2xvdCgpKTsKIAogICAgIEpTRE9NQ29uc3RydWN0b3JN
YXA6Oml0ZXJhdG9yIGVuZDIgPSBjb25zdHJ1Y3RvcnMoKS5lbmQoKTsKICAgICBmb3IgKEpTRE9N
Q29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGl0MiA9IGNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0
MiAhPSBlbmQyOyArK2l0MikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChpdDItPnNlY29uZCk7
CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJml0Mi0+c2Vjb25kKTsKIAogICAgIGlmIChkKCkt
Pm1faW5qZWN0ZWRTY3JpcHQpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoZCgpLT5tX2luamVj
dGVkU2NyaXB0KTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmZCgpLT5tX2luamVjdGVkU2Ny
aXB0KTsKIH0KIAogdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6c2V0Q3VycmVudEV2ZW50KEV2ZW50
KiBldnQpCkBAIC03NSwxMiArNzUsMTIgQEAgRXZlbnQqIEpTRE9NR2xvYmFsT2JqZWN0OjpjdXJy
ZW50RXZlbnQoKSBjb25zdAogCiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpzZXRJbmplY3RlZFNj
cmlwdChKU09iamVjdCogaW5qZWN0ZWRTY3JpcHQpCiB7Ci0gICAgZCgpLT5tX2luamVjdGVkU2Ny
aXB0ID0gaW5qZWN0ZWRTY3JpcHQ7CisgICAgZCgpLT5tX2luamVjdGVkU2NyaXB0LnNldChnbG9i
YWxEYXRhKCksIHRoaXMsIGluamVjdGVkU2NyaXB0KTsKIH0KIAogSlNPYmplY3QqIEpTRE9NR2xv
YmFsT2JqZWN0OjppbmplY3RlZFNjcmlwdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQoKS0+bV9p
bmplY3RlZFNjcmlwdDsKKyAgICByZXR1cm4gZCgpLT5tX2luamVjdGVkU2NyaXB0LmdldCgpOwog
fQogCiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpkZXN0cm95SlNET01HbG9iYWxPYmplY3REYXRh
KHZvaWQqIGpzRE9NR2xvYmFsT2JqZWN0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IDhlYjU1YzE0ODQ3Y2JlOTdkNDE4MjQyYjM3
ZmI3NGQ0MzdkNWNlNzMuLjRkY2U3YTUxNWMzZGJhMjMzMDVhZjQ0NmI3MzdhNjZkZDk4ZmYwYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBKU0M6OkNsYXNzSW5m
byosIFJlZlB0cjxKU0M6OlN0cnVjdHVyZT4gPiBKU0RPTVN0cnVjdHVyZU1hcDsKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0luZm8qLCBKU0M6OkpTT2JqZWN0Kj4gSlNET01D
b25zdHJ1Y3Rvck1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0luZm8q
LCBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiA+IEpTRE9NQ29uc3RydWN0b3JNYXA7
CiAKICAgICBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTR2xvYmFsT2Jq
ZWN0IHsKICAgICAgICAgdHlwZWRlZiBKU0M6OkpTR2xvYmFsT2JqZWN0IEJhc2U7CkBAIC03Niw3
ICs3Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICA6IEpTR2xvYmFs
T2JqZWN0RGF0YShkZXN0cnVjdG9yKQogICAgICAgICAgICAgICAgICwgZXZ0KDApCiAgICAgICAg
ICAgICAgICAgLCBtX3dvcmxkKHdvcmxkKQotICAgICAgICAgICAgICAgICwgbV9pbmplY3RlZFNj
cmlwdCgwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgfQogCkBAIC04NSw3ICs4NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAgICAgRXZlbnQqIGV2dDsKICAgICAgICAg
ICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7Ci0gICAgICAgICAgICBKU09iamVj
dCogbV9pbmplY3RlZFNjcmlwdDsKKyAgICAgICAgICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTT2Jq
ZWN0PiBtX2luamVjdGVkU2NyaXB0OwogICAgICAgICB9OwogCiAgICAgcHJpdmF0ZToKQEAgLTk3
LDExICs5NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgQ29u
c3RydWN0b3JDbGFzcz4KICAgICBpbmxpbmUgSlNDOjpKU09iamVjdCogZ2V0RE9NQ29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgewotICAgICAgICBpZiAoSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBn
bG9iYWxPYmplY3QtPmNvbnN0cnVjdG9ycygpLmdldCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZv
KSkKKyAgICAgICAgaWYgKEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0
LT5jb25zdHJ1Y3RvcnMoKS5nZXQoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbykuZ2V0KCkpCiAg
ICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGNv
bnN0cnVjdG9yID0gbmV3IChleGVjKSBDb25zdHJ1Y3RvckNsYXNzKGV4ZWMsIGNvbnN0X2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKICAgICAgICAgQVNTRVJUKCFnbG9i
YWxPYmplY3QtPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2lu
Zm8pKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5jb25zdHJ1Y3RvcnMoKS5zZXQoJkNvbnN0cnVj
dG9yQ2xhc3M6OnNfaW5mbywgY29uc3RydWN0b3IpOworICAgICAgICBKU0M6OldyaXRlQmFycmll
cjxKU0M6OkpTT2JqZWN0PiB0ZW1wOworICAgICAgICBnbG9iYWxPYmplY3QtPmNvbnN0cnVjdG9y
cygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCB0ZW1wKS5maXJzdC0+c2Vjb25kLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IpOwogICAgICAg
ICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNmFmYmRiZWIxMDg4YzI1NmRlMGVk
MDk5MTE1YzdlMTRhZTcyYTY1Zi4uMjVmOTVmYTZiMWQ1Y2VkM2ZlNmY5NmNkMjgyMmRhZDViZWRk
ZmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgaWYgKFNldHRpbmdzKiBz
ZXR0aW5ncyA9IGFjdGl2ZUZyYW1lLT5zZXR0aW5ncygpKSB7CiAgICAgICAgICAgICBpZiAoc2V0
dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkgJiYgIWFjdGl2
ZUZyYW1lLT50cmVlKCktPnBhcmVudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGFsbG93c0Fj
Y2Vzc0Zyb20oZXhlYykpCi0gICAgICAgICAgICAgICAgICAgIHB1dERpcmVjdChJZGVudGlmaWVy
KGV4ZWMsICJsb2NhdGlvbiIpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgImxvY2F0aW9uIiksIHZhbHVl
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTY4Miw3ICs2ODIsNyBAQCBpbmxpbmUgdm9pZCBEaWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVk
KERPTVdpbmRvdyogZGlhbG9nKQogICAgIC8vICAgICAgICB3b3JsZCBpZiBkaWFsb2dBcmd1bWVu
dHMgY29tZXMgZnJvbSBhbiBpc29sYXRlZCB3b3JsZC4KICAgICBtX2dsb2JhbE9iamVjdCA9IHRv
SlNET01XaW5kb3coZGlhbG9nLT5mcmFtZSgpLCBub3JtYWxXb3JsZChtX2V4ZWMtPmdsb2JhbERh
dGEoKSkpOwogICAgIGlmIChKU1ZhbHVlIGRpYWxvZ0FyZ3VtZW50cyA9IG1fZXhlYy0+YXJndW1l
bnQoMSkpCi0gICAgICAgIG1fZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoSWRlbnRpZmllcihtX2V4
ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9nQXJndW1lbnRzKTsKKyAgICAgICAgbV9nbG9i
YWxPYmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihtX2V4
ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwgZGlhbG9nQXJndW1lbnRzKTsKIH0KIAogaW5saW5lIEpT
VmFsdWUgRGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRleCA2NTA5NmI5M2MwNmQ4
MzdhNDE0YWQ3YTgzZmI2YTYxOWQyMTdmYWZmLi5iM2UwYjg4ZTdjZDI0ZjFmODk2N2VjNDQyOWM5
MDNmNTBjNzI0YzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmNwcApAQCAtNDUsNyArNDUsNiBAQCBjb25zdCBDbGFzc0luZm8gSlNET01XaW5k
b3dTaGVsbDo6c19pbmZvID0geyAiSlNET01XaW5kb3dTaGVsbCIsIDAsIDAsIDAgfTsKIAogSlNE
T01XaW5kb3dTaGVsbDo6SlNET01XaW5kb3dTaGVsbChQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2lu
ZG93LCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogICAgIDogQmFzZShKU0RPTVdpbmRvd1NoZWxs
OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQotICAgICwgbV93aW5kb3coMCkKICAgICAsIG1f
d29ybGQod29ybGQpCiB7CiAgICAgc2V0V2luZG93KHdpbmRvdyk7CkBAIC02Niw3ICs2NSw3IEBA
IHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBk
b21XaW5kb3cpCiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gSlNET01XaW5kb3c6
OmNyZWF0ZVN0cnVjdHVyZShwcm90b3R5cGUpOwogICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRv
dyA9IG5ldyAoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKSBKU0RPTVdpbmRvdyhz
dHJ1Y3R1cmUucmVsZWFzZSgpLCBkb21XaW5kb3csIHRoaXMpOwogICAgIHByb3RvdHlwZS0+cHV0
QW5vbnltb3VzVmFsdWUoMCwganNET01XaW5kb3cpOwotICAgIHNldFdpbmRvdyhqc0RPTVdpbmRv
dyk7CisgICAgc2V0V2luZG93KCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpz
RE9NV2luZG93KTsKIH0KIAogLy8gLS0tLQpAQCAtNzcsNyArNzYsNyBAQCB2b2lkIEpTRE9NV2lu
ZG93U2hlbGw6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBCYXNl
OjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKICAgICBpZiAobV93aW5kb3cpCi0gICAgICAgIG1h
cmtTdGFjay5hcHBlbmQobV93aW5kb3cpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3dp
bmRvdyk7CiB9CiAKIFVTdHJpbmcgSlNET01XaW5kb3dTaGVsbDo6Y2xhc3NOYW1lKCkgY29uc3QK
QEAgLTE0Nyw3ICsxNDYsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93U2hlbGw6Omxvb2t1cFNldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcgogCiBKU09iamVjdCog
SlNET01XaW5kb3dTaGVsbDo6dW53cmFwcGVkT2JqZWN0KCkKIHsKLSAgICByZXR1cm4gbV93aW5k
b3c7CisgICAgcmV0dXJuIG1fd2luZG93LmdldCgpOwogfQogCiAvLyAtLS0tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggODg4MzI1ZDAzZmNj
OGYzNGM5ZTMzYWEyNWZhYWQwMzMyNTQ4M2Y3MS4uZDU4NWZkNDkzZTE5Y2ZiMDVjZjExNzc2Y2Rj
MmQxYzUyOGU3ZWViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93U2hlbGwuaApAQCAtNDMsMTEgKzQzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgSlNET01XaW5kb3dTaGVsbChQYXNzUmVmUHRyPERPTVdpbmRvdz4sIERPTVdyYXBwZXJXb3Js
ZCogd29ybGQpOwogICAgICAgICB2aXJ0dWFsIH5KU0RPTVdpbmRvd1NoZWxsKCk7CiAKLSAgICAg
ICAgSlNET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93OyB9Ci0gICAg
ICAgIHZvaWQgc2V0V2luZG93KEpTRE9NV2luZG93KiB3aW5kb3cpCisgICAgICAgIEpTRE9NV2lu
ZG93KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBtX3dpbmRvdy5nZXQoKTsgfQorICAgICAgICB2
b2lkIHNldFdpbmRvdyhKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNET01XaW5kb3cq
IHdpbmRvdykKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUX0FSRyh3aW5kb3csIHdpbmRv
dyk7Ci0gICAgICAgICAgICBtX3dpbmRvdyA9IHdpbmRvdzsKKyAgICAgICAgICAgIG1fd2luZG93
LnNldChnbG9iYWxEYXRhLCB0aGlzLCB3aW5kb3cpOwogICAgICAgICAgICAgc2V0UHJvdG90eXBl
KHdpbmRvdy0+cHJvdG90eXBlKCkpOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgc2V0V2luZG93
KFBhc3NSZWZQdHI8RE9NV2luZG93Pik7CkBAIC04NSw3ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiB1bndyYXBwZWRPYmplY3QoKTsK
ICAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Qg
eyByZXR1cm4gJnNfaW5mbzsgfQogCi0gICAgICAgIEpTRE9NV2luZG93KiBtX3dpbmRvdzsKKyAg
ICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNET01XaW5kb3c+IG1fd2luZG93OwogICAgICAgICBS
ZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAK
aW5kZXggNTAzZDY0ZjZiMWI2YWE2NTljNmU5Mzc4YTdkMGQ3Nzc2MzMwNDIyNC4uOTE0MmFhMmYz
MTBiZDlmYzI5ZjNiZDFkODUyOTMxZTNkZWM3OTE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKQEAgLTEx
NCwxOCArMTE0LDE4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OlJvdGF0
aW9uUmF0ZT4gcmVhZFJvdGF0aW9uUmF0ZUFyZ3VtZW50KEpTVmFsCiBzdGF0aWMgSlNPYmplY3Qq
IGNyZWF0ZUFjY2VsZXJhdGlvbk9iamVjdChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVy
YXRpb24qIGFjY2VsZXJhdGlvbiwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBvYmplY3QtPnB1dERpcmVj
dChJZGVudGlmaWVyKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVgoKSA/IGpz
TnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERp
cmVjdChJZGVudGlmaWVyKGV4ZWMsICJ5IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVkoKSA/
IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1
dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVoo
KSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eigpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3Qt
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIngiKSwgYWNj
ZWxlcmF0aW9uLT5jYW5Qcm92aWRlWCgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT54KCkpIDog
anNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCAieSIpLCBhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVZKCkgPyBqc051bWJl
cihhY2NlbGVyYXRpb24tPnkoKSkgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+
Y2FuUHJvdmlkZVooKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eigpKSA6IGpzTnVsbCgpKTsK
ICAgICByZXR1cm4gb2JqZWN0OwogfQogCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVJvdGF0aW9u
UmF0ZU9iamVjdChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUqIHJvdGF0aW9u
UmF0ZSwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKGV4
ZWMsICJhbHBoYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVBbHBoYSgpID8ganNOdW1iZXIo
cm90YXRpb25SYXRlLT5hbHBoYSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVj
dChJZGVudGlmaWVyKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVCZXRh
KCkgID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpzTnVsbCgpKTsKLSAgICBv
YmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJnYW1tYSIpLCByb3RhdGlvblJhdGUt
PmNhblByb3ZpZGVHYW1tYSgpID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5nYW1tYSgpKSA6IGpz
TnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgImFscGhhIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUFscGhhKCkgPyBq
c051bWJlcihyb3RhdGlvblJhdGUtPmFscGhhKCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiYmV0YSIpLCAg
cm90YXRpb25SYXRlLT5jYW5Qcm92aWRlQmV0YSgpICA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+
YmV0YSgpKSAgOiBqc051bGwoKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJnYW1tYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3Zp
ZGVHYW1tYSgpID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsK
ICAgICByZXR1cm4gb2JqZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcAppbmRleCA1NjA0Mzc0YzJmM2Q3YWRkZWNiNTdjODYyNzMzOGM2
MzU1ZmIyZDZhLi42NDI3NjgzZjQyZTYzNDhiNmIzZmJiN2UzMTBjODBmYmE2ZGFkZDk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM0
LDEyICszNCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTRXZlbnRMaXN0ZW5lcjo6SlNF
dmVudExpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3QqIHdyYXBwZXIsIGJvb2wg
aXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKICAgICA6IEV2ZW50
TGlzdGVuZXIoSlNFdmVudExpc3RlbmVyVHlwZSkKLSAgICAsIG1fanNGdW5jdGlvbihmdW5jdGlv
bikKICAgICAsIG1faXNBdHRyaWJ1dGUoaXNBdHRyaWJ1dGUpCiAgICAgLCBtX2lzb2xhdGVkV29y
bGQoaXNvbGF0ZWRXb3JsZCkKIHsKICAgICBpZiAod3JhcHBlcikKICAgICAgICAgbV93cmFwcGVy
ID0gd3JhcHBlcjsKKyAgICBtX2pzRnVuY3Rpb24uc2V0KCptX2lzb2xhdGVkV29ybGQtPmdsb2Jh
bERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOwogfQogCiBKU0V2ZW50TGlzdGVuZXI6On5KU0V2
ZW50TGlzdGVuZXIoKQpAQCAtNTUsNyArNTUsNyBAQCBKU09iamVjdCogSlNFdmVudExpc3RlbmVy
Ojppbml0aWFsaXplSlNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3QKIHZv
aWQgSlNFdmVudExpc3RlbmVyOjptYXJrSlNGdW5jdGlvbihNYXJrU3RhY2smIG1hcmtTdGFjaykK
IHsKICAgICBpZiAobV9qc0Z1bmN0aW9uKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1fanNG
dW5jdGlvbik7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fanNGdW5jdGlvbik7CiB9CiAK
IHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCmluZGV4IDgzZDBkMmVlOWI4Y2NmZGM0YTAw
ODEyMWM1NmEyYTc2ODE5OTBmNmMuLjQ3ZmY0NGVjNzZlMjM4MTIzZGUyYmEzNzVmNjUwMTMzMWEw
N2E2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5o
CkBAIC02Niw3ICs2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSBKU0M6OkpTT2JqZWN0KiBtX2pzRnVuY3Rpb247Cisg
ICAgICAgIG11dGFibGUgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gbV9qc0Z1bmN0
aW9uOwogICAgICAgICBtdXRhYmxlIEpTQzo6V2Vha0dDUHRyPEpTQzo6SlNPYmplY3Q+IG1fd3Jh
cHBlcjsKIAogICAgICAgICBib29sIG1faXNBdHRyaWJ1dGU7CkBAIC03Niw3ICs3Niw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBpbmxpbmUgSlNDOjpKU09iamVjdCogSlNFdmVudExpc3Rl
bmVyOjpqc0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1fanNGdW5jdGlvbikKLSAgICAgICAg
ICAgIG1fanNGdW5jdGlvbiA9IGluaXRpYWxpemVKU0Z1bmN0aW9uKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOworICAgICAgICAgICAgbV9qc0Z1bmN0aW9uLnNldCgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+Z2xvYmFsRGF0YSgpLCBtX3dyYXBwZXIuZ2V0KCksIGluaXRpYWxpemVKU0Z1bmN0aW9u
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKIAogICAgICAgICAvLyBWZXJpZnkgdGhhdCB3ZSBo
YXZlIGEgdmFsaWQgd3JhcHBlciBwcm90ZWN0aW5nIG91ciBmdW5jdGlvbiBmcm9tCiAgICAgICAg
IC8vIGdhcmJhZ2UgY29sbGVjdGlvbi4KQEAgLTg2LDkgKzg2LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIC8vIFRyeSB0byB2ZXJpZnkgdGhhdCBtX2pzRnVuY3Rpb24gd2Fzbid0
IHJlY3ljbGVkLiAoTm90IGV4YWN0LCBzaW5jZSBhbgogICAgICAgICAvLyBldmVudCBsaXN0ZW5l
ciBjYW4gYmUgYWxtb3N0IGFueXRoaW5nLCBidXQgdGhpcyBtYWtlcyB0ZXN0LXdyaXRpbmcgZWFz
aWVyKS4KLSAgICAgICAgQVNTRVJUKCFtX2pzRnVuY3Rpb24gfHwgc3RhdGljX2Nhc3Q8SlNDOjpK
U0NlbGwqPihtX2pzRnVuY3Rpb24pLT5pc09iamVjdCgpKTsKKyAgICAgICAgQVNTRVJUKCFtX2pz
RnVuY3Rpb24gfHwgc3RhdGljX2Nhc3Q8SlNDOjpKU0NlbGwqPihtX2pzRnVuY3Rpb24uZ2V0KCkp
LT5pc09iamVjdCgpKTsKIAotICAgICAgICByZXR1cm4gbV9qc0Z1bmN0aW9uOworICAgICAgICBy
ZXR1cm4gbV9qc0Z1bmN0aW9uLmdldCgpOwogICAgIH0KIAogICAgIGlubGluZSB2b2lkIEpTRXZl
bnRMaXN0ZW5lcjo6aW52YWxpZGF0ZUpTRnVuY3Rpb24oSlNDOjpKU09iamVjdCogd3JhcHBlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9t
LmNwcAppbmRleCAwYjQwZWYwNDRkNWNhZGRmMjNlOTlkNDAzN2E3NzYwMzkyMmRhZGM1Li4yODE3
YWU2OTNmMDhhYTRiZTE1MzZiYTcyMjE5ZjIyY2IxNGY1MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC05Niw3ICs5
Niw3IEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6OmFsbChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB2b2lkIEpTSFRNTERvY3VtZW50OjpzZXRBbGwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlKQogewogICAgIC8vIEFkZCAiYWxsIiB0byB0aGUgcHJvcGVydHkgbWFwLgotICAgIHB1dERp
cmVjdChJZGVudGlmaWVyKGV4ZWMsICJhbGwiKSwgdmFsdWUpOworICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgImFsbCIpLCB2YWx1ZSk7CiB9CiAKIC8v
IEN1c3RvbSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lt
YWdlQ29uc3RydWN0b3IuY3BwCmluZGV4IGYyYWQ4MDM3MmQwM2ZhZmE3ZmZkMGVmYWQ3MWY0Mjk4
MzdhZTVkMGEuLjUxOTJlMTJlMmE0NzI5ZjEwNjMzZTM1NGM5YTUwMzU0ZjE0YmE2NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNJbWFnZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJJbWFnZUNvbnN0cnVjdG9yIiwgMCwgMCwgMCB9OwogSlNJbWFnZUNvbnN0cnVjdG9y
OjpKU0ltYWdlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIDogRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQoSlNJbWFnZUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUo
KSksIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSwgSlNIVE1MSW1hZ2VFbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2Jh
bE9iamVjdCksIE5vbmUpOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTSFRNTEltYWdlRWxlbWVudFByb3RvdHlwZTo6
c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW1hZ2UoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCmluZGV4IDYx
YzUxMTI4ZTQ4ZDk0MjY2MDA4NTE3MGM3NzI5MzI0MzNmMzczODQuLjg3OGUxZGVlYTYwYTk2MDM5
ODc0Yzk1NjYwMzE3NWZkNGUwNTAxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW1hZ2VE
YXRhKiBpbWFnZUQKICAgICBJZGVudGlmaWVyIGRhdGFOYW1lKGV4ZWMsICJkYXRhIik7CiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8U3RydWN0dXJlPiwgY3BhU3RydWN0dXJlLCAoSlNC
eXRlQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpKTsKICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIGNwYUNsYXNzSW5mbyA9IHsgIkNhbnZhc1BpeGVsQXJyYXkiLCAwLCAwLCAwIH07
Ci0gICAgd3JhcHBlci0+cHV0RGlyZWN0KGRhdGFOYW1lLCBuZXcgKGV4ZWMpIEpTQnl0ZUFycmF5
KGV4ZWMsIGNwYVN0cnVjdHVyZSwgaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSwgJmNwYUNsYXNz
SW5mbyksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgd3JhcHBlci0+cHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZGF0YU5hbWUsIG5ldyAoZXhlYykgSlNCeXRlQXJyYXkoZXhlYywg
Y3BhU3RydWN0dXJlLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpLCAmY3BhQ2xhc3NJbmZvKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVt
b3J5Q29zdChpbWFnZURhdGEtPmRhdGEoKS0+bGVuZ3RoKCkpOwogICAgIAogICAgIHJldHVybiB3
cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2
YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKaW5kZXggMGY0N2I3YjIzMjI5NzBmZTcwMzkwMzc2
YWMwMzIwN2Q5ZjAyYzM3NC4uN2MwMGJkNDNhYzNmMTQ3ZDVkMDgyOGRkMjA5MjU5NTg1ZTUwZjUy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFT
Y3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCkBAIC03OSw3ICs3OSw3IEBAIEpTVmFsdWUgSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lOjpzY29wZUNoYWluKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CiAgICAgZG8gewotICAgICAgICBsaXN0LmFwcGVu
ZCgqaXRlcik7CisgICAgICAgIGxpc3QuYXBwZW5kKGl0ZXItPmdldCgpKTsKICAgICAgICAgKytp
dGVyOwogICAgIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIEpT
VmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZVR5cGUoRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgYm9vbCBmb3VuZExvY2FsU2NvcGUgPSBmYWxzZTsKICAgICBmb3IgKFNjb3BlQ2hhaW5J
dGVyYXRvciBpdGVyID0gc2NvcGVDaGFpbi0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewotICAgICAgICBKU09iamVjdCogc2NvcGUgPSAqaXRlcjsKKyAgICAgICAgSlNDOjpEZXByZWNh
dGVkUHRyPEpTT2JqZWN0PiBzY29wZSA9ICppdGVyOwogICAgICAgICBpZiAoc2NvcGUtPmlzQWN0
aXZhdGlvbk9iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAoIWZvdW5kTG9jYWxTY29wZSkgewog
ICAgICAgICAgICAgICAgIC8vIEZpcnN0IGFjdGl2YXRpb24gb2JqZWN0IGlzIGxvY2FsIHNjb3Bl
LCBlYWNoIHN1Y2Nlc3NpdmUgYWN0aXZhdGlvbiBvYmplY3QgaXMgY2xvc3VyZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCmlu
ZGV4IGIyNjllNWZhNTkxODk5OGQ3ODBlOWVkMGVhMjMyYzhmNzc5ZmRiNjIuLjFjZjcyYTViYzIx
NjhjNDhiNmNlNjg2YTUwZWZhOWNmNjMxZGU5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcApAQCAtMzksMTQgKzM5LDE0
IEBAIEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6SlNOb2RlRmlsdGVyQ29uZGl0aW9uKEpTVmFsdWUg
ZmlsdGVyKQogCiB2b2lkIEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6bWFya0FnZ3JlZ2F0ZShNYXJr
U3RhY2smIG1hcmtTdGFjaykKIHsKLSAgICBtYXJrU3RhY2suYXBwZW5kKG1fZmlsdGVyKTsKKyAg
ICBtYXJrU3RhY2suYXBwZW5kKCZtX2ZpbHRlcik7CiB9CiAKIHNob3J0IEpTTm9kZUZpbHRlckNv
bmRpdGlvbjo6YWNjZXB0Tm9kZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgTm9kZSogZmlsdGVyTm9k
ZSkgY29uc3QKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCi0g
ICAgaWYgKCFtX2ZpbHRlci5pc09iamVjdCgpKQorICAgIGlmICghbV9maWx0ZXItPmlzT2JqZWN0
KCkpCiAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUOwogCiAgICAvLyBU
aGUgZXhlYyBhcmd1bWVudCBoZXJlIHNob3VsZCBvbmx5IGJlIG51bGwgaWYgdGhpcyB3YXMgY2Fs
bGVkIGZyb20gYQpAQCAtNTgsMTEgKzU4LDExIEBAIHNob3J0IEpTTm9kZUZpbHRlckNvbmRpdGlv
bjo6YWNjZXB0Tm9kZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgTm9kZSogZmlsdGVyTm9kZSkKICAg
ICBpZiAoIWV4ZWMpCiAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOwog
Ci0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1fZmlsdGVyOworICAgIEpTVmFsdWUgZnVuY3Rpb24g
PSBtX2ZpbHRlci5nZXQoKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBmdW5jdGlvbiA9IG1fZmlsdGVyLmdldChl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsICJhY2NlcHROb2RlIikpOworICAgICAgICBmdW5jdGlvbiA9
IG1fZmlsdGVyLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiYWNjZXB0Tm9kZSIpKTsKICAg
ICAgICAgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CiAgICAgICAgICAgICB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiTm9kZUZpbHRlciBvYmplY3QgZG9lcyBub3Qg
aGF2ZSBhbiBhY2NlcHROb2RlIGZ1bmN0aW9uIikpOwpAQCAtNzcsNyArNzcsNyBAQCBzaG9ydCBK
U05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIE5v
ZGUqIGZpbHRlck5vZGUpCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0g
SlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fZmlsdGVyLCBh
cmdzKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBtX2ZpbHRlci5nZXQoKSwgYXJncyk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29u
ZGl0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRp
b24uaAppbmRleCBiOTY1MzRhMGNmNGUzOTJlZGEwMzMxMDQ4ZmI3ZjFjZTA4Zjc0N2NkLi4xNGIw
YzFkMjVhZmM2ZWQ1MmJlYjYzNTAxMDAxZmIwZjdjYmYzMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaApAQCAtNDEsNyArNDEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgc2hvcnQgYWNjZXB0Tm9k
ZShTY3JpcHRTdGF0ZSosIE5vZGUqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtB
Z2dyZWdhdGUoSlNDOjpNYXJrU3RhY2smKTsKIAotICAgICAgICBtdXRhYmxlIEpTQzo6SlNWYWx1
ZSBtX2ZpbHRlcjsKKyAgICAgICAgbXV0YWJsZSBKU0M6OkRlcHJlY2F0ZWRQdHI8SlNDOjpVbmtu
b3duPiBtX2ZpbHRlcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAppbmRleCBi
YjkwYzRmN2YwYjZkY2M5ZmRkNDViOTllMmY4YzE5NDliMmExNzE4Li5iYzc5ZTk5Njc5N2IxNjhi
Yzc5Njk0MDI3OWVhNjczNTdjOWMyOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJKU05vZGVGaWx0ZXIuaCIKIAorI2luY2x1ZGUgIkpTRE9N
V2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUZpbHRl
ckNvbmRpdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggNGVjZmU1ODUy
YzgzODQ0OTZhYTM4YzY3MTdiZmJhM2I0ZWU0NDQxNy4uZTE0ZmI2ZGE1YmQzOTc0ZWY4MWJhN2Q1
YmE3M2JiZjc5Yjk5NzE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDggKzM4LDggQEAgY29uc3QgQ2xhc3NJbmZv
IEpTT3B0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIk9wdGlvbkNvbnN0cnVjdG9yIiwgMCwg
MCwgMCB9OwogSlNPcHRpb25Db25zdHJ1Y3Rvcjo6SlNPcHRpb25Db25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25z
dHJ1Y3RvcldpdGhEb2N1bWVudChKU09wdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSksIGdsb2JhbE9iamVjdCkKIHsKLSAgICBw
dXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNIVE1MT3B0aW9uRWxl
bWVudFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKLSAgICBwdXRE
aXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNCksIFJlYWRPbmx5
IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU0hUTUxPcHRpb25FbGVtZW50
UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOworICAgIHB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVt
YmVyKDQpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7CiB9CiAKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEhUTUxPcHRpb25FbGVtZW50KEV4
ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCmluZGV4IDcyNzRjZDBmMmE0YWQyZTA2
ZjM0MGZjZDVhNmI1MjhmZWRmMjU2MjkuLjBmY2QxZWE3ZjJkNjJlNGM4ZWJlZGQ3YWE2ZmFlMjc4
ZmNiMzA0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVz
dWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcApAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVl
IEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAgICAgb2JqZWN0LT5w
dXREaXJlY3QoSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VTdHJpbmcobV9pbXBsLT5jb2x1bW5O
YW1lcygpW2ldKSksIGpzVmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgICAgIG9i
amVjdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBzdHJp
bmdUb1VTdHJpbmcobV9pbXBsLT5jb2x1bW5OYW1lcygpW2ldKSksIGpzVmFsdWUsIERvbnREZWxl
dGUgfCBSZWFkT25seSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9iamVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCmluZGV4
IDE2ZjE4ZDM1YTA2ZmEwYWRkYjBlM2IxN2NiMmUwNGMwZWQ1N2JhZDQuLmQ2NWJjZTI2MDEzOGY5
MTg2OTBlY2U4NmZkMjRjYmI0ODhlY2MwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcApAQCAtODQsNyArODQsNyBAQCB2
b2lkIFNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9yZShGcmFtZSogZnJhbWUpCiAgICAgICAg
IEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gaXRlci0+c2Vjb25kLmdldCgpOwogCiAg
ICAgICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93ID0gbV93aW5kb3dzLmdldCh3b3JsZCkpCi0g
ICAgICAgICAgICB3aW5kb3dTaGVsbC0+c2V0V2luZG93KHdpbmRvdyk7CisgICAgICAgICAgICB3
aW5kb3dTaGVsbC0+c2V0V2luZG93KHdpbmRvdy0+Z2xvYmFsRGF0YSgpLCB3aW5kb3cpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3coZnJhbWUtPmRv
bVdpbmRvdygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5j
cHAKaW5kZXggZTA2ZWNjYjdiNTI2NjJlOGNkYzdjMGNmMGQ0NmYzYTljZDJlZmY0ZC4uYjVjMWYw
MTE5NjQ2MDgzNTI2MmRjMjA5NjMzZDBiNzRjMzhhNjZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBib29s
IGhhbmRsZUV4Y2VwdGlvbihTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCiBib29sIFNjcmlwdEds
b2JhbE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwotICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PnB1dERpcmVjdChJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3Qo
KSk7CisgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNj
cmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB2
YWx1ZS5qc09iamVjdCgpKTsKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRl
KTsKIH0KIApAQCAtNzEsNyArNzEsNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdAogewogICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0
U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJl
Y3QoSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2Jh
bE9iamVjdCwgdmFsdWUpKTsKKyAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChzY3JpcHRTdGF0
ZS0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdG9KUyhzY3Jp
cHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogICAgIHJldHVybiBoYW5kbGVFeGNlcHRp
b24oc2NyaXB0U3RhdGUpOwogfQogCkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgU2NyaXB0R2xvYmFs
T2JqZWN0OjpzZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJ
bmplY3RlCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBnbG9iYWxP
YmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdG9KUyhzY3Jp
cHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworICAgIGdsb2JhbE9iamVjdC0+cHV0RGly
ZWN0KHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5h
bWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiAgICAgcmV0dXJu
IGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCmluZGV4IGIwMmE0YmIzODAwZDQ2NDE0NTYxMDRlZDUwOTVkNzk5MzEyYWQy
YWQuLmY3MjEzMzRjMWY3YTdkYjZlZmMwNTZhNWUxY2Y3NGU0MmI0N2Y2ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApA
QCAtMTA0MCwxNCArMTA0MCwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcHV0UHJvcGVydHkoSlNB
cnJheSogYXJyYXksIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgaWYgKGFycmF5LT5jYW5TZXRJbmRleChpbmRleCkpCi0gICAgICAgICAgICBhcnJheS0+c2V0
SW5kZXgoaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgICAgIGFycmF5LT5zZXRJbmRleChtX2V4ZWMt
Pmdsb2JhbERhdGEoKSwgaW5kZXgsIHZhbHVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
YXJyYXktPnB1dChtX2V4ZWMsIGluZGV4LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBwdXRQ
cm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgSlNW
YWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHByb3BlcnR5LCB2
YWx1ZSk7CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm9wZXJ0eSwgdmFsdWUpOwogICAgIH0KIAogICAgIGJvb2wgcmVhZEZpbGUoUmVmUHRyPEZpbGU+
JiBmaWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCBhYmVmMDRlODdmN2M2OGQ0OTAzNTgxNjA3NjZjNzhmOWQ4OWI5Yzli
Li40NmE0NGQxOTc3M2I0ZDc0ZTNiYzE3ZTUwZDIwZWRlOGY5MzIxZTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTcz
NSwxMyArMTczNSwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvclxuIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5k
b3ciICYmICRjbGFzc05hbWUgZXEgIkpTYmxhaCIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+
KHRoaXNPYmplY3QpLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0
YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KElkZW50aWZpZXIo
ZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0
aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZSJ9KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gb2JqZWN0XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVj
dChJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFz
c05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PCRjbGFzc05hbWUq
Pih0aGlzT2JqZWN0KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICRpbXBsVHlwZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxUeXBlKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwpAQCAtMTgyNCw5ICsxODI0LDkgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvclxuIik7CiAKICAgICAgICAgICAg
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRo
aXNPYmplY3QpLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2
YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
c3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTtcbiIp
OwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0
RGlyZWN0KElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05h
bWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmll
cihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuIik7CkBAIC0yOTQyLDExICsyOTQyLDExIEBAIHN1YiBHZW5l
cmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICA6
IERPTUNvbnN0cnVjdG9yT2JqZWN0KCR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpjcmVhdGVTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSksIGdsb2JhbE9iamVjdClcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgIGlmICgkaW50ZXJmYWNlTmFt
ZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0
RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC0+cHJv
dG90eXBlKCksIERvbnREZWxldGUgfCBSZWFkT25seSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCksIERvbnREZWxl
dGUgfCBSZWFkT25seSk7XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsICR7
cHJvdG9DbGFzc05hbWV9OjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBS
ZWFkT25seSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsICR7
cHJvdG9DbGFzc05hbWV9OjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBS
ZWFkT25seSk7XG4iKTsKICAgICB9Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERp
cmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigke251bWJlck9mY29u
c3RydWN0UGFyYW1ldGVyc30pLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7XG4i
KSBpZiAkbnVtYmVyT2Zjb25zdHJ1Y3RQYXJhbWV0ZXJzOworICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGVuZ3RoLCBqc051bWJlcigke251bWJlck9mY29uc3RydWN0UGFyYW1ldGVyc30pLCBSZWFk
T25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7XG4iKSBpZiAkbnVtYmVyT2Zjb25zdHJ1Y3RQ
YXJhbWV0ZXJzOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJib29sICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfcm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290
LmNwcAppbmRleCAzYzhiMzEzOWE5Y2FmZmVkNWFlZjkwZmFjZGNjZDIxNGRkZTM2OTg5Li4xMGY3
N2I0OTM0YTkzNjZmNzljZGU5YWJkODc2ZGEyYzY4NWNmOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9yb290LmNwcApAQCAtMTAxLDggKzEwMSw4IEBAIHZvaWQgUm9vdE9iamVjdDo6
aW52YWxpZGF0ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIHsKLSAgICAgICAgV2Vha0dDTWFw
PFJ1bnRpbWVPYmplY3QqLCBSdW50aW1lT2JqZWN0Kj46Oml0ZXJhdG9yIGVuZCA9IG1fcnVudGlt
ZU9iamVjdHMudW5jaGVja2VkRW5kKCk7Ci0gICAgICAgIGZvciAoV2Vha0dDTWFwPFJ1bnRpbWVP
YmplY3QqLCBSdW50aW1lT2JqZWN0Kj46Oml0ZXJhdG9yIGl0ID0gbV9ydW50aW1lT2JqZWN0cy51
bmNoZWNrZWRCZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgV2Vha0dDTWFwPFJ1
bnRpbWVPYmplY3QqLCBSdW50aW1lT2JqZWN0Pjo6aXRlcmF0b3IgZW5kID0gbV9ydW50aW1lT2Jq
ZWN0cy51bmNoZWNrZWRFbmQoKTsKKyAgICAgICAgZm9yIChXZWFrR0NNYXA8UnVudGltZU9iamVj
dCosIFJ1bnRpbWVPYmplY3Q+OjppdGVyYXRvciBpdCA9IG1fcnVudGltZU9iamVjdHMudW5jaGVj
a2VkQmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBpZiAobV9ydW50aW1l
T2JqZWN0cy5pc1ZhbGlkKGl0KSkKICAgICAgICAgICAgICAgICBpdC0+c2Vjb25kLT5pbnZhbGlk
YXRlKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX3Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaAppbmRleCA4
MjkwZTdjMzFlM2U4MTMxMTFmNTIwMTk2MDBlZDBiNTE5ZjFiMWRjLi5kZGU4YTQ4MDg1NDlhMDFk
YzUzMTMwYmMzZTljMjJjNWU2NDg4MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9yb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9v
dC5oCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgUHJvdGVjdGVkUHRyPEpTR2xvYmFs
T2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKIAogICAgIFByb3RlY3RDb3VudFNldCBtX3Byb3RlY3RD
b3VudFNldDsKLSAgICBXZWFrR0NNYXA8UnVudGltZU9iamVjdCosIFJ1bnRpbWVPYmplY3QqPiBt
X3J1bnRpbWVPYmplY3RzOyAvLyBSZWFsbHkgbmVlZCBhIFdlYWtHQ1NldCwgYnV0IHRoaXMgd2ls
bCBkby4KKyAgICBXZWFrR0NNYXA8UnVudGltZU9iamVjdCosIFJ1bnRpbWVPYmplY3Q+IG1fcnVu
dGltZU9iamVjdHM7IC8vIFJlYWxseSBuZWVkIGEgV2Vha0dDU2V0LCBidXQgdGhpcyB3aWxsIGRv
LgogCiAgICAgSGFzaFNldDxJbnZhbGlkYXRpb25DYWxsYmFjayo+IG1faW52YWxpZGF0aW9uQ2Fs
bGJhY2tzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZjNkOGU3N2U5YTE4ZDlhZTI3MWM0
MDM2OGU3ZDdmZjQ3MTgzZGFlMC4uYmU3ZTAwYTNlYjQzY2JjMzFmOWZjNGU5YWU4NmVhNzFkNTA5
MGUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTk0MCw3ICs5NDAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4pOyAvLyBFeGVjdXRlcyB0
aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCiAjaWYgVVNFKEpT
QykKLSAgICB0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFdlYkNvcmU6Ok5vZGUqLCBKU05vZGUqPiBK
U1dyYXBwZXJDYWNoZTsKKyAgICB0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFdlYkNvcmU6Ok5vZGUq
LCBKU05vZGU+IEpTV3JhcHBlckNhY2hlOwogICAgIHR5cGVkZWYgSGFzaE1hcDxET01XcmFwcGVy
V29ybGQqLCBKU1dyYXBwZXJDYWNoZSo+IEpTV3JhcHBlckNhY2hlTWFwOwogICAgIEpTV3JhcHBl
ckNhY2hlTWFwJiB3cmFwcGVyQ2FjaGVNYXAoKSB7IHJldHVybiBtX3dyYXBwZXJDYWNoZU1hcDsg
fQogICAgIEpTV3JhcHBlckNhY2hlKiBnZXRXcmFwcGVyQ2FjaGUoRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMGU1MzI5Yjc4MTEzMDM0ZWE1NmZlMjM0OWQ3ODAy
ODc3NGNlMjJjMC4uMWUyZGJhMmQ2M2FhZGIzYzUwMzc3NWE3YmM4YzM0OGE0NmZhODJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTAxLTI3ICBPbGl2ZXIgSHVudCAg
PG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ29udmVydCBtYXJrc3RhY2sgdG8gYSBzbG90IHZpc2l0b3IgQVBJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzIxOQorCisgICAg
ICAgIFVwZGF0ZSB0byBuZXcgbWFya2luZyBhcGkKKworICAgICAgICAqIFdlYlZpZXcvV2ViU2Ny
aXB0RGVidWdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0Q2FsbEZyYW1lIHNjb3Bl
Q2hhaW5dKToKKwogMjAxMS0wMS0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjc2ODkxLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0RlbGVnYXRl
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1t
CmluZGV4IDYzYTkxYTllMWYzOWI0ODA2NzRlZWFjYTM1MzBjNDI5NGNjYWQ2OTYuLjk2YTFhNDI3
MWMzZDUzZmViMjNjYjk1Y2U4MzljYzdjYTRlYWE0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0KQEAgLTE4NCw5ICsxODQs
OSBAQCBOU1N0cmluZyAqIGNvbnN0IFdlYlNjcmlwdEVycm9yTGluZU51bWJlcktleSA9IEAiV2Vi
U2NyaXB0RXJyb3JMaW5lTnVtYmVyIjsKIAogICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBz
Y29wZUNoYWluLT5lbmQoKTsKICAgICBmb3IgKFNjb3BlQ2hhaW5JdGVyYXRvciBpdCA9IHNjb3Bl
Q2hhaW4tPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gKml0OworICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gaXQtPmdldCgpOwogICAgICAg
ICBpZiAob2JqZWN0LT5pc0FjdGl2YXRpb25PYmplY3QoKSkKLSAgICAgICAgICAgIG9iamVjdCA9
IG5ldyAoc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSkgRGVidWdnZXJBY3RpdmF0aW9uKG9iamVjdCk7
CisgICAgICAgICAgICBvYmplY3QgPSBuZXcgKHNjb3BlQ2hhaW4tPmdsb2JhbERhdGEpIERlYnVn
Z2VyQWN0aXZhdGlvbigqc2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSwgb2JqZWN0KTsKICAgICAgICAg
W3Njb3BlcyBhZGRPYmplY3Q6W3NlbGYgX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOm9iamVjdF1d
OwogICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>