<?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>122940</bug_id>
          
          <creation_ts>2013-10-16 21:49:57 -0700</creation_ts>
          <short_desc>A CodeBlock&apos;s StructureStubInfos shouldn&apos;t be in a Vector that we search using code origins and machine code PCs</short_desc>
          <delta_ts>2013-10-18 19:18:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>122941</dependson>
          <blocked>122939</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940646</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-16 21:49:57 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941009</commentid>
    <comment_count>1</comment_count>
      <attachid>214520</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-17 15:23:56 -0700</bug_when>
    <thetext>Created attachment 214520
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941085</commentid>
    <comment_count>2</comment_count>
      <attachid>214540</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-17 19:49:31 -0700</bug_when>
    <thetext>Created attachment 214540
getting close

Still have a bunch of gluing to do...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941088</commentid>
    <comment_count>3</comment_count>
      <attachid>214541</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-17 20:38:15 -0700</bug_when>
    <thetext>Created attachment 214541
sort of starting to compile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941100</commentid>
    <comment_count>4</comment_count>
      <attachid>214543</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-17 23:55:20 -0700</bug_when>
    <thetext>Created attachment 214543
it compiles!

And of course it doesn&apos;t work at all, yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941214</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-18 08:48:18 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=214543) [details]
&gt; it compiles!
&gt; 
&gt; And of course it doesn&apos;t work at all, yet.

Details, details.

RS=me

:D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941224</commentid>
    <comment_count>6</comment_count>
      <attachid>214543</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-18 09:18:17 -0700</bug_when>
    <thetext>Comment on attachment 214543
it compiles!

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

&gt; Source/WTF/wtf/BagToHashMap.h:35
&gt; +void toHashMap(Bag&lt;ElementType&gt;&amp; bag, KeyGetterFunctor&amp; getKey, HashMap&lt;KeyType, ElementType*&gt;&amp; result)

const Bag&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941418</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-18 18:15:04 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 214543 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214543&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/BagToHashMap.h:35
&gt; &gt; +void toHashMap(Bag&lt;ElementType&gt;&amp; bag, KeyGetterFunctor&amp; getKey, HashMap&lt;KeyType, ElementType*&gt;&amp; result)
&gt; 
&gt; const Bag&amp;?

Then I&apos;d have to add const versions of Bag&apos;s iterator.

If we ever find this to be a worthwhile thing to do then we can do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941420</commentid>
    <comment_count>8</comment_count>
      <attachid>214627</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-18 18:19:06 -0700</bug_when>
    <thetext>Created attachment 214627
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941421</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-18 18:20:21 -0700</bug_when>
    <thetext>Attachment 214627 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.h&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeOrigin.h&apos;, u&apos;Source/JavaScriptCore/bytecode/GetByIdStatus.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/GetByIdStatus.h&apos;, u&apos;Source/JavaScriptCore/bytecode/PutByIdStatus.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/PutByIdStatus.h&apos;, u&apos;Source/JavaScriptCore/bytecode/StructureStubInfo.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCompiler.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCompiler.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/CCallHelpers.h&apos;, u&apos;Source/JavaScriptCore/jit/JIT.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JIT.h&apos;, u&apos;Source/JavaScriptCore/jit/JITInlines.h&apos;, u&apos;Source/JavaScriptCore/jit/JITOperations.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITOperations.h&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/Repatch.cpp&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/GNUmakefile.list.am&apos;, u&apos;Source/WTF/WTF.vcxproj/WTF.vcxproj&apos;, u&apos;Source/WTF/WTF.xcodeproj/project.pbxproj&apos;, u&apos;Source/WTF/wtf/BagToHashMap.h&apos;, u&apos;Source/WTF/wtf/CMakeLists.txt&apos;]&quot; exit_code: 1
Source/JavaScriptCore/bytecode/GetByIdStatus.h:74:  The parameter name &quot;map&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/bytecode/CodeBlock.h:929:  The parameter name &quot;map&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 31 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>941423</commentid>
    <comment_count>10</comment_count>
      <attachid>214628</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-18 18:40:38 -0700</bug_when>
    <thetext>Created attachment 214628
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941424</commentid>
    <comment_count>11</comment_count>
      <attachid>214629</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-18 18:42:22 -0700</bug_when>
    <thetext>Created attachment 214629
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941428</commentid>
    <comment_count>12</comment_count>
      <attachid>214629</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-18 18:53:25 -0700</bug_when>
    <thetext>Comment on attachment 214629
the patch

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

&gt; Source/WTF/wtf/CMakeLists.txt:7
&gt; +    BatToHashMap.h

Halloween already?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941435</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-18 19:18:51 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/157660</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214520</attachid>
            <date>2013-10-17 15:23:56 -0700</date>
            <delta_ts>2013-10-17 19:49:31 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>51757</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxNTc1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIGR1
bXBDaGFpbihQcmludFN0cmVhbSYgb3V0LCAKIH0KICNlbmRpZgogCi12b2lkIENvZGVCbG9jazo6
cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVj
LCBpbnQgbG9jYXRpb24pCit2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMo
UHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIFN0dWJJbmZv
TWFwJiBtYXApCiB7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC0zNTAsOCArMzUwLDggQEAgdm9pZCBDb2RlQmxv
Y2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKAogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUKQot
ICAgIGlmIChudW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKSB7Ci0gICAgICAgIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbyA9IGdldFN0dWJJbmZvKGxvY2F0aW9uKTsKKyAgICBpZiAoIW1f
c3R1YkluZm9zLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8gPSAqbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSk7CiAgICAgICAgIGlmIChzdHViSW5m
by5zZWVuKSB7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KCIpOwogICAgICAgICAgICAg
CkBAIC01NTIsMTEgKzU1Miw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0KICAgICAgICAgfSB3aGlsZSAoaSA8IGNvdW50KTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
SklUKQotICAgIGlmICghbV9zdHJ1Y3R1cmVTdHViSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICBv
dXQucHJpbnRmKCJcblN0cnVjdHVyZXM6XG4iKTsKLSNlbmRpZgotCiAgICAgaWYgKG1fcmFyZURh
dGEgJiYgIW1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIG91dC5wcmludGYoIlxuRXhjZXB0aW9uIEhhbmRsZXJzOlxuIik7CiAgICAgICAgIHVuc2ln
bmVkIGkgPSAwOwpAQCAtMTQxMyw3ICsxNDA4LDYgQEAgc3RhdGljIEhhc2hTZXQ8Q29kZUJsb2Nr
Kj4gbGl2ZUNvZGVCbG9jawogCiAjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8p
IFwKICAgICBtYWNybyhpbnN0cnVjdGlvbnMpIFwKLSAgICBtYWNybyhzdHJ1Y3R1cmVTdHViSW5m
b3MpIFwKICAgICBtYWNybyhjYWxsTGlua0luZm9zKSBcCiAgICAgbWFjcm8obGlua2VkQ2FsbGVy
TGlzdCkgXAogICAgIG1hY3JvKGlkZW50aWZpZXJzKSBcCkBAIC0yNTc4LDcgKzI1NzIsNiBAQCB2
b2lkIENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvCiB2b2lkIENvZGVCbG9jazo6
c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogewogI2lmIEVOQUJMRShKSVQpCi0g
ICAgbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2hyaW5rVG9GaXQoKTsKICAgICBtX2NhbGxMaW5rSW5m
b3Muc2hyaW5rVG9GaXQoKTsKICNlbmRpZgogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAg
LTMwOTYsMTYgKzMwODksNiBAQCB2b2lkIENvZGVCbG9jazo6c2V0T3B0aW1pemF0aW9uVGhyZXNo
b2xkCiAKICNlbmRpZgogICAgIAotc3RhdGljIGJvb2wgc3RydWN0dXJlU3R1YkluZm9MZXNzVGhh
bihjb25zdCBTdHJ1Y3R1cmVTdHViSW5mbyYgYSwgY29uc3QgU3RydWN0dXJlU3R1YkluZm8mIGIp
Ci17Ci0gICAgcmV0dXJuIGEuY2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkg
PCBiLmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpOwotfQotCi12b2lkIENv
ZGVCbG9jazo6c29ydFN0cnVjdHVyZVN0dWJJbmZvcygpCi17Ci0gICAgc3RkOjpzb3J0KG1fc3Ry
dWN0dXJlU3R1YkluZm9zLmJlZ2luKCksIG1fc3RydWN0dXJlU3R1YkluZm9zLmVuZCgpLCBzdHJ1
Y3R1cmVTdHViSW5mb0xlc3NUaGFuKTsKLX0KLQogdWludDMyX3QgQ29kZUJsb2NrOjphZGp1c3Rl
ZEV4aXRDb3VudFRocmVzaG9sZCh1aW50MzJfdCBkZXNpcmVkVGhyZXNob2xkKQogewogICAgIEFT
U0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNTc1OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MCwxOCArMTcwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNp
Z25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbik7CiAKICNpZiBFTkFCTEUoSklUKQotCi0gICAg
U3RydWN0dXJlU3R1YkluZm8mIGdldFN0dWJJbmZvKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxTdHJ1Y3R1cmVTdHVi
SW5mbywgdm9pZCo+KG1fc3RydWN0dXJlU3R1YkluZm9zLCBtX3N0cnVjdHVyZVN0dWJJbmZvcy5z
aXplKCksIHJldHVybkFkZHJlc3MudmFsdWUoKSwgZ2V0U3RydWN0dXJlU3R1YkluZm9SZXR1cm5M
b2NhdGlvbikpOwotICAgIH0KLQotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBnZXRTdHViSW5mbyh1
bnNpZ25lZCBieXRlY29kZUluZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuICooYmluYXJ5U2Vh
cmNoPFN0cnVjdHVyZVN0dWJJbmZvLCB1bnNpZ25lZD4obV9zdHJ1Y3R1cmVTdHViSW5mb3MsIG1f
c3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCwgZ2V0U3RydWN0dXJlU3R1
YkluZm9CeXRlY29kZUluZGV4KSk7Ci0gICAgfQorICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBhZGRT
dHViSW5mbygpOworICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIGJlZ2luKCkg
eyByZXR1cm4gbV9zdHViSW5mb3MuYmVnaW4oKTsgfQorICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5m
bz46Oml0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fc3R1YkluZm9zLmVuZCgpOyB9CiAKICAgICB2
b2lkIHJlc2V0U3R1YihTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIAorICAgIHZvaWQgZ2V0U3R1
YkluZm9NYXAoU3R1YkluZm9NYXAmIG1hcCk7CiAKICAgICBCeVZhbEluZm8mIGdldEJ5VmFsSW5m
byh1bnNpZ25lZCBieXRlY29kZUluZGV4KQogICAgIHsKQEAgLTM3NywxMSArMzcyLDYgQEAgcHVi
bGljOgogICAgIFN0cmluZyBuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKTsKIAogI2lm
IEVOQUJMRShKSVQpCi0gICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXpl
X3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9Ci0gICAgdm9pZCBz
b3J0U3RydWN0dXJlU3R1YkluZm9zKCk7Ci0gICAgc2l6ZV90IG51bWJlck9mU3RydWN0dXJlU3R1
YkluZm9zKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6ZSgpOyB9Ci0g
ICAgU3RydWN0dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKGludCBpbmRleCkgeyByZXR1
cm4gbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaW5kZXhdOyB9Ci0KICAgICB2b2lkIHNldE51bWJlck9m
QnlWYWxJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX2J5VmFsSW5mb3MuZ3JvdyhzaXplKTsgfQogICAg
IHNpemVfdCBudW1iZXJPZkJ5VmFsSW5mb3MoKSBjb25zdCB7IHJldHVybiBtX2J5VmFsSW5mb3Mu
c2l6ZSgpOyB9CiAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8oc2l6ZV90IGluZGV4KSB7IHJldHVy
biBtX2J5VmFsSW5mb3NbaW5kZXhdOyB9CkBAIC05NDIsNyArOTMyLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaW50QmluYXJ5T3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRp
b24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50
Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rp
b24qLCBjb25zdCBJbnN0cnVjdGlvbiomLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKTsK
ICAgICB2b2lkIHByaW50R2V0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxv
Y2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomKTsKLSAgICB2b2lkIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uKTsKKyAgICB2b2lk
IHByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxv
Y2F0aW9uLCBTdHViSW5mb01hcCYgbWFwKTsKICAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1w
Q2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwogICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJl
YW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0
IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAg
ICB2b2lkIHByaW50UHV0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0
aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7CkBAIC0xMDMxLDcgKzEw
MjEsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogI2lmIEVOQUJMRShK
SVQpCi0gICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZvczsK
KyAgICBCYWc8U3RydWN0dXJlU3R1YkluZm8+IG1fc3R1YkluZm9zOwogICAgIFZlY3RvcjxCeVZh
bEluZm8+IG1fYnlWYWxJbmZvczsKICAgICBWZWN0b3I8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5r
SW5mb3M7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50
aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdDYWxsczsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShyZXZp
c2lvbiAxNTc1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk0LDE1ICsyOTQsMTIgQEAg
c3RydWN0IFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICBSZWZQdHI8V2F0Y2hwb2ludHNPblN0cnVj
dHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKIH07CiAKLWlubGluZSB2b2lkKiBnZXRTdHJ1Y3R1
cmVTdHViSW5mb1JldHVybkxvY2F0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHJ1Y3R1cmVTdHVi
SW5mbykKK2lubGluZSBDb2RlT3JpZ2luIGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbihT
dHJ1Y3R1cmVTdHViSW5mbyYgc3RydWN0dXJlU3R1YkluZm8pCiB7Ci0gICAgcmV0dXJuIHN0cnVj
dHVyZVN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAg
ICByZXR1cm4gc3RydWN0dXJlU3R1YkluZm8uY29kZU9yaWdpbjsKIH0KIAotaW5saW5lIHVuc2ln
bmVkIGdldFN0cnVjdHVyZVN0dWJJbmZvQnl0ZWNvZGVJbmRleChTdHJ1Y3R1cmVTdHViSW5mbyog
c3RydWN0dXJlU3R1YkluZm8pCi17Ci0gICAgcmV0dXJuIHN0cnVjdHVyZVN0dWJJbmZvLT5jb2Rl
T3JpZ2luLmJ5dGVjb2RlSW5kZXg7Ci19Cit0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgU3Ry
dWN0dXJlU3R1YkluZm8qPiBTdHViSW5mb01hcDsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE1NzU5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg2LDIwICs0
ODYsMjAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICNlbmRpZgogfQog
Ci1BTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvOjpjb3B5VG9T
dHViSW5mbyhTdHJ1Y3R1cmVTdHViSW5mbyYgaW5mbywgTGlua0J1ZmZlciAmbGlua0J1ZmZlcikK
K0FMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0
dWJJbmZvKExpbmtCdWZmZXIgJmxpbmtCdWZmZXIpCiB7CiAgICAgQVNTRVJUKGJ5dGVjb2RlSW5k
ZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBpbmZvLmNv
ZGVPcmlnaW4gPSBDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpOwotICAgIGluZm8uY2FsbFJldHVy
bkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGNhbGxSZXR1cm5Mb2NhdGlvbik7Cisg
ICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpOworICAg
IHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY2Fs
bFJldHVybkxvY2F0aW9uKTsKIAotICAgIGluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCA9
IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIobGlua0J1ZmZlci5sb2Nh
dGlvbk9mKHN0cnVjdHVyZVRvQ29tcGFyZSksIGluZm8uY2FsbFJldHVybkxvY2F0aW9uKTsKLSAg
ICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlm
ZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2Yoc3RydWN0dXJlQ2hlY2spKTsKKyAgICBzdHViSW5mby0+cGF0Y2guZGVsdGFD
aGVja0ltbVRvQ2FsbCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIo
bGlua0J1ZmZlci5sb2NhdGlvbk9mKHN0cnVjdHVyZVRvQ29tcGFyZSksIHN0dWJJbmZvLT5jYWxs
UmV0dXJuTG9jYXRpb24pOworICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENo
ZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+
Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlQ2hlY2sp
KTsKICAgICAKLSAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBNYWNyb0Fzc2Vt
Ymxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YoY29sZFBhdGhCZWdpbikpOwotICAgIGluZm8ucGF0Y2guZGVs
dGFDYWxsVG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihp
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRvbmUpKTsKLSAg
ICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlm
ZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOworICAgIHN0dWJJbmZvLT5wYXRjaC5k
ZWx0YUNhbGxUb1Nsb3dDYXNlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
Y29sZFBhdGhCZWdpbikpOworICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb0RvbmUgPSBN
YWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0
dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihkb25lKSk7CisgICAgc3R1YkluZm8t
PnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIu
bG9jYXRpb25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAgICAgCi0gICAgaW5mby5wYXRjaC5i
YXNlR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBH
UFJJbmZvOjpyZWdUMDsKIAogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAgICAgdXNl
ZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDApOwpAQCAtNTA3LDM3ICs1MDcsMzcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogI2lmIFVTRShKU1ZBTFVFNjQp
IC8vIEpTVkFMVUUgY2FzZXMKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgR2V0QnlJ
ZDoKLSAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlID0gTWFjcm9Bc3Nl
bWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwg
bGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7Ci0gICAgICAgIGlu
Zm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICAgICAgc3R1YkluZm8tPnBh
dGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJl
dHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9j
YXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbCkpOworICAgICAgICBzdHViSW5mby0+cGF0Y2gu
dmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQdXRC
eUlkOgotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fz
c2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKLSAgICAgICAg
aW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QxOworICAgICAgICBzdHViSW5mby0+
cGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKHB1dERpc3BsYWNlbWVudExhYmVsKSk7CisgICAgICAgIHN0dWJJbmZvLT5wYXRj
aC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QxOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChH
UFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICNlbHNlIC8vIEpTVkFMVUUg
Y2FzZXMKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgR2V0QnlJZDoKLSAgICAgICAg
aW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsMikpOwotICAgICAgICBpbmZvLnBhdGNo
LmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsMSkpOwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVl
R1BSID0gR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgIGluZm8ucGF0Y2gudmFsdWVUYWdHUFIgPSBH
UFJJbmZvOjpyZWdUMTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvVGFnTG9h
ZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJ
bmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihnZXREaXNwbGFj
ZW1lbnRMYWJlbDIpKTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvUGF5bG9h
ZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihz
dHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlz
cGxhY2VtZW50TGFiZWwxKSk7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IEdQ
UkluZm86OnJlZ1QwOworICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVUYWdHUFIgPSBHUFJJ
bmZvOjpyZWdUMTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDEpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5SWQ6Ci0gICAgICAgIGluZm8ucGF0Y2guZGVs
dGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2Vl
bkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihw
dXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKLSAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1Bh
eWxvYWRMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQ
dHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNw
bGFjZW1lbnRMYWJlbDEpKTsKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86
OnJlZ1QyOwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVlVGFnR1BSID0gR1BSSW5mbzo6cmVnVDM7
CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlID0gTWFj
cm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+Y2FsbFJldHVy
bkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwyKSk7
CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSA9
IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxS
ZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERpc3BsYWNlbWVudExhYmVs
MSkpOworICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMjsK
KyAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlVGFnR1BSID0gR1BSSW5mbzo6cmVnVDM7CiAg
ICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgdXNlZFJl
Z2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICBicmVhazsKICAgICB9CiAjZW5k
aWYgLy8gSlNWQUxVRSBjYXNlcwogICAgIAotICAgIGluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyA9
IHVzZWRSZWdpc3RlcnM7Ci0gICAgaW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gdHJ1ZTsK
KyAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IHVzZWRSZWdpc3RlcnM7CisgICAg
c3R1YkluZm8tPnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSB0cnVlOwogfQogCiBDb21waWxhdGlv
blJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkK
QEAgLTczMiw5ICs3MzIsOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxl
KEpJCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGl0ZXItPmZyb20sIEZ1bmN0aW9uUHRy
KGl0ZXItPnRvKSk7CiAgICAgfQogCi0gICAgbV9jb2RlQmxvY2stPnNldE51bWJlck9mU3RydWN0
dXJlU3R1YkluZm9zKG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uc2l6ZSgpKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5m
by5zaXplKCk7ICsraSkKLSAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1tp
XS5jb3B5VG9TdHViSW5mbyhtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8oaSksIHBhdGNo
QnVmZmVyKTsKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1tpXS5jb3B5
VG9TdHViSW5mbyhwYXRjaEJ1ZmZlcik7CiAgICAgbV9jb2RlQmxvY2stPnNldE51bWJlck9mQnlW
YWxJbmZvcyhtX2J5VmFsQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fYnlWYWxDb21waWxhdGlvbkluZm8uc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgQ29kZUxvY2F0aW9uSnVtcCBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXAocGF0Y2hC
dWZmZXIubG9jYXRpb25PZihtX2J5VmFsQ29tcGlsYXRpb25JbmZvW2ldLmJhZFR5cGVKdW1wKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1NzU5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw2ICsxNzMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMy
IHB1dERpc3BsYWNlbWVudExhYmVsMTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJl
bDMyIHB1dERpc3BsYWNlbWVudExhYmVsMjsKICNlbmRpZgorICAgICAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm87CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIFByb3BlcnR5
U3R1YkNvbXBpbGF0aW9uSW5mbygpCkBAIC0yMzYsMTAgKzIzNywxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzbG93Q2FzZUluZm8oTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGNvbGRQYXRoQmVnaW4sIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGwpCisgICAgICAgIHZvaWQgc2xvd0Nhc2VJbmZvKE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBjb2xk
UGF0aEJlZ2luLCBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsLCBTdHJ1Y3R1cmVTdHViSW5mbyog
aW5mbykKICAgICAgICAgewogICAgICAgICAgICAgY2FsbFJldHVybkxvY2F0aW9uID0gY2FsbDsK
ICAgICAgICAgICAgIHRoaXMtPmNvbGRQYXRoQmVnaW4gPSBjb2xkUGF0aEJlZ2luOworICAgICAg
ICAgICAgc3R1YkluZm8gPSBpbmZvOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBzbG93Q2Fz
ZUluZm8oTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCkKQEAgLTI0Nyw3ICsyNDksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIGNhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGw7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGNvcHlUb1N0dWJJbmZvKFN0cnVjdHVyZVN0dWJJbmZvJiBp
bmZvLCBMaW5rQnVmZmVyICZwYXRjaEJ1ZmZlcik7CisgICAgICAgIHZvaWQgY29weVRvU3R1Yklu
Zm8oTGlua0J1ZmZlciAmcGF0Y2hCdWZmZXIpOwogICAgIH07CiAKICAgICBzdHJ1Y3QgQnlWYWxD
b21waWxhdGlvbkluZm8gewpAQCAtNzc4LDkgKzc4MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VD
LCBpbnQsIEpTQ2VsbCopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VKLCBpbnQsIEdQUlJlZyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihXaXRoUHJvZmlsZVRh
ZywgSl9KSVRPcGVyYXRpb25fRUpJLCBpbnQsIEdQUlJlZywgU3RyaW5nSW1wbCopOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJ
VE9wZXJhdGlvbl9FU3NpSkksIGludCwgU3RydWN0dXJlU3R1YkluZm8qLCBHUFJSZWcsIFN0cmlu
Z0ltcGwqKTsKICNlbHNlCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oV2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VKSSwgaW50LCBHUFJSZWcsIEdQUlJl
ZywgU3RyaW5nSW1wbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FU3NpSkksIGludCwgU3RydWN0dXJl
U3R1YkluZm8qLCBHUFJSZWcsIEdQUlJlZywgU3RyaW5nSW1wbCopOwogI2VuZGlmCiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpJZGMs
IGludCwgR1BSUmVnLCBjb25zdCBJZGVudGlmaWVyKik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKLCBpbnQsIEdQUlJlZywgR1BS
UmVnKTsKQEAgLTgxMSw5ICs4MTMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0ZXJJ
RCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRUpJZEpKLCBSZWdpc3RlcklELCBjb25zdCBJZGVudGlmaWVyKiwgUmVnaXN0ZXJJRCwg
UmVnaXN0ZXJJRCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpJLCBSZWdpc3RlcklELCBSZWdp
c3RlcklELCBTdHJpbmdJbXBsKik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSwgU3RydWN0dXJlU3R1YkluZm8qLCBSZWdp
c3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CiAjZWxzZQotICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkksIFJlZ2lzdGVy
SUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFN0cmluZ0ltcGwqKTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
U3NpSkpJLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lz
dGVySUQsIFJlZ2lzdGVySUQsIFN0cmluZ0ltcGwqKTsKICNlbmRpZgogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkosIFJlZ2lzdGVy
SUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKWkosIFJlZ2lzdGVySUQsIGludDMyX3Qs
IFJlZ2lzdGVySUQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJ
KHJldmlzaW9uIDE1NzU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsOSArMjAwLDkgQEAgQUxXQVlTX0lOTElORSBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkkgb3BlcmF0aW9uLCBSZWdp
c3RlcklEIHJlZ09wMSwgUmVnaXN0ZXJJRCByZWdPcDIsIFN0cmluZ0ltcGwqIHVpZCkKK0FMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFJl
Z2lzdGVySUQgcmVnT3AxLCBSZWdpc3RlcklEIHJlZ09wMiwgU3RyaW5nSW1wbCogdWlkKQogewot
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShyZWdPcDEsIHJlZ09wMiwgVHJ1c3RlZElt
bVB0cih1aWQpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihzdHViSW5mbyksIHJlZ09wMSwgcmVnT3AyLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwogICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKQEAgLTIx
Miw5ICsyMTIsOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIAot
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSklU
OjpXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgaW50IGRzdCwg
R1BSUmVnIGFyZzEsIFN0cmluZ0ltcGwqIHVpZCkKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpJVDo6V2l0aFByb2ZpbGVUYWcsIEpfSklUT3Bl
cmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIGludCBkc3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgR1BSUmVnIGFyZzEsIFN0cmluZ0ltcGwqIHVpZCkKIHsKLSAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJ
bW1QdHIodWlkKSk7CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUob3BlcmF0aW9uLCBkc3QpOwogfQogCkBAIC01MzUsMTMg
KzUzNSwxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIAotQUxX
QVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRUpKSSBvcGVyYXRpb24sIFJlZ2lzdGVySUQgcmVnT3AxVGFnLCBSZWdpc3RlcklE
IHJlZ09wMVBheWxvYWQsIFJlZ2lzdGVySUQgcmVnT3AyVGFnLCBSZWdpc3RlcklEIHJlZ09wMlBh
eWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFJlZ2lzdGVySUQgcmVnT3AxVGFnLCBSZWdpc3Rl
cklEIHJlZ09wMVBheWxvYWQsIFJlZ2lzdGVySUQgcmVnT3AyVGFnLCBSZWdpc3RlcklEIHJlZ09w
MlBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICNpZiBDUFUoU0g0KQogICAgIC8vIFdlIGhh
dmUgdG8gcHV0IHVpZCBpbiB0aGUgNHRoIGFyZ3VtZW50IHJlZ2lzdGVyIChyNykgYXMgNjQtYml0
IHZhbHVlIHJlZ09wMiB3aWxsIGJlIHB1dCBvbiBzdGFjayBmb3Igc2g0IGFyY2hpdGVjdXJlLgot
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShyZWdPcDFQYXlsb2FkLCByZWdPcDFUYWcs
IFRydXN0ZWRJbW1QdHIodWlkKSwgcmVnT3AyUGF5bG9hZCwgcmVnT3AyVGFnKTsKKyAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIHJlZ09wMVBh
eWxvYWQsIHJlZ09wMVRhZywgVHJ1c3RlZEltbVB0cih1aWQpLCByZWdPcDJQYXlsb2FkLCByZWdP
cDJUYWcpOwogI2Vsc2UKLSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJ
VF9EVU1NWV9BUkcgcmVnT3AxUGF5bG9hZCwgcmVnT3AxVGFnLCByZWdPcDJQYXlsb2FkLCByZWdP
cDJUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCByZWdPcDFQYXlsb2FkLCByZWdPcDFUYWcsIHJl
Z09wMlBheWxvYWQsIHJlZ09wMlRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKICNlbmRpZgogICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDE1NzU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29uc3RydWN0CiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1wbCogdWlkKQorRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CkBAIC0xMjQsNTEgKzEyNCw0NiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0
KGV4ZWMsIGlkZW50LCBzbG90KSk7CiB9CiAKLUpfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVS
Tl9BRERSRVNTX0VKSShvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KTsKLUVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNz
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1wbCogdWlkLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAg
SWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8u
YWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVl
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3Qp
OwogCi0gICAgaWYgKGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1Yklu
Zm8uYWNjZXNzVHlwZSkpCi0gICAgICAgIGJ1aWxkR2V0QnlJRExpc3QoZXhlYywgYmFzZVZhbHVl
LCBpZGVudCwgc2xvdCwgc3R1YkluZm8pOworICAgIGlmIChhY2Nlc3NUeXBlID09IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKKyAgICAgICAgYnVpbGRHZXRC
eUlETGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8pOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1KX0ZVTkNUSU9OX1dSQVBQRVJf
V0lUSF9SRVRVUk5fQUREUkVTU19FSkkob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplV2l0aFJldHVy
bkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBs
KiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBs
KiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
ICAgICBJZGVudGlmaWVyIGlkZW50ID0gdWlkLT5pc0VtcHR5VW5pcXVlKCkgPyBJZGVudGlmaWVy
Ojpmcm9tKFByaXZhdGVOYW1lKHVpZCkpIDogSWRlbnRpZmllcih2bSwgdWlkKTsKLSAgICBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8o
cmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5n
ZXQoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlID09IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKSB7Ci0gICAgICAgIGlmIChz
dHViSW5mby5zZWVuKQotICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVl
LCBpZGVudCwgc2xvdCwgc3R1YkluZm8pOworICAgIGlmIChhY2Nlc3NUeXBlID09IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkgeworICAgICAgICBpZiAoc3R1
YkluZm8tPnNlZW4pCisgICAgICAgICAgICByZXBhdGNoR2V0QnlJRChleGVjLCBiYXNlVmFsdWUs
IGlkZW50LCBzbG90LCAqc3R1YkluZm8pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHVi
SW5mby5zZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKICAg
ICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUpfRlVOQ1RJ
T05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VDSShvcGVyYXRpb25Jbk9wdGltaXplKTsK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZVdpdGhSZXR1
cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBTdHJpbmdJbXBsKiBrZXks
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgSlNDZWxsKiBiYXNlLCBTdHJpbmdJbXBsKiBrZXksIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTE3OCwxOSArMTczLDE4
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4KICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCi0gICAgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZv
KHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAog
ICAgIElkZW50aWZpZXIgaWRlbnQodm0sIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFz
ZSk7CiAgICAgYm9vbCByZXN1bHQgPSBhc09iamVjdChiYXNlKS0+Z2V0UHJvcGVydHlTbG90KGV4
ZWMsIGlkZW50LCBzbG90KTsKICAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChhY2Nlc3NUeXBlID09
IHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIFJFTEVBU0VfQVNTRVJUKGFjY2Vzc1R5cGUgPT0g
c3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogICAgIAotICAgIGlmIChzdHViSW5mby5zZWVuKQotICAg
ICAgICByZXBhdGNoSW4oZXhlYywgYmFzZSwgaWRlbnQsIHJlc3VsdCwgc2xvdCwgc3R1YkluZm8p
OworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaEluKGV4ZWMsIGJhc2Us
IGlkZW50LCByZXN1bHQsIHNsb3QsICpzdHViSW5mbyk7CiAgICAgZWxzZQotICAgICAgICBzdHVi
SW5mby5zZWVuID0gdHJ1ZTsKKyAgICAgICAgc3R1YkluZm8tPnNlZW4gPSB0cnVlOwogICAgIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQpAQCAtMjA5
LDcgKzIwMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNlKS0+aGFzUHJv
cGVydHkoZXhlYywgaWRlbnQpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2VuZXJpY0luKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBFbmNvZGVk
SlNWYWx1ZSBrZXkpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlbmVy
aWNJbihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiBiYXNlLCBF
bmNvZGVkSlNWYWx1ZSBrZXkpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yMzUsNyArMjI5LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY2FsbEdldHRlcihleGVjLCBiYXNlLCBnZXR0ZXJTZXR0ZXIpKTsKIH0KIAot
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBTdHJpbmdJbXBsKiB1aWQpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0
cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlk
KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwpAQCAtMjQ1LDcgKzIzOSw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKICAgICBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2Up
LnB1dChleGVjLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwog
fQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJp
bmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yNTUsNyArMjQ5LDcgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAogICAgIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSkucHV0KGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KSwgc2xvdCk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTI2NSw3
ICsyNTksNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiAgICAg
YXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSktPnB1dERpcmVjdChleGVjLT52
bSgpLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQogCi12
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yNzUsMTUgKzI2OSwxMyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiAgICAgYXNPYmplY3Qo
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSktPnB1dERpcmVjdChleGVjLT52bSgpLCBpZGVu
dCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQogCi1WX0ZVTkNUSU9O
X1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkpJKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RP
cHRpbWl6ZSk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGlt
aXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVp
ZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCkt
PmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSk7CkBAIC0yOTEsMjQgKzI4MywyMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZFN0cmljCiAgICAgCiAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNs
b3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIGlmIChzdHViSW5mby5zZWVuKQotICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBi
YXNlVmFsdWUsIGlkZW50LCBzbG90LCBzdHViSW5mbywgTm90RGlyZWN0KTsKKyAgICBpZiAoc3R1
YkluZm8tPnNlZW4pCisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRl
bnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKICAgICBlbHNlCi0gICAgICAgIHN0dWJJ
bmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiB9CiAKLVZf
RlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkkob3BlcmF0aW9uUHV0QnlJ
ZE5vblN0cmljdE9wdGltaXplKTsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
Tm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmlu
Z0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCiAgICAgSWRlbnRp
ZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBl
eGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNz
VHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlw
ZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTMxNiwyNCArMzA2LDIyIEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKICAgICAKICAgICBiYXNlVmFsdWUucHV0KGV4ZWMs
IGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vzc1R5
cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0
Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBOb3REaXJl
Y3QpOworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhl
YywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBOb3REaXJlY3QpOwogICAgIGVs
c2UKLSAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7CisgICAgICAgIHN0dWJJbmZvLT5zZWVu
ID0gdHJ1ZTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpK
SShvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpOwotdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNz
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmlj
dE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBT
dHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwotICAgIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRTdHViSW5mbyhy
ZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxB
Y2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5
cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNP
YmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2Up
KTsKQEAgLTM0MSwyNCArMzI5LDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkRGlyZWMKICAgICAKICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRl
bnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2Fz
dDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNzVHlwZSAh
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBpZiAoc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmVwYXRjaFB1
dEJ5SUQoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBEaXJlY3QpOwor
ICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFz
ZU9iamVjdCwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKICAgICBlbHNlCi0gICAg
ICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7
CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkkob3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKTsKLXZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJp
Y3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
U3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8o
cmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpT
T2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSk7CkBAIC0zNjYsMjQgKzM1MiwyMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjCiAgICAgCiAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlk
ZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nh
c3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vzc1R5cGUg
IT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAg
ICByZXR1cm47CiAgICAgCi0gICAgaWYgKHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQ
dXRCeUlEKGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCBzdHViSW5mbywgRGlyZWN0KTsK
KyAgICBpZiAoc3R1YkluZm8tPnNlZW4pCisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJh
c2VPYmplY3QsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiAgICAgZWxzZQotICAg
ICAgICBzdHViSW5mby5zZWVuID0gdHJ1ZTsKKyAgICAgICAgc3R1YkluZm8tPnNlZW4gPSB0cnVl
OwogfQogCi1WX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkpJKG9wZXJh
dGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QpOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWRTdHJpY3RCdWlsZExpc3RXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElk
ZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
ID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFj
Y2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC0zOTEsMjEgKzM3NSwxOSBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljCiAgICAgCiAgICAgYmFzZVZhbHVlLnB1dChl
eGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0
YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAgIGlmIChhY2Nl
c3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhlYywgYmFzZVZh
bHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8sIE5vdERpcmVjdCk7CisgICAgYnVpbGRQdXRCeUlk
TGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERpcmVjdCk7
CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkkob3BlcmF0
aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdCk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlk
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAg
CiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7
Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nh
c3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTQxMywyMSArMzk1LDE5IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKICAgICAKICAgICBiYXNlVmFs
dWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5
cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAg
aWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vz
c1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYnVpbGRQdXRCeUlkTGlzdChleGVj
LCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCBzdHViSW5mbywgTm90RGlyZWN0KTsKKyAgICBidWls
ZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90
RGlyZWN0KTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpK
SShvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KTsKLXZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0V2l0aFJldHVybkFkZHJl
c3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3Ry
aWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwotICAgIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRTdHViSW5m
byhyZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2Fz
dDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAg
ICAgCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlKSk7CkBAIC00MzUsMjEgKzQxNSwxOSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjCiAgICAgCiAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vz
c1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYnVpbGRQdXRCeUlkTGlzdChleGVjLCBiYXNlT2Jq
ZWN0LCBpZGVudCwgc2xvdCwgc3R1YkluZm8sIERpcmVjdCk7CisgICAgYnVpbGRQdXRCeUlkTGlz
dChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwogfQog
Ci1WX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkpJKG9wZXJhdGlvblB1
dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3RXaXRoUmV0dXJuQWRkcmVzcyhFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RC
dWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0
cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJl
dHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU09i
amVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkp
OwpAQCAtNDU3LDEwICs0MzUsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREaXJlYwogICAgIAogICAgIGJhc2VPYmplY3QgLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRl
bnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2Fz
dDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNzVHlwZSAh
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmplY3QsIGlk
ZW50LCBzbG90LCBzdHViSW5mbywgRGlyZWN0KTsKKyAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMs
IGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNTc1OTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEwLDYgKzExMCw3IEBAIGlubGluZSBKSVRIYW5kbGVyRW5jb2RlZCBkZmdIYW5kbGVyRW5jb2QK
ICAgICBQYzogSW5zdHJ1Y3Rpb24qIGkuZS4gYnl0ZWNvZGUgUEMKICAgICBSOiBSZWdpc3Rlcgog
ICAgIFM6IHNpemVfdAorICAgIFNzaTogU3RydWN0dXJlU3R1YkluZm8qCiAgICAgU3Q6IFN0cnVj
dHVyZSoKICAgICBWOiB2b2lkCiAgICAgVzogV2F0Y2hwb2ludFNldCoKQEAgLTEyOSw3ICsxMzAs
NiBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKCiB0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSSkoRXhlY1N0YXRl
KiwgU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgq
Sl9KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKQSkoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKLXR5cGVkZWYgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiAoKkpfSklUT3BlcmF0aW9uX0VKSWRjKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgq
Sl9KSVRPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVy
YXRpb25fRUpzc1opKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgaW50MzJfdCk7CkBAIC0xMzksNiAr
MTM5LDggQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSgogdHlwZWRl
ZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBTKShFeGVj
U3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTUyko
RXhlY1N0YXRlKiwgc2l6ZV90LCBzaXplX3QpOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUNJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEpTQ2VsbCosIFN0cmluZ0ltcGwqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRlKiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSos
IGludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRP
cGVyYXRpb25fRVpJY2ZaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBJbmxpbmVDYWxsRnJhbWUqLCBp
bnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3Bl
cmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CkBAIC0xODAsNyArMTgy
LDYgQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdAogdHlwZWRlZiB2
b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9F
SkNJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKiwgU3RyaW5nSW1wbCopOwog
dHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSklkSkopKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKTsKLXR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25f
RUpKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJ
bXBsKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKSkop
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSlBQKShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCosIHZvaWQqKTsKIHR5cGVkZWYgdm9pZCBK
SVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUpaSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKQEAgLTE4OSw2ICsxOTAsNyBAQCB0eXBl
ZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0CiB0eXBlZGVmIHZvaWQgSklUX09Q
RVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VPWkopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50
MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJ
VE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVmIHZvaWQg
SklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBp
bnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZf
SklUT3BlcmF0aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQg
SklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX1cpKFdhdGNocG9pbnRTZXQqKTsKIHR5cGVk
ZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGlu
dDMyX3QpOwogdHlwZWRlZiBjaGFyKiBKSVRfT1BFUkFUSU9OICgqUF9KSVRPcGVyYXRpb25fRSko
RXhlY1N0YXRlKik7CkBAIC0yMTUsMjYgKzIxNywyNiBAQCBKSVRIYW5kbGVyRW5jb2RlZCBKSVRf
T1BFUkFUSU9OIGxvb2t1cEV4CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RhY2tDaGVj
ayhFeGVjU3RhdGUqLCBDb2RlQmxvY2sqKSBXVEZfSU5URVJOQUw7CiBpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwog
aW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhlY1N0
YXRlKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeUlkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lO
VEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVp
bGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVS
TkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0
YXRlKiwgSlNDZWxsKiwgU3RyaW5nSW1wbCopOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QoRXhlY1N0YXRlKiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0
aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBTdHJpbmdJbXBs
Kik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSos
IEpTQ2VsbCosIFN0cmluZ0ltcGwqKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2VuZXJpY0luKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2VuZXJpY0luKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQ3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSos
IEpTQ2VsbCosIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jLCBTdHJpbmdJbXBsKikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmlj
dChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGlt
aXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVS
TkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExp
c3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0YXRlKiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VBbmRGaW5pc2hQdXQoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNldCwgRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbChFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmlj
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNTc1OTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY1
LDkgKzU2NSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0CiAK
ICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKICAgICAKLSAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJl
c3VsdFZSZWcsIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8gPSBtX2NvZGVCbG9jay0+YWRkU3R1YkluZm8oKTsKKyAgICAKKyAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IHJlc3VsdFZSZWcsIHN0dWJJbmZvLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CiAKLSAgICBtX3By
b3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbklu
ZGV4KytdLnNsb3dDYXNlSW5mbyhjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICBtX3Byb3BlcnR5
QWNjZXNzQ29tcGlsYXRpb25JbmZvW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4Kytd
LnNsb3dDYXNlSW5mbyhjb2xkUGF0aEJlZ2luLCBjYWxsLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpA
QCAtNjMxLDEwICs2MzMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0
cnVjdAogICAgICAgICAgICAgb3B0aW1pemVkQ2FsbCA9IG9wZXJhdGlvblB1dEJ5SWROb25TdHJp
Y3RPcHRpbWl6ZTsKICAgICB9CiAgICAgCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cHRpbWl6ZWRDYWxsLCByZWdUMSwgcmVnVDAsIGlkZW50LT5pbXBsKCkpOworICAgIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRTdHViSW5mbygpOworCisgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcHRpbWl6ZWRDYWxsLCBzdHViSW5mbywgcmVnVDEs
IHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKIAogICAgIC8vIFRyYWNrIHRoZSBsb2NhdGlvbiBvZiB0
aGUgY2FsbDsgdGhpcyB3aWxsIGJlIHVzZWQgdG8gcmVjb3ZlciBwYXRjaCBpbmZvcm1hdGlvbi4K
LSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvW21fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbkluZGV4KytdLnNsb3dDYXNlSW5mbyhjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICBt
X3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bkluZGV4KytdLnNsb3dDYXNlSW5mbyhjb2xkUGF0aEJlZ2luLCBjYWxsLCBzdHViSW5mbyk7CiB9
CiAKIC8vIENvbXBpbGUgYSBzdG9yZSBpbnRvIGFuIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2Uu
ICBNYXkgb3ZlcndyaXRlIHRoZQpJbmRleDogU291cmNlL1dURi93dGYvQmFnVG9IYXNoTWFwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQmFnVG9IYXNoTWFwLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV1RGL3d0Zi9CYWdUb0hhc2hNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCYWdUb0hhc2hNYXBfaAorI2RlZmluZSBC
YWdUb0hhc2hNYXBfaAorCisjaW5jbHVkZSA8d3RmL0JhZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgS2V5R2V0dGVyRnVuY3Rvcj4KK3ZvaWQgdG9I
YXNoTWFwKEJhZzxFbGVtZW50VHlwZT4mIGJhZywgS2V5R2V0dGVyRnVuY3RvciYgZ2V0S2V5LCBI
YXNoTWFwPEtleVR5cGUsIEVsZW1lbnRUeXBlKj4mIHJlc3VsdCkKK3sKKyAgICBmb3IgKEJhZzxF
bGVtZW50VHlwZT46Oml0ZXJhdG9yIGl0ZXIgPSBiYWcuYmVnaW4oKTsgISFpdGVyOyArK2l0ZXIp
IHsKKyAgICAgICAgRWxlbWVudFR5cGUqIGVsZW1lbnQgPSAqaXRlcjsKKyAgICAgICAgcmVzdWx0
LmFkZChnZXRLZXkoKmVsZW1lbnQpLCBlbGVtZW50KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBCYWdUb0hhc2hNYXBfaAor
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214540</attachid>
            <date>2013-10-17 19:49:31 -0700</date>
            <delta_ts>2013-10-17 20:38:15 -0700</delta_ts>
            <desc>getting close</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>70848</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxNTc1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIGR1
bXBDaGFpbihQcmludFN0cmVhbSYgb3V0LCAKIH0KICNlbmRpZgogCi12b2lkIENvZGVCbG9jazo6
cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVj
LCBpbnQgbG9jYXRpb24pCit2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMo
UHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIFN0dWJJbmZv
TWFwJiBtYXApCiB7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC0zNTAsOCArMzUwLDggQEAgdm9pZCBDb2RlQmxv
Y2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKAogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUKQot
ICAgIGlmIChudW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKSB7Ci0gICAgICAgIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbyA9IGdldFN0dWJJbmZvKGxvY2F0aW9uKTsKKyAgICBpZiAoIW1f
c3R1YkluZm9zLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8gPSAqbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSk7CiAgICAgICAgIGlmIChzdHViSW5m
by5zZWVuKSB7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KCIpOwogICAgICAgICAgICAg
CkBAIC01NTIsMTEgKzU1Miw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0KICAgICAgICAgfSB3aGlsZSAoaSA8IGNvdW50KTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
SklUKQotICAgIGlmICghbV9zdHJ1Y3R1cmVTdHViSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICBv
dXQucHJpbnRmKCJcblN0cnVjdHVyZXM6XG4iKTsKLSNlbmRpZgotCiAgICAgaWYgKG1fcmFyZURh
dGEgJiYgIW1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIG91dC5wcmludGYoIlxuRXhjZXB0aW9uIEhhbmRsZXJzOlxuIik7CiAgICAgICAgIHVuc2ln
bmVkIGkgPSAwOwpAQCAtMTQxMyw3ICsxNDA4LDYgQEAgc3RhdGljIEhhc2hTZXQ8Q29kZUJsb2Nr
Kj4gbGl2ZUNvZGVCbG9jawogCiAjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8p
IFwKICAgICBtYWNybyhpbnN0cnVjdGlvbnMpIFwKLSAgICBtYWNybyhzdHJ1Y3R1cmVTdHViSW5m
b3MpIFwKICAgICBtYWNybyhjYWxsTGlua0luZm9zKSBcCiAgICAgbWFjcm8obGlua2VkQ2FsbGVy
TGlzdCkgXAogICAgIG1hY3JvKGlkZW50aWZpZXJzKSBcCkBAIC0yNTc4LDcgKzI1NzIsNiBAQCB2
b2lkIENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvCiB2b2lkIENvZGVCbG9jazo6
c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogewogI2lmIEVOQUJMRShKSVQpCi0g
ICAgbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2hyaW5rVG9GaXQoKTsKICAgICBtX2NhbGxMaW5rSW5m
b3Muc2hyaW5rVG9GaXQoKTsKICNlbmRpZgogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAg
LTMwOTYsMTYgKzMwODksNiBAQCB2b2lkIENvZGVCbG9jazo6c2V0T3B0aW1pemF0aW9uVGhyZXNo
b2xkCiAKICNlbmRpZgogICAgIAotc3RhdGljIGJvb2wgc3RydWN0dXJlU3R1YkluZm9MZXNzVGhh
bihjb25zdCBTdHJ1Y3R1cmVTdHViSW5mbyYgYSwgY29uc3QgU3RydWN0dXJlU3R1YkluZm8mIGIp
Ci17Ci0gICAgcmV0dXJuIGEuY2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkg
PCBiLmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpOwotfQotCi12b2lkIENv
ZGVCbG9jazo6c29ydFN0cnVjdHVyZVN0dWJJbmZvcygpCi17Ci0gICAgc3RkOjpzb3J0KG1fc3Ry
dWN0dXJlU3R1YkluZm9zLmJlZ2luKCksIG1fc3RydWN0dXJlU3R1YkluZm9zLmVuZCgpLCBzdHJ1
Y3R1cmVTdHViSW5mb0xlc3NUaGFuKTsKLX0KLQogdWludDMyX3QgQ29kZUJsb2NrOjphZGp1c3Rl
ZEV4aXRDb3VudFRocmVzaG9sZCh1aW50MzJfdCBkZXNpcmVkVGhyZXNob2xkKQogewogICAgIEFT
U0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNTc1OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MCwxOCArMTcwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNp
Z25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbik7CiAKICNpZiBFTkFCTEUoSklUKQotCi0gICAg
U3RydWN0dXJlU3R1YkluZm8mIGdldFN0dWJJbmZvKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxTdHJ1Y3R1cmVTdHVi
SW5mbywgdm9pZCo+KG1fc3RydWN0dXJlU3R1YkluZm9zLCBtX3N0cnVjdHVyZVN0dWJJbmZvcy5z
aXplKCksIHJldHVybkFkZHJlc3MudmFsdWUoKSwgZ2V0U3RydWN0dXJlU3R1YkluZm9SZXR1cm5M
b2NhdGlvbikpOwotICAgIH0KLQotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBnZXRTdHViSW5mbyh1
bnNpZ25lZCBieXRlY29kZUluZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuICooYmluYXJ5U2Vh
cmNoPFN0cnVjdHVyZVN0dWJJbmZvLCB1bnNpZ25lZD4obV9zdHJ1Y3R1cmVTdHViSW5mb3MsIG1f
c3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCwgZ2V0U3RydWN0dXJlU3R1
YkluZm9CeXRlY29kZUluZGV4KSk7Ci0gICAgfQorICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBhZGRT
dHViSW5mbygpOworICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIGJlZ2luKCkg
eyByZXR1cm4gbV9zdHViSW5mb3MuYmVnaW4oKTsgfQorICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5m
bz46Oml0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fc3R1YkluZm9zLmVuZCgpOyB9CiAKICAgICB2
b2lkIHJlc2V0U3R1YihTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIAorICAgIHZvaWQgZ2V0U3R1
YkluZm9NYXAoU3R1YkluZm9NYXAmIG1hcCk7CiAKICAgICBCeVZhbEluZm8mIGdldEJ5VmFsSW5m
byh1bnNpZ25lZCBieXRlY29kZUluZGV4KQogICAgIHsKQEAgLTM3NywxMSArMzcyLDYgQEAgcHVi
bGljOgogICAgIFN0cmluZyBuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKTsKIAogI2lm
IEVOQUJMRShKSVQpCi0gICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXpl
X3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9Ci0gICAgdm9pZCBz
b3J0U3RydWN0dXJlU3R1YkluZm9zKCk7Ci0gICAgc2l6ZV90IG51bWJlck9mU3RydWN0dXJlU3R1
YkluZm9zKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6ZSgpOyB9Ci0g
ICAgU3RydWN0dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKGludCBpbmRleCkgeyByZXR1
cm4gbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaW5kZXhdOyB9Ci0KICAgICB2b2lkIHNldE51bWJlck9m
QnlWYWxJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX2J5VmFsSW5mb3MuZ3JvdyhzaXplKTsgfQogICAg
IHNpemVfdCBudW1iZXJPZkJ5VmFsSW5mb3MoKSBjb25zdCB7IHJldHVybiBtX2J5VmFsSW5mb3Mu
c2l6ZSgpOyB9CiAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8oc2l6ZV90IGluZGV4KSB7IHJldHVy
biBtX2J5VmFsSW5mb3NbaW5kZXhdOyB9CkBAIC05NDIsNyArOTMyLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaW50QmluYXJ5T3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRp
b24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50
Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rp
b24qLCBjb25zdCBJbnN0cnVjdGlvbiomLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKTsK
ICAgICB2b2lkIHByaW50R2V0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxv
Y2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomKTsKLSAgICB2b2lkIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uKTsKKyAgICB2b2lk
IHByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxv
Y2F0aW9uLCBTdHViSW5mb01hcCYgbWFwKTsKICAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1w
Q2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwogICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJl
YW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0
IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAg
ICB2b2lkIHByaW50UHV0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0
aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7CkBAIC0xMDMxLDcgKzEw
MjEsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogI2lmIEVOQUJMRShK
SVQpCi0gICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZvczsK
KyAgICBCYWc8U3RydWN0dXJlU3R1YkluZm8+IG1fc3R1YkluZm9zOwogICAgIFZlY3RvcjxCeVZh
bEluZm8+IG1fYnlWYWxJbmZvczsKICAgICBWZWN0b3I8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5r
SW5mb3M7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50
aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdDYWxsczsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShyZXZp
c2lvbiAxNTc1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk0LDE1ICsyOTQsMTIgQEAg
c3RydWN0IFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICBSZWZQdHI8V2F0Y2hwb2ludHNPblN0cnVj
dHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKIH07CiAKLWlubGluZSB2b2lkKiBnZXRTdHJ1Y3R1
cmVTdHViSW5mb1JldHVybkxvY2F0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHJ1Y3R1cmVTdHVi
SW5mbykKK2lubGluZSBDb2RlT3JpZ2luIGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbihT
dHJ1Y3R1cmVTdHViSW5mbyYgc3RydWN0dXJlU3R1YkluZm8pCiB7Ci0gICAgcmV0dXJuIHN0cnVj
dHVyZVN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAg
ICByZXR1cm4gc3RydWN0dXJlU3R1YkluZm8uY29kZU9yaWdpbjsKIH0KIAotaW5saW5lIHVuc2ln
bmVkIGdldFN0cnVjdHVyZVN0dWJJbmZvQnl0ZWNvZGVJbmRleChTdHJ1Y3R1cmVTdHViSW5mbyog
c3RydWN0dXJlU3R1YkluZm8pCi17Ci0gICAgcmV0dXJuIHN0cnVjdHVyZVN0dWJJbmZvLT5jb2Rl
T3JpZ2luLmJ5dGVjb2RlSW5kZXg7Ci19Cit0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgU3Ry
dWN0dXJlU3R1YkluZm8qPiBTdHViSW5mb01hcDsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZp
c2lvbiAxNTc1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDExICsyMjQsOSBAQCB2b2lkIEpJVENvbXBpbGVy
OjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
Y2FsbHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhtX2NhbGxzW2ldLm1f
Y2FsbCwgbV9jYWxsc1tpXS5tX2Z1bmN0aW9uKTsKIAotICAgIG1fY29kZUJsb2NrLT5zZXROdW1i
ZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhtX3Byb3BlcnR5QWNjZXNzZXMuc2l6ZSgpICsgbV9pbnMu
c2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc2Vz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZvID0gbV9jb2Rl
QmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKGkpOworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYg
aW5mbyA9ICptX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zdHViSW5mbzsKICAgICAgICAgQ29kZUxv
Y2F0aW9uQ2FsbCBjYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9w
cm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmNhbGwoKSk7Ci0gICAgICAg
IGluZm8uY29kZU9yaWdpbiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2NvZGVPcmlnaW47CiAg
ICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gY2FsbFJldHVybkxvY2F0aW9uOwogICAg
ICAgICBpbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwgPSBkaWZmZXJlbmNlQmV0d2VlbkNv
ZGVQdHIobGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3N0cnVj
dHVyZUltbSksIGNhbGxSZXR1cm5Mb2NhdGlvbik7CiAgICAgICAgIGluZm8ucGF0Y2guZGVsdGFD
YWxsVG9TdHJ1Y3RDaGVjayA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9j
YXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zdHJ1
Y3R1cmVDaGVjaykpOwpAQCAtMjQxLDMwICsyMzksMTUgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlu
ayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nh
c2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3It
PmxhYmVsKCkpKTsKICAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUgPSBkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fZG9uZSkpOwogICAgICAgICBpbmZvLnBhdGNoLmRl
bHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVy
bkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1f
cHJvcGVydHlTdG9yYWdlTG9hZCkpOwotICAgICAgICBpbmZvLnBhdGNoLmJhc2VHUFIgPSBtX3By
b3BlcnR5QWNjZXNzZXNbaV0ubV9iYXNlR1BSOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
IGluZm8ucGF0Y2gudmFsdWVHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsK
LSNlbHNlCi0gICAgICAgIGluZm8ucGF0Y2gudmFsdWVUYWdHUFIgPSBtX3Byb3BlcnR5QWNjZXNz
ZXNbaV0ubV92YWx1ZVRhZ0dQUjsKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IG1fcHJv
cGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwotI2VuZGlmCi0gICAgICAgIGluZm8ucGF0Y2gu
dXNlZFJlZ2lzdGVycyA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3VzZWRSZWdpc3RlcnM7Ci0g
ICAgICAgIGluZm8ucGF0Y2gucmVnaXN0ZXJzRmx1c2hlZCA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tp
XS5tX3JlZ2lzdGVyTW9kZSA9PSBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hl
ZDsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5zLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZvID0gbV9jb2RlQmxvY2stPnN0cnVj
dHVyZVN0dWJJbmZvKG1fcHJvcGVydHlBY2Nlc3Nlcy5zaXplKCkgKyBpKTsKKyAgICAgICAgU3Ry
dWN0dXJlU3R1YkluZm8mIGluZm8gPSAqbV9pbnNbaV0ubV9zdHViSW5mbzsKICAgICAgICAgQ29k
ZUxvY2F0aW9uTGFiZWwganVtcCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2luc1tpXS5tX2p1
bXApOwogICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbiA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZihtX2luc1tpXS5tX3Nsb3dQYXRoR2VuZXJhdG9yLT5jYWxsKCkpOwot
ICAgICAgICBpbmZvLmNvZGVPcmlnaW4gPSBtX2luc1tpXS5tX2NvZGVPcmlnaW47CiAgICAgICAg
IGluZm8uaG90UGF0aEJlZ2luID0ganVtcDsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRp
b24gPSBjYWxsUmV0dXJuTG9jYXRpb247CiAgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9T
bG93Q2FzZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxp
bmtCdWZmZXIubG9jYXRpb25PZihtX2luc1tpXS5tX3Nsb3dQYXRoR2VuZXJhdG9yLT5sYWJlbCgp
KSk7Ci0gICAgICAgIGluZm8ucGF0Y2guYmFzZUdQUiA9IG1faW5zW2ldLm1fYmFzZUdQUjsKLSAg
ICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IG1faW5zW2ldLm1fcmVzdWx0R1BSOwotICAgICAg
ICBpbmZvLnBhdGNoLnVzZWRSZWdpc3RlcnMgPSBtX2luc1tpXS5tX3VzZWRSZWdpc3RlcnM7Ci0g
ICAgICAgIGluZm8ucGF0Y2gucmVnaXN0ZXJzRmx1c2hlZCA9IGZhbHNlOwogICAgIH0KLSAgICBt
X2NvZGVCbG9jay0+c29ydFN0cnVjdHVyZVN0dWJJbmZvcygpOwogICAgIAogICAgIG1fY29kZUJs
b2NrLT5zZXROdW1iZXJPZkNhbGxMaW5rSW5mb3MobV9qc0NhbGxzLnNpemUoKSk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fanNDYWxscy5zaXplKCk7ICsraSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTU3NTkz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC03OCwzOSArNzgsMjAgQEAgc3RydWN0IENhbGxMaW5rUmVjb3JkIHsKIH07CiAK
IHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7Ci0gICAgZW51bSBSZWdpc3Rlck1vZGUgeyBS
ZWdpc3RlcnNGbHVzaGVkLCBSZWdpc3RlcnNJblVzZSB9OwotICAgIAotI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0s
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9y
YWdlTG9hZCwKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsQ29tcGFjdCBsb2FkT3JTdG9yZSwKLSAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNs
b3dQYXRoR2VuZXJhdG9yLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSwKLSAg
ICAgICAgaW50OF90IGJhc2VHUFIsCi0gICAgICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIFJlZ2lzdGVyTW9kZSBy
ZWdpc3Rlck1vZGUgPSBSZWdpc3RlcnNJblVzZSkKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0g
ICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCi0gICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAotICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9h
ZCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9hZE9yU3Rv
cmUsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2Fk
T3JTdG9yZSwKKyNlbmRpZgogICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5l
cmF0b3IsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lLAotICAgICAgICBpbnQ4
X3QgYmFzZUdQUiwKLSAgICAgICAgaW50OF90IHZhbHVlVGFnR1BSLAotICAgICAgICBpbnQ4X3Qg
dmFsdWVHUFIsCi0gICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAg
ICAgICBSZWdpc3Rlck1vZGUgcmVnaXN0ZXJNb2RlID0gUmVnaXN0ZXJzSW5Vc2UpCi0jZW5kaWYK
LSAgICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKLSAgICAgICAgLCBtX3N0cnVjdHVy
ZUltbShzdHJ1Y3R1cmVJbW0pCisgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykK
KyAgICAgICAgOiBtX3N0cnVjdHVyZUltbShzdHJ1Y3R1cmVJbW0pCiAgICAgICAgICwgbV9zdHJ1
Y3R1cmVDaGVjayhzdHJ1Y3R1cmVDaGVjaykKICAgICAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZUxv
YWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTIxLDE3ICsx
MDIsMTAgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICNlbmRpZgogICAgICAgICAs
IG1fc2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhHZW5lcmF0b3IpCiAgICAgICAgICwgbV9kb25l
KGRvbmUpCi0gICAgICAgICwgbV9iYXNlR1BSKGJhc2VHUFIpCi0jaWYgVVNFKEpTVkFMVUUzMl82
NCkKLSAgICAgICAgLCBtX3ZhbHVlVGFnR1BSKHZhbHVlVGFnR1BSKQotI2VuZGlmCi0gICAgICAg
ICwgbV92YWx1ZUdQUih2YWx1ZUdQUikKLSAgICAgICAgLCBtX3VzZWRSZWdpc3RlcnModXNlZFJl
Z2lzdGVycykKLSAgICAgICAgLCBtX3JlZ2lzdGVyTW9kZShyZWdpc3Rlck1vZGUpCisgICAgICAg
ICwgbV9zdHViSW5mbyhzdHViSW5mbykKICAgICB7CiAgICAgfQogCi0gICAgQ29kZU9yaWdpbiBt
X2NvZGVPcmlnaW47CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtX3N0cnVjdHVy
ZUltbTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3N0cnVjdHVyZUNoZWNr
OwogICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBtX3Byb3BlcnR5U3Rv
cmFnZUxvYWQ7CkBAIC0xNDMsMzUgKzExNywyMiBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNv
cmQgewogI2VuZGlmCiAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIG1fc2xvd1BhdGhHZW5lcmF0b3I7
CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fZG9uZTsKLSAgICBpbnQ4X3QgbV9iYXNlR1BS
OwotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaW50OF90IG1fdmFsdWVUYWdHUFI7Ci0jZW5k
aWYKLSAgICBpbnQ4X3QgbV92YWx1ZUdQUjsKLSAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3Rl
cnM7Ci0gICAgUmVnaXN0ZXJNb2RlIG1fcmVnaXN0ZXJNb2RlOworICAgIFN0cnVjdHVyZVN0dWJJ
bmZvKiBtX3N0dWJJbmZvOwogfTsKIAogc3RydWN0IEluUmVjb3JkIHsKICAgICBJblJlY29yZCgK
LSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxl
SnVtcCBqdW1wLAotICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3Is
IGludDhfdCBiYXNlR1BSLCBpbnQ4X3QgcmVzdWx0R1BSLAotICAgICAgICBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycykKLSAgICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikK
LSAgICAgICAgLCBtX2p1bXAoanVtcCkKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJs
ZUp1bXAganVtcCwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLAorICAgICAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCisgICAgICAgIDogbV9qdW1wKGp1bXApCiAg
ICAgICAgICwgbV9zbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aEdlbmVyYXRvcikKLSAgICAgICAg
LCBtX2Jhc2VHUFIoYmFzZUdQUikKLSAgICAgICAgLCBtX3Jlc3VsdEdQUihyZXN1bHRHUFIpCi0g
ICAgICAgICwgbV91c2VkUmVnaXN0ZXJzKHVzZWRSZWdpc3RlcnMpCisgICAgICAgICwgbV9zdHVi
SW5mbyhzdHViSW5mbykKICAgICB7CiAgICAgfQogICAgIAotICAgIENvZGVPcmlnaW4gbV9jb2Rl
T3JpZ2luOwogICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fanVtcDsKICAgICBT
bG93UGF0aEdlbmVyYXRvciogbV9zbG93UGF0aEdlbmVyYXRvcjsKLSAgICBpbnQ4X3QgbV9iYXNl
R1BSOwotICAgIGludDhfdCBtX3Jlc3VsdEdQUjsKLSAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdp
c3RlcnM7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87CiB9OwogCiAvLyA9PT0g
SklUQ29tcGlsZXIgPT09CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1NzU5MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwOSw2ICsyMDksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVVJbnQz
CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJz
TW9kZSBzcGlsbE1vZGUpCiB7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbV9q
aXQuY29kZUJsb2NrKCktPmFkZFN0dWJJbmZvKCk7CisgICAgCiAgICAgSklUQ29tcGlsZXI6OkRh
dGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6OlBhdGNoYWJs
ZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2go
SklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6
VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSkpOwog
ICAgIApAQCAtMjIxLDI3ICsyMjMsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0
QnlJZChDb2RlTwogICAgIE93blB0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CiAgICAg
aWYgKCFzbG93UGF0aFRhcmdldC5pc1NldCgpKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAotICAgICAgICAgICAgc3RydWN0dXJlQ2hlY2subV9qdW1wLCB0aGlzLCBvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdEdQUiwgYmFzZUdQUiwKKyAgICAgICAgICAgIHN0cnVj
dHVyZUNoZWNrLm1fanVtcCwgdGhpcywgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHRH
UFIsIHN0dWJJbmZvLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllclVJRChpZGVudGlm
aWVyTnVtYmVyKSwgc3BpbGxNb2RlKTsKICAgICB9IGVsc2UgewogICAgICAgICBKSVRDb21waWxl
cjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHN0cnVjdHVy
ZUNoZWNrLm1fanVtcCk7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQp
OwogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHRHUFIsIGJhc2VHUFIsCisg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVz
dWx0R1BSLCBzdHViSW5mbywgYmFzZUdQUiwKICAgICAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRl
bnRpZmllck51bWJlciksIHNwaWxsTW9kZSk7CiAgICAgfQorICAgIFJlZ2lzdGVyU2V0IGN1cnJl
bnRseVVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJzKCk7CisgICAgQVNTRVJUKGN1cnJlbnRs
eVVzZWRSZWdpc3RlcnMuZ2V0KGJhc2VHUFIpKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJl
Z2lzdGVycy5nZXQocmVzdWx0R1BSKSk7CisgICAgCisgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4g
PSBjb2RlT3JpZ2luOworICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlR1BSID0gc3RhdGljX2Nhc3Q8
aW50OF90PihiYXNlR1BSKTsKKyAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KHJlc3VsdEdQUik7CisgICAgc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3Rl
cnMgPSBjdXJyZW50bHlVc2VkUmVnaXN0ZXJzOworICAgIHN0dWJJbmZvLT5wYXRjaC5yZWdpc3Rl
cnNGbHVzaGVkID0gc3BpbGxNb2RlICE9IE5lZWRUb1NwaWxsOworCiAgICAgbV9qaXQuYWRkUHJv
cGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAogICAgICAgICAgICAg
Y29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlT
dG9yYWdlTG9hZCwgbG9hZFdpdGhQYXRjaCwKLSAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBk
b25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVz
dWx0R1BSKSwKLSAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIHNwaWxs
TW9kZSA9PSBOZWVkVG9TcGlsbCA/IFByb3BlcnR5QWNjZXNzUmVjb3JkOjpSZWdpc3RlcnNJblVz
ZSA6IFByb3BlcnR5QWNjZXNzUmVjb3JkOjpSZWdpc3RlcnNGbHVzaGVkKSk7CisgICAgICAgICAg
ICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzdHViSW5mbykpOwogICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BS
UmVnIHZhbHVlR1BSLCBFZGdlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCkKIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2ppdC5j
b2RlQmxvY2soKS0+YWRkU3R1YkluZm8oKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6RGF0YUxh
YmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVt
cCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRD
b21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKSk7CkBAIC0y
NjksMjUgKzI4MCwzMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVP
CiAgICAgT3duUHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBpZiAoIXNsb3dQ
YXRoVGFyZ2V0LmlzU2V0KCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0g
ICAgICAgICAgICBzdHJ1Y3R1cmVDaGVjay5tX2p1bXAsIHRoaXMsIG9wdGltaXplZENhbGwsIE5v
UmVzdWx0LCB2YWx1ZUdQUiwgYmFzZUdQUiwKKyAgICAgICAgICAgIHN0cnVjdHVyZUNoZWNrLm1f
anVtcCwgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHN0dWJJbmZvLCB2YWx1ZUdQUiwg
YmFzZUdQUiwKICAgICAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc3RydWN0dXJlQ2hlY2subV9qdW1wKTsKICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBO
b1Jlc3VsdCwgdmFsdWVHUFIsIGJhc2VHUFIsCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wdGltaXplZENhbGwsIE5vUmVzdWx0LCBzdHViSW5mbywgdmFsdWVHUFIsIGJhc2VHUFIsCiAg
ICAgICAgICAgICBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9CiAgICAg
UmVnaXN0ZXJTZXQgY3VycmVudGx5VXNlZFJlZ2lzdGVycyA9IHVzZWRSZWdpc3RlcnMoKTsKICAg
ICBjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2hHUFIpOwogICAgIEFTU0VSVChj
dXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldChiYXNlR1BSKSk7CiAgICAgQVNTRVJUKGN1cnJlbnRs
eVVzZWRSZWdpc3RlcnMuZ2V0KHZhbHVlR1BSKSk7CisgICAgCisgICAgc3R1YkluZm8tPmNvZGVP
cmlnaW4gPSBjb2RlT3JpZ2luOworICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlR1BSID0gc3RhdGlj
X2Nhc3Q8aW50OF90PihiYXNlR1BSKTsKKyAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBz
dGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKTsKKyAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJl
Z2lzdGVycyA9IGN1cnJlbnRseVVzZWRSZWdpc3RlcnM7CisgICAgc3R1YkluZm8tPnBhdGNoLnJl
Z2lzdGVyc0ZsdXNoZWQgPSBmYWxzZTsKKyAgICAKICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2Vz
cygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCiAgICAgICAgICAgICBjb2RlT3JpZ2lu
LCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2Fk
LAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3Qoc3RvcmVXaXRoUGF0
Y2gubGFiZWwoKSksIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsCi0gICAgICAgICAgICBzYWZl
Q2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgY3VycmVu
dGx5VXNlZFJlZ2lzdGVycykpOworICAgICAgICAgICAgc3R1YkluZm8pKTsKICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aC5yZWxlYXNlKCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTU3
NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk1MSw2ICs5NTEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW4oTm9kZSogbm9kCiAgICAgICAgICAgICBqc0R5bmFtaWNDYXN0PEpTU3RyaW5nKj4o
dmFsdWVPZkpTQ29uc3RhbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7CiAgICAgICAgIGlmIChz
dHJpbmcgJiYgc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKQogICAgICAgICAgICAgJiYgc3RyaW5n
LT50cnlHZXRWYWx1ZUltcGwoKS0+aXNJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRTdHViSW5mbygp
OworICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwog
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIApAQCAtOTYwLDEy
ICs5NjIsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKE5vZGUqIG5vZAogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBPd25QdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
ID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIGp1bXAubV9qdW1wLCB0aGlzLCBvcGVy
YXRpb25Jbk9wdGltaXplLAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZXN1bHRHUFIpLCBiYXNlR1BSLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZXN1bHRHUFIpLCBzdHViSW5mbywgYmFzZUdQUiwKICAgICAgICAgICAgICAgICBz
dHJpbmctPnRyeUdldFZhbHVlSW1wbCgpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
IG1faml0LmFkZEluKEluUmVjb3JkKAotICAgICAgICAgICAgICAgIG5vZGUtPmNvZGVPcmlnaW4s
IGp1bXAsIHNsb3dQYXRoLmdldCgpLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLAotICAgICAg
ICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BSKSwgdXNlZFJlZ2lzdGVycygpKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gbm9kZS0+
Y29kZU9yaWdpbjsKKyAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlR1BSID0gc3RhdGlj
X2Nhc3Q8aW50OF90PihiYXNlR1BSKTsKKyAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1
ZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4ocmVzdWx0R1BSKTsKKyAgICAgICAgICAgIHN0dWJJ
bmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVycygpOworICAgICAgICAgICAg
c3R1YkluZm8tPnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgbV9qaXQuYWRkSW4oSW5SZWNvcmQoanVtcCwgc2xvd1BhdGguZ2V0KCksIHN0
dWJJbmZvKSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aC5yZWxl
YXNlKCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgYmFzZS51c2UoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlz
aW9uIDE1NzU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzMiwxNCArMTIzMiwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGNlbGwp
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxLCBjb25zdCBTdHJpbmdJbXBsKiB1aWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpQ0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBjb25zdCBTdHJpbmdJ
bXBsKiB1aWQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBUcnVzdGVkSW1t
UHRyKHVpZCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIFN0cmluZ0ltcGwq
IHVpZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIo
dWlkKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FREEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBG
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCkBAIC0xMzYzLDkgKzEzNjMsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVz
dGVkSW1tUHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpJIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBTdHJpbmdJbXBsKiB1aWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFN0cmluZ0ltcGwqIHVpZCkKICAg
ICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1Q
dHIodWlkKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRUpKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMpCkBAIC0xNDk0LDE0ICsxNDk0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBh
cmcxUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BS
UmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQogICAgIHsK
LSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVN
TVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5m
byksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGludDMyX3QgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXls
b2FkLCBTdHJpbmdJbXBsKiB1aWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJS
ZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBpbnQzMl90IGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQogICAgIHsKLSAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzFQYXlsb2FkLCBUcnVzdGVkSW1tMzIoYXJnMVRhZyksIFRydXN0ZWRJbW1QdHIodWlkKSk7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KHN0dWJJbmZvKSwgYXJnMVBheWxvYWQsIFRydXN0ZWRJbW0zMihhcmcxVGFnKSwgVHJ1c3RlZElt
bVB0cih1aWQpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VEQSBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBGUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCkBAIC0xNjIxLDEzICsxNjIxLDEzIEBAIHB1YmxpYzoKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFy
ZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9
Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpJ
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFy
ZzJQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcg
YXJnMlBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAjaWYgQ1BVKFNINCkKICAgICAg
ICAgLy8gV2UgaGF2ZSB0byBwdXQgdWlkIGluIHRoZSA0dGggYXJndW1lbnQgcmVnaXN0ZXIgKHI3
KSBhcyA2NC1iaXQgdmFsdWUgYXJnMiB3aWxsIGJlIHB1dCBvbiBzdGFjayBmb3Igc2g0IGFyY2hp
dGVjdXJlLgotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBh
eWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSwgYXJnMlBheWxvYWQsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBheWxvYWQsIGFyZzFUYWcs
IFRydXN0ZWRJbW1QdHIodWlkKSwgYXJnMlBheWxvYWQsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSk7CiAjZWxzZQotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2Fk
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIFRydXN0ZWRJbW1QdHIodWlkKSk7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
dWJJbmZvKSwgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZyksIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAjZW5kaWYKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNTc1OTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4NiwyMCAr
NDg2LDIwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAjZW5kaWYKIH0K
IAotQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6Y29weVRv
U3R1YkluZm8oU3RydWN0dXJlU3R1YkluZm8mIGluZm8sIExpbmtCdWZmZXIgJmxpbmtCdWZmZXIp
CitBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvOjpjb3B5VG9T
dHViSW5mbyhMaW5rQnVmZmVyICZsaW5rQnVmZmVyKQogewogICAgIEFTU0VSVChieXRlY29kZUlu
ZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAgaW5mby5j
b2RlT3JpZ2luID0gQ29kZU9yaWdpbihieXRlY29kZUluZGV4KTsKLSAgICBpbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihjYWxsUmV0dXJuTG9jYXRpb24pOwor
ICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gQ29kZU9yaWdpbihieXRlY29kZUluZGV4KTsKKyAg
ICBzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGNh
bGxSZXR1cm5Mb2NhdGlvbik7CiAKLSAgICBpbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwg
PSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGxpbmtCdWZmZXIubG9j
YXRpb25PZihzdHJ1Y3R1cmVUb0NvbXBhcmUpLCBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbik7Ci0g
ICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENoZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKHN0cnVjdHVyZUNoZWNrKSk7CisgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRh
Q2hlY2tJbW1Ub0NhbGwgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRy
KGxpbmtCdWZmZXIubG9jYXRpb25PZihzdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHViSW5mby0+Y2Fs
bFJldHVybkxvY2F0aW9uKTsKKyAgICBzdHViSW5mby0+cGF0Y2guZGVsdGFDYWxsVG9TdHJ1Y3RD
aGVjayA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1YkluZm8t
PmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHN0cnVjdHVyZUNoZWNr
KSk7CiAgICAgCi0gICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlID0gTWFjcm9Bc3Nl
bWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwg
bGlua0J1ZmZlci5sb2NhdGlvbk9mKGNvbGRQYXRoQmVnaW4pKTsKLSAgICBpbmZvLnBhdGNoLmRl
bHRhQ2FsbFRvRG9uZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIo
aW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihkb25lKSk7Ci0g
ICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQpKTsKKyAgICBzdHViSW5mby0+cGF0Y2gu
ZGVsdGFDYWxsVG9TbG93Q2FzZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNv
ZGVQdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9m
KGNvbGRQYXRoQmVnaW4pKTsKKyAgICBzdHViSW5mby0+cGF0Y2guZGVsdGFDYWxsVG9Eb25lID0g
TWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+Y2FsbFJl
dHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZG9uZSkpOworICAgIHN0dWJJbmZv
LT5wYXRjaC5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOwogICAgIAotICAgIGluZm8ucGF0Y2gu
YmFzZUdQUiA9IEdQUkluZm86OnJlZ1QwOworICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlR1BSID0g
R1BSSW5mbzo6cmVnVDA7CiAKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOwogICAgIHVz
ZWRSZWdpc3RlcnMuc2V0KEdQUkluZm86OnJlZ1QwKTsKQEAgLTUwNywzNyArNTA3LDM3IEBAIEFM
V0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICNpZiBVU0UoSlNWQUxVRTY0
KSAvLyBKU1ZBTFVFIGNhc2VzCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEdldEJ5
SWQ6Ci0gICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSA9IE1hY3JvQXNz
ZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24s
IGxpbmtCdWZmZXIubG9jYXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbCkpOwotICAgICAgICBp
bmZvLnBhdGNoLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgICAgIHN0dWJJbmZvLT5w
YXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwpKTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNo
LnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDA7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHV0
QnlJZDoKLSAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlID0gTWFjcm9B
c3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
biwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERpc3BsYWNlbWVudExhYmVsKSk7Ci0gICAgICAg
IGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICAgICAgc3R1YkluZm8t
PnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIu
bG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbCkpOworICAgICAgICBzdHViSW5mby0+cGF0
Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQo
R1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBicmVhazsKICAgICB9CiAjZWxzZSAvLyBKU1ZBTFVF
IGNhc2VzCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEdldEJ5SWQ6Ci0gICAgICAg
IGluZm8ucGF0Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpk
aWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKLSAgICAgICAgaW5mby5wYXRj
aC5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9j
YXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbDEpKTsKLSAgICAgICAgaW5mby5wYXRjaC52YWx1
ZUdQUiA9IEdQUkluZm86OnJlZ1QwOwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVlVGFnR1BSID0g
R1BSSW5mbzo6cmVnVDE7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xv
YWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHVi
SW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxh
Y2VtZW50TGFiZWwyKSk7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1BheWxv
YWRMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIo
c3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERp
c3BsYWNlbWVudExhYmVsMSkpOworICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBH
UFJJbmZvOjpyZWdUMDsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlVGFnR1BSID0gR1BS
SW5mbzo6cmVnVDE7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEdQUkluZm86OnJlZ1QxKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQdXRCeUlkOgotICAgICAgICBpbmZvLnBhdGNoLmRl
bHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
cHV0RGlzcGxhY2VtZW50TGFiZWwyKSk7Ci0gICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9Q
YXlsb2FkTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2Rl
UHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlz
cGxhY2VtZW50TGFiZWwxKSk7Ci0gICAgICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZv
OjpyZWdUMjsKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZVRhZ0dQUiA9IEdQUkluZm86OnJlZ1Qz
OworICAgICAgICBzdHViSW5mby0+cGF0Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1h
Y3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxSZXR1
cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERpc3BsYWNlbWVudExhYmVsMikp
OworICAgICAgICBzdHViSW5mby0+cGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUg
PSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxs
UmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJl
bDEpKTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDI7
CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZVRhZ0dQUiA9IEdQUkluZm86OnJlZ1QzOwog
ICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgIHVzZWRS
ZWdpc3RlcnMuc2V0KEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2Vu
ZGlmIC8vIEpTVkFMVUUgY2FzZXMKICAgICAKLSAgICBpbmZvLnBhdGNoLnVzZWRSZWdpc3RlcnMg
PSB1c2VkUmVnaXN0ZXJzOwotICAgIGluZm8ucGF0Y2gucmVnaXN0ZXJzRmx1c2hlZCA9IHRydWU7
CisgICAgc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJzOworICAg
IHN0dWJJbmZvLT5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gdHJ1ZTsKIH0KIAogQ29tcGlsYXRp
b25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQp
CkBAIC03MzIsOSArNzMyLDggQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGls
ZShKSQogICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhpdGVyLT5mcm9tLCBGdW5jdGlvblB0
cihpdGVyLT50bykpOwogICAgIH0KIAotICAgIG1fY29kZUJsb2NrLT5zZXROdW1iZXJPZlN0cnVj
dHVyZVN0dWJJbmZvcyhtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbklu
Zm8uc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm9b
aV0uY29weVRvU3R1YkluZm8obV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKGkpLCBwYXRj
aEJ1ZmZlcik7CisgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm9baV0uY29w
eVRvU3R1YkluZm8ocGF0Y2hCdWZmZXIpOwogICAgIG1fY29kZUJsb2NrLT5zZXROdW1iZXJPZkJ5
VmFsSW5mb3MobV9ieVZhbENvbXBpbGF0aW9uSW5mby5zaXplKCkpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIENvZGVMb2NhdGlvbkp1bXAgYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wKHBhdGNo
QnVmZmVyLmxvY2F0aW9uT2YobV9ieVZhbENvbXBpbGF0aW9uSW5mb1tpXS5iYWRUeXBlSnVtcCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxNTc1OTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiArMTcz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwz
MiBwdXREaXNwbGFjZW1lbnRMYWJlbDE7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFi
ZWwzMiBwdXREaXNwbGFjZW1lbnRMYWJlbDI7CiAjZW5kaWYKKyAgICAgICAgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBQcm9wZXJ0
eVN0dWJDb21waWxhdGlvbkluZm8oKQpAQCAtMjM2LDEwICsyMzcsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2xvd0Nhc2VJbmZvKE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBjb2xkUGF0aEJlZ2luLCBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsKQorICAgICAgICB2b2lkIHNsb3dDYXNlSW5mbyhNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgY29s
ZFBhdGhCZWdpbiwgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCwgU3RydWN0dXJlU3R1YkluZm8q
IGluZm8pCiAgICAgICAgIHsKICAgICAgICAgICAgIGNhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGw7
CiAgICAgICAgICAgICB0aGlzLT5jb2xkUGF0aEJlZ2luID0gY29sZFBhdGhCZWdpbjsKKyAgICAg
ICAgICAgIHN0dWJJbmZvID0gaW5mbzsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgc2xvd0Nh
c2VJbmZvKE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwpCkBAIC0yNDcsNyArMjQ5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24gPSBjYWxsOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBjb3B5VG9TdHViSW5mbyhTdHJ1Y3R1cmVTdHViSW5mbyYg
aW5mbywgTGlua0J1ZmZlciAmcGF0Y2hCdWZmZXIpOworICAgICAgICB2b2lkIGNvcHlUb1N0dWJJ
bmZvKExpbmtCdWZmZXIgJnBhdGNoQnVmZmVyKTsKICAgICB9OwogCiAgICAgc3RydWN0IEJ5VmFs
Q29tcGlsYXRpb25JbmZvIHsKQEAgLTc3OCw5ICs3ODAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
QywgaW50LCBKU0NlbGwqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FSiwgaW50LCBHUFJSZWcpOwogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGVU
YWcsIEpfSklUT3BlcmF0aW9uX0VKSSwgaW50LCBHUFJSZWcsIFN0cmluZ0ltcGwqKTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihXaXRoUHJvZmlsZVRhZywgSl9K
SVRPcGVyYXRpb25fRVNzaUpJLCBpbnQsIFN0cnVjdHVyZVN0dWJJbmZvKiwgR1BSUmVnLCBTdHJp
bmdJbXBsKik7CiAjZWxzZQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FSkksIGludCwgR1BSUmVnLCBHUFJS
ZWcsIFN0cmluZ0ltcGwqKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRVNzaUpJLCBpbnQsIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgR1BSUmVnLCBHUFJSZWcsIFN0cmluZ0ltcGwqKTsKICNlbmRpZgogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSWRj
LCBpbnQsIEdQUlJlZywgY29uc3QgSWRlbnRpZmllciopOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiwgaW50LCBHUFJSZWcsIEdQ
UlJlZyk7CkBAIC04MTEsOSArODEzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUosIFJlZ2lzdGVy
SUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VKSWRKSiwgUmVnaXN0ZXJJRCwgY29uc3QgSWRlbnRpZmllciosIFJlZ2lzdGVySUQs
IFJlZ2lzdGVySUQpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSSwgUmVnaXN0ZXJJRCwgUmVn
aXN0ZXJJRCwgU3RyaW5nSW1wbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkksIFN0cnVjdHVyZVN0dWJJbmZvKiwgUmVn
aXN0ZXJJRCwgUmVnaXN0ZXJJRCwgU3RyaW5nSW1wbCopOwogI2Vsc2UKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpJLCBSZWdpc3Rl
cklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RVNzaUpKSSwgU3RydWN0dXJlU3R1YkluZm8qLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdp
c3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CiAjZW5kaWYKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKLCBSZWdpc3Rl
cklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSlpKLCBSZWdpc3RlcklELCBpbnQzMl90
LCBSZWdpc3RlcklEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CShyZXZpc2lvbiAxNTc1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDkgKzIwMCw5IEBAIEFMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhvcGVyYXRpb24pOwogfQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpJIG9wZXJhdGlvbiwgUmVn
aXN0ZXJJRCByZWdPcDEsIFJlZ2lzdGVySUQgcmVnT3AyLCBTdHJpbmdJbXBsKiB1aWQpCitBTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBS
ZWdpc3RlcklEIHJlZ09wMSwgUmVnaXN0ZXJJRCByZWdPcDIsIFN0cmluZ0ltcGwqIHVpZCkKIHsK
LSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUocmVnT3AxLCByZWdPcDIsIFRydXN0ZWRJ
bW1QdHIodWlkKSk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIoc3R1YkluZm8pLCByZWdPcDEsIHJlZ09wMiwgVHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQogCkBAIC0y
MTIsOSArMjEyLDkgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6Ogog
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAK
LUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpJ
VDo6V2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIGludCBkc3Qs
IEdQUlJlZyBhcmcxLCBTdHJpbmdJbXBsKiB1aWQpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKSVQ6OldpdGhQcm9maWxlVGFnLCBKX0pJVE9w
ZXJhdGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBpbnQgZHN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEdQUlJlZyBhcmcxLCBTdHJpbmdJbXBsKiB1aWQpCiB7Ci0gICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBUcnVzdGVk
SW1tUHRyKHVpZCkpOwogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG9wZXJhdGlvbiwgZHN0KTsKIH0KIApAQCAtNTM1LDEz
ICs1MzUsMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKLUFM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VKSkkgb3BlcmF0aW9uLCBSZWdpc3RlcklEIHJlZ09wMVRhZywgUmVnaXN0ZXJJ
RCByZWdPcDFQYXlsb2FkLCBSZWdpc3RlcklEIHJlZ09wMlRhZywgUmVnaXN0ZXJJRCByZWdPcDJQ
YXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBSZWdpc3RlcklEIHJlZ09wMVRhZywgUmVnaXN0
ZXJJRCByZWdPcDFQYXlsb2FkLCBSZWdpc3RlcklEIHJlZ09wMlRhZywgUmVnaXN0ZXJJRCByZWdP
cDJQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAjaWYgQ1BVKFNINCkKICAgICAvLyBXZSBo
YXZlIHRvIHB1dCB1aWQgaW4gdGhlIDR0aCBhcmd1bWVudCByZWdpc3RlciAocjcpIGFzIDY0LWJp
dCB2YWx1ZSByZWdPcDIgd2lsbCBiZSBwdXQgb24gc3RhY2sgZm9yIHNoNCBhcmNoaXRlY3VyZS4K
LSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUocmVnT3AxUGF5bG9hZCwgcmVnT3AxVGFn
LCBUcnVzdGVkSW1tUHRyKHVpZCksIHJlZ09wMlBheWxvYWQsIHJlZ09wMlRhZyk7CisgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCByZWdPcDFQ
YXlsb2FkLCByZWdPcDFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSwgcmVnT3AyUGF5bG9hZCwgcmVn
T3AyVGFnKTsKICNlbHNlCi0gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJC
SVRfRFVNTVlfQVJHIHJlZ09wMVBheWxvYWQsIHJlZ09wMVRhZywgcmVnT3AyUGF5bG9hZCwgcmVn
T3AyVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgcmVnT3AxUGF5bG9hZCwgcmVnT3AxVGFnLCBy
ZWdPcDJQYXlsb2FkLCByZWdPcDJUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAjZW5kaWYKICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxNTc1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbnN0cnVjdAogICAgIHJldHVybiBtaXNzaW5nQXJnQ291bnQ7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwpAQCAtMTI0LDUxICsxMjQsNDYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdl
dChleGVjLCBpZGVudCwgc2xvdCkpOwogfQogCi1KX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRV
Uk5fQUREUkVTU19FSkkob3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdCk7Ci1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3RXaXRoUmV0dXJuQWRkcmVz
cyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAg
IElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1
ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90
KTsKIAotICAgIGlmIChhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJ
bmZvLmFjY2Vzc1R5cGUpKQotICAgICAgICBidWlsZEdldEJ5SURMaXN0KGV4ZWMsIGJhc2VWYWx1
ZSwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvKTsKKyAgICBpZiAoYWNjZXNzVHlwZSA9PSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCisgICAgICAgIGJ1aWxkR2V0
QnlJRExpc3QoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotSl9GVU5DVElPTl9XUkFQUEVS
X1dJVEhfUkVUVVJOX0FERFJFU1NfRUpJKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZVdpdGhSZXR1
cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1w
bCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1w
bCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CiAgICAgSWRlbnRpZmllciBpZGVudCA9IHVpZC0+aXNFbXB0eVVuaXF1ZSgpID8gSWRlbnRpZmll
cjo6ZnJvbShQcml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVpZCk7Ci0gICAgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZv
KHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAog
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUu
Z2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSA9PSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkgewotICAgICAgICBpZiAo
c3R1YkluZm8uc2VlbikKLSAgICAgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1
ZSwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvKTsKKyAgICBpZiAoYWNjZXNzVHlwZSA9PSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpIHsKKyAgICAgICAgaWYgKHN0
dWJJbmZvLT5zZWVuKQorICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVl
LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3R1
YkluZm8uc2VlbiA9IHRydWU7CisgICAgICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiAg
ICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1KX0ZVTkNU
SU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FQ0kob3BlcmF0aW9uSW5PcHRpbWl6ZSk7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemVXaXRoUmV0
dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0xNzgsMjQgKzE3Mywy
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIAotICAgIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRTdHViSW5m
byhyZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2Fz
dDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAK
ICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJh
c2UpOwogICAgIGJvb2wgcmVzdWx0ID0gYXNPYmplY3QoYmFzZSktPmdldFByb3BlcnR5U2xvdChl
eGVjLCBpZGVudCwgc2xvdCk7CiAgICAgCi0gICAgUkVMRUFTRV9BU1NFUlQoYWNjZXNzVHlwZSA9
PSBzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBSRUxFQVNFX0FTU0VSVChhY2Nlc3NUeXBlID09
IHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKICAgICAKLSAgICBpZiAoc3R1YkluZm8uc2VlbikKLSAg
ICAgICAgcmVwYXRjaEluKGV4ZWMsIGJhc2UsIGlkZW50LCByZXN1bHQsIHNsb3QsIHN0dWJJbmZv
KTsKKyAgICBpZiAoc3R1YkluZm8tPnNlZW4pCisgICAgICAgIHJlcGF0Y2hJbihleGVjLCBiYXNl
LCBpZGVudCwgcmVzdWx0LCBzbG90LCAqc3R1YkluZm8pOwogICAgIGVsc2UKLSAgICAgICAgc3R1
YkluZm8uc2VlbiA9IHRydWU7CisgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKICAgICAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbihFeGVjU3RhdGUqIGV4ZWMsIEpT
Q2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25JbihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxs
KiBiYXNlLCBTdHJpbmdJbXBsKiBrZXkpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yMzUsNyArMjI5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FsbEdldHRlcihleGVjLCBiYXNlLCBnZXR0ZXJTZXR0ZXIpKTsK
IH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1w
bCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwpAQCAtMjQ1LDcgKzIzOSw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKICAgICBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpLnB1dChleGVjLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNs
b3QpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yNTUsNyArMjQ5LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAogICAgIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZSkucHV0KGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSwgc2xvdCk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAg
LTI2NSw3ICsyNTksNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVj
CiAgICAgYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSktPnB1dERpcmVjdChl
eGVjLT52bSgpLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwog
fQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yNzUsMTUgKzI2
OSwxMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiAgICAgYXNP
YmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSktPnB1dERpcmVjdChleGVjLT52bSgp
LCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQogCi1WX0ZV
TkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkpJKG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3RPcHRpbWl6ZSk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmlj
dE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1
aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5BZGRyZXNzKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQo
dm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJs
b2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSk7CkBAIC0yOTEsMjQgKzI4MywyMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZFN0cmljCiAgICAgCiAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgdmFs
dWUsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGlmIChzdHViSW5mby5zZWVuKQotICAgICAgICByZXBhdGNoUHV0QnlJRChl
eGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCBzdHViSW5mbywgTm90RGlyZWN0KTsKKyAgICBp
ZiAoc3R1YkluZm8tPnNlZW4pCisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1
ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKICAgICBlbHNlCi0gICAgICAg
IHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiB9
CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkkob3BlcmF0aW9u
UHV0QnlJZE5vblN0cmljdE9wdGltaXplKTsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkTm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCiAgICAg
SWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8u
YWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTMxNiwyNCArMzA2LDIyIEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKICAgICAKICAgICBiYXNlVmFsdWUucHV0
KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFj
Y2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHN0dWJJbmZvLnNlZW4pCi0gICAgICAg
IHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBO
b3REaXJlY3QpOworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaFB1dEJ5
SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBOb3REaXJlY3QpOwog
ICAgIGVsc2UKLSAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7CisgICAgICAgIHN0dWJJbmZv
LT5zZWVuID0gdHJ1ZTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJF
U1NfRUpKSShvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpOwotdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5B
ZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVj
dFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwotICAg
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRTdHVi
SW5mbyhyZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NUeXBlIGFj
Y2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7
CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpKTsKQEAgLTM0MSwyNCArMzI5LDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkRGlyZWMKICAgICAKICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNz
VHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmVw
YXRjaFB1dEJ5SUQoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBEaXJl
Y3QpOworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhl
YywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKICAgICBlbHNl
Ci0gICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHViSW5mby0+c2VlbiA9
IHRydWU7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkko
b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKTsKLXZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRk
cmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RO
b25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1
YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
OwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlKSk7CkBAIC0zNjYsMjQgKzM1MiwyMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjCiAgICAgCiAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZt
KCksIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vz
c1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJl
cGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCBzdHViSW5mbywgRGly
ZWN0KTsKKyAgICBpZiAoc3R1YkluZm8tPnNlZW4pCisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4
ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiAgICAgZWxz
ZQotICAgICAgICBzdHViSW5mby5zZWVuID0gdHJ1ZTsKKyAgICAgICAgc3R1YkluZm8tPnNlZW4g
PSB0cnVlOwogfQogCi1WX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkpJ
KG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QpOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3RXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAog
ICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwot
ICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJ
bmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC0zOTEsMjEgKzM3NSwxOSBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljCiAgICAgCiAgICAgYmFzZVZhbHVl
LnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBl
ICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAgIGlm
IChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhlYywg
YmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8sIE5vdERpcmVjdCk7CisgICAgYnVpbGRQ
dXRCeUlkTGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERp
cmVjdCk7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkko
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdCk7Ci12b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlz
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1w
bCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRk
cmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlw
ZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTQxMywyMSArMzk1LDE5
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKICAgICAKICAgICBi
YXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFj
Y2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkp
CisgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8t
PmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYnVpbGRQdXRCeUlkTGlz
dChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCBzdHViSW5mbywgTm90RGlyZWN0KTsKKyAg
ICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5m
bywgTm90RGlyZWN0KTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJF
U1NfRUpKSShvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KTsKLXZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0V2l0aFJldHVy
bkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGly
ZWN0U3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwot
ICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRT
dHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlw
ZSk7CiAgICAgCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKSk7CkBAIC00MzUsMjEgKzQxNSwxOSBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERpcmVjCiAgICAgCiAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4
ZWMtPnZtKCksIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUg
IT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYg
KGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5
cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYnVpbGRQdXRCeUlkTGlzdChleGVjLCBi
YXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgc3R1YkluZm8sIERpcmVjdCk7CisgICAgYnVpbGRQdXRC
eUlkTGlzdChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3Qp
OwogfQogCi1WX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkpJKG9wZXJh
dGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpOwotdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3RXaXRoUmV0dXJuQWRkcmVz
cyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5BZGRyZXNzKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25T
dHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJ
bmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsK
IAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZSkpOwpAQCAtNDU3LDEwICs0MzUsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlYwogICAgIAogICAgIGJhc2VPYmplY3QgLT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNz
VHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmpl
Y3QsIGlkZW50LCBzbG90LCBzdHViSW5mbywgRGlyZWN0KTsKKyAgICBidWlsZFB1dEJ5SWRMaXN0
KGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1
dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNTc1OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTEwLDYgKzExMCw3IEBAIGlubGluZSBKSVRIYW5kbGVyRW5jb2RlZCBkZmdIYW5kbGVy
RW5jb2QKICAgICBQYzogSW5zdHJ1Y3Rpb24qIGkuZS4gYnl0ZWNvZGUgUEMKICAgICBSOiBSZWdp
c3RlcgogICAgIFM6IHNpemVfdAorICAgIFNzaTogU3RydWN0dXJlU3R1YkluZm8qCiAgICAgU3Q6
IFN0cnVjdHVyZSoKICAgICBWOiB2b2lkCiAgICAgVzogV2F0Y2hwb2ludFNldCoKQEAgLTEyOSw3
ICsxMzAsNiBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKCiB0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSSkoRXhl
Y1N0YXRlKiwgU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OICgqSl9KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKQSko
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKLXR5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKSSkoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKSWRjKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgY29uc3QgSWRlbnRpZmllciopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OICgqSl9KSVRPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9K
SVRPcGVyYXRpb25fRUpzc1opKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgaW50MzJfdCk7CkBAIC0x
MzksNiArMTM5LDggQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSgog
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBT
KShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24q
KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9u
X0VTUykoRXhlY1N0YXRlKiwgc2l6ZV90LCBzaXplX3QpOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUNJKShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFN0cmluZ0ltcGwqKTsKK3R5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRlKiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopOwogdHlwZWRl
ZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVopKEV4ZWNT
dGF0ZSosIGludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgq
Sl9KSVRPcGVyYXRpb25fRVpJY2ZaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBJbmxpbmVDYWxsRnJh
bWUqLCBpbnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpf
SklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CkBAIC0xODAs
NyArMTgyLDYgQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdAogdHlw
ZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJh
dGlvbl9FSkNJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKiwgU3RyaW5nSW1w
bCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSklkSkop
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlKTsKLXR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVy
YXRpb25fRUpKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBT
dHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9u
X0VKSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9F
SlBQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCosIHZvaWQqKTsKIHR5cGVkZWYg
dm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUpaSikoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKQEAgLTE4OSw2ICsxOTAsNyBA
QCB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0CiB0eXBlZGVmIHZvaWQg
SklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VPWkopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04g
KCpWX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVm
IHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZv
aWQqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElP
TiAoKlZfSklUT3BlcmF0aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKik7CiB0eXBlZGVm
IHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX1cpKFdhdGNocG9pbnRTZXQqKTsK
IHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0
ZSosIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiBKSVRfT1BFUkFUSU9OICgqUF9KSVRPcGVyYXRp
b25fRSkoRXhlY1N0YXRlKik7CkBAIC0yMTUsMjYgKzIxNywyNiBAQCBKSVRIYW5kbGVyRW5jb2Rl
ZCBKSVRfT1BFUkFUSU9OIGxvb2t1cEV4CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3Rh
Y2tDaGVjayhFeGVjU3RhdGUqLCBDb2RlQmxvY2sqKSBXVEZfSU5URVJOQUw7CiBpbnQzMl90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soRXhlY1N0YXRlKikgV1RGX0lOVEVS
TkFMOwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2so
RXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUo
RXhlY1N0YXRlKiwgSlNDZWxsKiwgU3RyaW5nSW1wbCopOwotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25JbihFeGVjU3RhdGUqLCBKU0NlbGwqLCBTdHJpbmdJbXBsKik7CitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxk
TGlzdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBTdHJp
bmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEpTQ2VsbCosIFN0cmluZ0ltcGwqKTsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBT
dHJpbmdJbXBsKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlbmVy
aWNJbihFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxDdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiwgSlND
ZWxsKiwgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxHZXR0ZXIoRXhl
Y1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25T
dHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5n
SW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
LXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5n
SW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqLCBK
U09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSkgV1RG
X0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9J
TlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE1NzU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjUsOSAr
NTY1LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3QKIAogICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogICAgIAotICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0
VlJlZywgcmVnVDAsIGlkZW50LT5pbXBsKCkpOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbyA9IG1fY29kZUJsb2NrLT5hZGRTdHViSW5mbygpOworICAgIAorICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVz
dWx0VlJlZywgc3R1YkluZm8sIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKIAotICAgIG1fcHJvcGVy
dHlBY2Nlc3NDb21waWxhdGlvbkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgr
K10uc2xvd0Nhc2VJbmZvKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIG1fcHJvcGVydHlBY2Nl
c3NDb21waWxhdGlvbkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgrK10uc2xv
d0Nhc2VJbmZvKGNvbGRQYXRoQmVnaW4sIGNhbGwsIHN0dWJJbmZvKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02
MzEsMTAgKzYzMywxMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0
CiAgICAgICAgICAgICBvcHRpbWl6ZWRDYWxsID0gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9w
dGltaXplOwogICAgIH0KICAgICAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wdGlt
aXplZENhbGwsIHJlZ1QxLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CisgICAgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvID0gbV9jb2RlQmxvY2stPmFkZFN0dWJJbmZvKCk7CisKKyAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wdGltaXplZENhbGwsIHN0dWJJbmZvLCByZWdUMSwgcmVn
VDAsIGlkZW50LT5pbXBsKCkpOwogCiAgICAgLy8gVHJhY2sgdGhlIGxvY2F0aW9uIG9mIHRoZSBj
YWxsOyB0aGlzIHdpbGwgYmUgdXNlZCB0byByZWNvdmVyIHBhdGNoIGluZm9ybWF0aW9uLgotICAg
IG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9uSW5kZXgrK10uc2xvd0Nhc2VJbmZvKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIG1fcHJv
cGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5k
ZXgrK10uc2xvd0Nhc2VJbmZvKGNvbGRQYXRoQmVnaW4sIGNhbGwsIHN0dWJJbmZvKTsKIH0KIAog
Ly8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1h
eSBvdmVyd3JpdGUgdGhlCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CYWdUb0hhc2hNYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWdUb0hhc2hNYXAuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XVEYvd3RmL0JhZ1RvSGFzaE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJhZ1RvSGFzaE1hcF9oCisjZGVmaW5lIEJhZ1Rv
SGFzaE1hcF9oCisKKyNpbmNsdWRlIDx3dGYvQmFnLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCB0
eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBLZXlHZXR0ZXJGdW5jdG9yPgordm9pZCB0b0hhc2hN
YXAoQmFnPEVsZW1lbnRUeXBlPiYgYmFnLCBLZXlHZXR0ZXJGdW5jdG9yJiBnZXRLZXksIEhhc2hN
YXA8S2V5VHlwZSwgRWxlbWVudFR5cGUqPiYgcmVzdWx0KQoreworICAgIGZvciAoQmFnPEVsZW1l
bnRUeXBlPjo6aXRlcmF0b3IgaXRlciA9IGJhZy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgewor
ICAgICAgICBFbGVtZW50VHlwZSogZWxlbWVudCA9ICppdGVyOworICAgICAgICByZXN1bHQuYWRk
KGdldEtleSgqZWxlbWVudCksIGVsZW1lbnQpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEJhZ1RvSGFzaE1hcF9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214541</attachid>
            <date>2013-10-17 20:38:15 -0700</date>
            <delta_ts>2013-10-17 23:55:20 -0700</delta_ts>
            <desc>sort of starting to compile</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>93170</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxNTc1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIGR1
bXBDaGFpbihQcmludFN0cmVhbSYgb3V0LCAKIH0KICNlbmRpZgogCi12b2lkIENvZGVCbG9jazo6
cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVj
LCBpbnQgbG9jYXRpb24pCit2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMo
UHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIFN0dWJJbmZv
TWFwJiBtYXApCiB7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC0zNTAsOCArMzUwLDggQEAgdm9pZCBDb2RlQmxv
Y2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKAogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUKQot
ICAgIGlmIChudW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKSB7Ci0gICAgICAgIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbyA9IGdldFN0dWJJbmZvKGxvY2F0aW9uKTsKKyAgICBpZiAoIW1f
c3R1YkluZm9zLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8gPSAqbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSk7CiAgICAgICAgIGlmIChzdHViSW5m
by5zZWVuKSB7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KCIpOwogICAgICAgICAgICAg
CkBAIC01NTIsMTEgKzU1Miw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0KICAgICAgICAgfSB3aGlsZSAoaSA8IGNvdW50KTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
SklUKQotICAgIGlmICghbV9zdHJ1Y3R1cmVTdHViSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICBv
dXQucHJpbnRmKCJcblN0cnVjdHVyZXM6XG4iKTsKLSNlbmRpZgotCiAgICAgaWYgKG1fcmFyZURh
dGEgJiYgIW1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIG91dC5wcmludGYoIlxuRXhjZXB0aW9uIEhhbmRsZXJzOlxuIik7CiAgICAgICAgIHVuc2ln
bmVkIGkgPSAwOwpAQCAtMTQxMyw3ICsxNDA4LDYgQEAgc3RhdGljIEhhc2hTZXQ8Q29kZUJsb2Nr
Kj4gbGl2ZUNvZGVCbG9jawogCiAjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8p
IFwKICAgICBtYWNybyhpbnN0cnVjdGlvbnMpIFwKLSAgICBtYWNybyhzdHJ1Y3R1cmVTdHViSW5m
b3MpIFwKICAgICBtYWNybyhjYWxsTGlua0luZm9zKSBcCiAgICAgbWFjcm8obGlua2VkQ2FsbGVy
TGlzdCkgXAogICAgIG1hY3JvKGlkZW50aWZpZXJzKSBcCkBAIC0xOTMwLDggKzE5MjQsOCBAQCBD
b2RlQmxvY2s6On5Db2RlQmxvY2soKQogICAgIC8vIG1faW5jb21pbmdDYWxscyBsaW5rZWQgbGlz
dHMgdGhyb3VnaCB0aGUgZXhlY3V0aW9uIG9mIHRoZSB+Q2FsbExpbmtJbmZvCiAgICAgLy8gZGVz
dHJ1Y3RvcnMuCiAKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9zdHJ1Y3R1cmVTdHViSW5mb3Mu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbV9zdHJ1Y3R1cmVTdHViSW5m
b3NbaV0uZGVyZWYoKTsKKyAgICBmb3IgKEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9y
IGl0ZXIgPSBtX3N0cnVjdHVyZVN0dWJJbmZvcy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikKKyAg
ICAgICAgKCppdGVyKS0+ZGVyZWYoKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAjaWYgRFVN
UF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKQEAgLTIwODYsOCArMjA4MCw4IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG8KIAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYg
KEpJVENvZGU6OmlzSklUKGppdFR5cGUoKSkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBtX3N0cnVjdHVyZVN0dWJJbmZvc1tpXTsKKyAg
ICAgICAgZm9yIChCYWc8U3RydWN0dXJlU3R1YkluZm8+OjppdGVyYXRvciBpdGVyID0gbV9zdHJ1
Y3R1cmVTdHViSW5mb3MuYmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICoqaXRlcjsKICAgICAgICAgICAgIHN3aXRjaCAo
c3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgICAgICAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0OiB7CkBAIC0yMzQzLDggKzIzMzcsOCBAQCB2b2lkIENvZGVCbG9jazo6
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgICAgICAgICAgJiYgIUhlYXA6OmlzTWFy
a2VkKGNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkpCiAgICAgICAgICAgICAg
ICAgY2FsbExpbmtJbmZvKGkpLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbyA9IG1fc3RydWN0dXJlU3R1YkluZm9zW2ldOworICAgICAgICBmb3IgKEJhZzxTdHJ1Y3R1
cmVTdHViSW5mbz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3N0cnVjdHVyZVN0dWJJbmZvcy5iZWdpbigp
OyAhIWl0ZXI7ICsraXRlcikgeworICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvID0gKippdGVyOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc3R1YkluZm8udmlz
aXRXZWFrUmVmZXJlbmNlcygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM1Niw2
ICsyMzUwLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKIH0K
IAogI2lmIEVOQUJMRShKSVQpCitTdHJ1Y3R1cmVTdHViSW5mbyogQ29kZUJsb2NrOjphZGRTdHVi
SW5mbygpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBy
ZXR1cm4gbV9zdHJ1Y3R1cmVTdHViSW5mb3MuYWRkKCk7Cit9CisKK3ZvaWQgQ29kZUJsb2NrOjpn
ZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3R1YkluZm9NYXAmIHJl
c3VsdCkKK3sKKyAgICB0b0hhc2hNYXAobV9zdHJ1Y3R1cmVTdHViSW5mb3MsIGdldFN0cnVjdHVy
ZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKK30KKwogdm9pZCBDb2RlQmxvY2s6OnJlc2V0
U3R1YihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKHN0dWJJbmZvLmFj
Y2Vzc1R5cGUgPT0gYWNjZXNzX3Vuc2V0KQpAQCAtMjU3OCw3ICsyNTgzLDYgQEAgdm9pZCBDb2Rl
QmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjbwogdm9pZCBDb2RlQmxvY2s6OnNocmlua1Rv
Rml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKIHsKICNpZiBFTkFCTEUoSklUKQotICAgIG1fc3Ry
dWN0dXJlU3R1YkluZm9zLnNocmlua1RvRml0KCk7CiAgICAgbV9jYWxsTGlua0luZm9zLnNocmlu
a1RvRml0KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0zMDk2LDE2
ICszMTAwLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNldE9wdGltaXphdGlvblRocmVzaG9sZAogCiAj
ZW5kaWYKICAgICAKLXN0YXRpYyBib29sIHN0cnVjdHVyZVN0dWJJbmZvTGVzc1RoYW4oY29uc3Qg
U3RydWN0dXJlU3R1YkluZm8mIGEsIGNvbnN0IFN0cnVjdHVyZVN0dWJJbmZvJiBiKQotewotICAg
IHJldHVybiBhLmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpIDwgYi5jYWxs
UmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6
OnNvcnRTdHJ1Y3R1cmVTdHViSW5mb3MoKQotewotICAgIHN0ZDo6c29ydChtX3N0cnVjdHVyZVN0
dWJJbmZvcy5iZWdpbigpLCBtX3N0cnVjdHVyZVN0dWJJbmZvcy5lbmQoKSwgc3RydWN0dXJlU3R1
YkluZm9MZXNzVGhhbik7Ci19Ci0KIHVpbnQzMl90IENvZGVCbG9jazo6YWRqdXN0ZWRFeGl0Q291
bnRUaHJlc2hvbGQodWludDMyX3QgZGVzaXJlZFRocmVzaG9sZCkKIHsKICAgICBBU1NFUlQoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTU3NTkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzAsMTggKzE3MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxp
bmUsIHVuc2lnbmVkJiBjb2x1bW4pOwogCiAjaWYgRU5BQkxFKEpJVCkKLQotICAgIFN0cnVjdHVy
ZVN0dWJJbmZvJiBnZXRTdHViSW5mbyhSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi0g
ICAgewotICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8U3RydWN0dXJlU3R1YkluZm8sIHZv
aWQqPihtX3N0cnVjdHVyZVN0dWJJbmZvcywgbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6ZSgpLCBy
ZXR1cm5BZGRyZXNzLnZhbHVlKCksIGdldFN0cnVjdHVyZVN0dWJJbmZvUmV0dXJuTG9jYXRpb24p
KTsKLSAgICB9Ci0KLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgZ2V0U3R1YkluZm8odW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxTdHJ1
Y3R1cmVTdHViSW5mbywgdW5zaWduZWQ+KG1fc3RydWN0dXJlU3R1YkluZm9zLCBtX3N0cnVjdHVy
ZVN0dWJJbmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgsIGdldFN0cnVjdHVyZVN0dWJJbmZvQnl0
ZWNvZGVJbmRleCkpOwotICAgIH0KKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8o
KTsKKyAgICBCYWc8U3RydWN0dXJlU3R1YkluZm8+OjppdGVyYXRvciBiZWdpbigpIHsgcmV0dXJu
IG1fc3R1YkluZm9zLmJlZ2luKCk7IH0KKyAgICBCYWc8U3RydWN0dXJlU3R1YkluZm8+OjppdGVy
YXRvciBlbmQoKSB7IHJldHVybiBtX3N0dWJJbmZvcy5lbmQoKTsgfQogCiAgICAgdm9pZCByZXNl
dFN0dWIoU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICAKKyAgICB2b2lkIGdldFN0dWJJbmZvTWFw
KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHViSW5mb01hcCYgcmVzdWx0KTsKIAogICAg
IEJ5VmFsSW5mbyYgZ2V0QnlWYWxJbmZvKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiAgICAgewpA
QCAtMzc3LDExICszNzIsNiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIG5hbWVGb3JSZWdpc3RlcihW
aXJ0dWFsUmVnaXN0ZXIpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICB2b2lkIHNldE51bWJlck9m
U3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBzaXplKSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdy
b3coc2l6ZSk7IH0KLSAgICB2b2lkIHNvcnRTdHJ1Y3R1cmVTdHViSW5mb3MoKTsKLSAgICBzaXpl
X3QgbnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVy
ZVN0dWJJbmZvcy5zaXplKCk7IH0KLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3RydWN0dXJlU3R1
YkluZm8oaW50IGluZGV4KSB7IHJldHVybiBtX3N0cnVjdHVyZVN0dWJJbmZvc1tpbmRleF07IH0K
LQogICAgIHZvaWQgc2V0TnVtYmVyT2ZCeVZhbEluZm9zKHNpemVfdCBzaXplKSB7IG1fYnlWYWxJ
bmZvcy5ncm93KHNpemUpOyB9CiAgICAgc2l6ZV90IG51bWJlck9mQnlWYWxJbmZvcygpIGNvbnN0
IHsgcmV0dXJuIG1fYnlWYWxJbmZvcy5zaXplKCk7IH0KICAgICBCeVZhbEluZm8mIGJ5VmFsSW5m
byhzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fYnlWYWxJbmZvc1tpbmRleF07IH0KQEAgLTQ0NSw4
ICs0MzUsOCBAQCBwdWJsaWM6CiAgICAgUmFyZUNhc2VQcm9maWxlKiByYXJlQ2FzZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgewogICAgICAgICByZXR1
cm4gdHJ5QmluYXJ5U2VhcmNoPFJhcmVDYXNlUHJvZmlsZSwgaW50PigKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yYXJlQ2FzZVByb2ZpbGVz
LCBtX3JhcmVDYXNlUHJvZmlsZXMuc2l6ZSgpLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmFyZUNhc2VQcm9m
aWxlQnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgbV9yYXJlQ2FzZVByb2ZpbGVzLCBtX3Jh
cmVDYXNlUHJvZmlsZXMuc2l6ZSgpLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgICAgIGdldFJh
cmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KTsKICAgICB9CiAKICAgICBib29sIGxpa2VseVRv
VGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKQEAgLTk0Miw3ICs5MzIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcHJpbnRCaW5hcnlPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGlu
dCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOwogICAgIHZv
aWQgcHJpbnRDb25kaXRpb25hbEp1bXAoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBjb25zdCBJ
bnN0cnVjdGlvbiosIGNvbnN0IEluc3RydWN0aW9uKiYsIGludCBsb2NhdGlvbiwgY29uc3QgY2hh
ciogb3ApOwogICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUq
LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYpOwotICAgIHZvaWQgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24pOwor
ICAgIHZvaWQgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUq
LCBpbnQgbG9jYXRpb24sIFN0dWJJbmZvTWFwJiBtYXApOwogICAgIGVudW0gQ2FjaGVEdW1wTW9k
ZSB7IER1bXBDYWNoZXMsIERvbnREdW1wQ2FjaGVzIH07CiAgICAgdm9pZCBwcmludENhbGxPcChQ
cmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24q
JiwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxp
bmcpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKQEAgLTEw
MzEsNyArMTAyMSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZTsK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5Q2hlY2s7CiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0dXJlU3R1
YkluZm9zOworICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHViSW5mb3M7CiAgICAgVmVj
dG9yPEJ5VmFsSW5mbz4gbV9ieVZhbEluZm9zOwogICAgIFZlY3RvcjxDYWxsTGlua0luZm8+IG1f
Y2FsbExpbmtJbmZvczsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNp
Y1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAx
NTc1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCwxMiBAQCBzdHJ1Y3QgQ29kZU9yaWdpbiB7CiAgICAg
ewogICAgIH0KICAgICAKKyAgICBDb2RlT3JpZ2luKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSkKKyAgICAgICAgOiBieXRlY29kZUluZGV4KGludmFsaWRCeXRlY29kZUluZGV4KQorICAg
ICAgICAsIGlubGluZUNhbGxGcmFtZShiaXR3aXNlX2Nhc3Q8SW5saW5lQ2FsbEZyYW1lKj4oc3Rh
dGljX2Nhc3Q8dWludHB0cl90PigxKSkpCisgICAgeworICAgIH0KKyAgICAKICAgICBleHBsaWNp
dCBDb2RlT3JpZ2luKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lID0gMCkKICAgICAgICAgOiBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
CiAgICAgICAgICwgaW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSkKQEAgLTY5LDYgKzc1
LDExIEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICBib29sIGlzU2V0KCkgY29uc3Qg
eyByZXR1cm4gYnl0ZWNvZGVJbmRleCAhPSBpbnZhbGlkQnl0ZWNvZGVJbmRleDsgfQogICAgIAor
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJ5dGVjb2RlSW5kZXggPT0gaW52YWxpZEJ5dGVjb2RlSW5kZXggJiYgISFpbmxpbmVD
YWxsRnJhbWU7CisgICAgfQorICAgIAogICAgIC8vIFRoZSBpbmxpbmUgZGVwdGggaXMgdGhlIGRl
cHRoIG9mIHRoZSBpbmxpbmUgc3RhY2ssIHNvIDEgPSBub3QgaW5saW5lZCwKICAgICAvLyAyID0g
aW5saW5lZCBvbmUgZGVlcCwgZXRjLgogICAgIHVuc2lnbmVkIGlubGluZURlcHRoKCkgY29uc3Q7
CkBAIC04MSw4ICs5Miw4IEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICBzdGF0aWMg
dW5zaWduZWQgaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoSW5saW5lQ2FsbEZyYW1lKik7CiAgICAg
CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
b2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7Ci0gICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
ICAgIAogICAgIC8vIEdldCB0aGUgaW5saW5lIHN0YWNrLiBUaGlzIGlzIHNsb3csIGFuZCBpcyBp
bnRlbmRlZCBmb3IgZGVidWdnaW5nIG9ubHkuCkBAIC0xNDUsNiArMTU2LDEyIEBAIGlubGluZSBp
bnQgQ29kZU9yaWdpbjo6c3RhY2tPZmZzZXQoKSBjb24KICAgICByZXR1cm4gaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldDsKIH0KIAoraW5saW5lIHVuc2lnbmVkIENvZGVPcmlnaW46Omhhc2go
KSBjb25zdAoreworICAgIHJldHVybiBXVEY6OkludEhhc2g8dW5zaWduZWQ+OjpoYXNoKGJ5dGVj
b2RlSW5kZXgpICsKKyAgICAgICAgV1RGOjpQdHJIYXNoPElubGluZUNhbGxGcmFtZSo+OjpoYXNo
KGlubGluZUNhbGxGcmFtZSk7Cit9CisKIGlubGluZSBib29sIENvZGVPcmlnaW46Om9wZXJhdG9y
PT0oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJ5dGVjb2Rl
SW5kZXggPT0gb3RoZXIuYnl0ZWNvZGVJbmRleApAQCAtMTU4LDcgKzE3NSwyNSBAQCBpbmxpbmUg
U2NyaXB0RXhlY3V0YWJsZSogQ29kZU9yaWdpbjo6Y29kCiAgICAgcmV0dXJuIGlubGluZUNhbGxG
cmFtZS0+ZXhlY3V0YWJsZS5nZXQoKTsKIH0KIAorc3RydWN0IENvZGVPcmlnaW5IYXNoIHsKKyAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDb2RlT3JpZ2luJiBrZXkpIHsgcmV0dXJuIGtl
eS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDb2RlT3JpZ2luJiBhLCBj
b25zdCBDb2RlT3JpZ2luJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6Q29k
ZU9yaWdpbj4geworICAgIHR5cGVkZWYgSlNDOjpDb2RlT3JpZ2luSGFzaCBIYXNoOworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBIYXNoVHJhaXRzPEpTQzo6Q29kZU9yaWdpbj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlND
OjpDb2RlT3JpZ2luPiB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5kaWYgLy8gQ29k
ZU9yaWdpbl9oCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDE1NzU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcg
KzEwNSw3IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKEdldEIKICNlbmRp
ZgogfQogCi1HZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBTdHJpbmdJbXBsKiB1aWQp
CitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCBTdHViSW5mb01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBTdHJp
bmdJbXBsKiB1aWQpCiB7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIocHJvZmlsZWRC
bG9jay0+bV9sb2NrKTsKICAgICAKQEAgLTExMywyOCArMTEzLDIzIEBAIEdldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRl
eCk7CiAgICAgVU5VU0VEX1BBUkFNKHVpZCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZB
TFVFX1BST0ZJTEVSKQotICAgIGlmICghcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9m
aWxpbmcoKSkKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtYXAuZ2V0KENvZGVP
cmlnaW4oYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICghc3R1YkluZm8gfHwgIXN0dWJJbmZvLT5z
ZWVuKQogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRl
Y29kZUluZGV4LCB1aWQpOwogICAgIAotICAgIC8vIEZpcnN0IGNoZWNrIGlmIGl0IG1ha2VzIGVp
dGhlciBjYWxscywgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIHN1cGVyIGNhcmVmdWwsIG9y
Ci0gICAgLy8gaWYgaXQncyBub3Qgc2V0IGF0IGFsbCwgaW4gd2hpY2ggY2FzZSB3ZSBwdW50Lgot
ICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJ
bmZvKGJ5dGVjb2RlSW5kZXgpOwotICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0
dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgdWlkKTsK
LSAgICAKLSAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQorICAgIGlmIChzdHViSW5mby0+cmVz
ZXRCeUdDKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCB0cnVl
KTsKIAogICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQg
bGlzdFNpemU7Ci0gICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CisgICAgc3dpdGNo
IChzdHViSW5mby0+YWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxm
X2xpc3Q6Ci0gICAgICAgIGxpc3QgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5zdHJ1Y3R1
cmVMaXN0OwotICAgICAgICBsaXN0U2l6ZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0Lmxp
c3RTaXplOworICAgICAgICBsaXN0ID0gc3R1YkluZm8tPnUuZ2V0QnlJZFNlbGZMaXN0LnN0cnVj
dHVyZUxpc3Q7CisgICAgICAgIGxpc3RTaXplID0gc3R1YkluZm8tPnUuZ2V0QnlJZFNlbGZMaXN0
Lmxpc3RTaXplOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfcHJv
dG9fbGlzdDoKLSAgICAgICAgbGlzdCA9IHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvTGlzdC5zdHJ1
Y3R1cmVMaXN0OwotICAgICAgICBsaXN0U2l6ZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvTGlz
dC5saXN0U2l6ZTsKKyAgICAgICAgbGlzdCA9IHN0dWJJbmZvLT51LmdldEJ5SWRQcm90b0xpc3Qu
c3RydWN0dXJlTGlzdDsKKyAgICAgICAgbGlzdFNpemUgPSBzdHViSW5mby0+dS5nZXRCeUlkUHJv
dG9MaXN0Lmxpc3RTaXplOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBs
aXN0ID0gMDsKQEAgLTE1MywxMiArMTQ4LDEyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcigKICAgICAvLyBGaW5hbGx5IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2
ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAgICAgR2V0QnlJZFN0YXR1cyByZXN1bHQ7CiAgICAgcmVz
dWx0Lm1fd2FzU2VlbkluSklUID0gdHJ1ZTsgLy8gVGhpcyBpcyBpbnRlcmVzdGluZyBmb3IgYnl0
ZWNvZGUgZHVtcGluZyBvbmx5LgotICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewor
ICAgIHN3aXRjaCAoc3R1YkluZm8tPmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNl
dDoKICAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNv
ZGVJbmRleCwgdWlkKTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6
IHsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxm
LmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gc3R1YkluZm8tPnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKICAg
ICAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZTsKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJy
ZW50bHkoCkBAIC0yMTQsMjQgKzIwOSwyNCBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRf
cHJvdG86IHsKLSAgICAgICAgaWYgKCFzdHViSW5mby51LmdldEJ5SWRQcm90by5pc0RpcmVjdCkK
KyAgICAgICAgaWYgKCFzdHViSW5mby0+dS5nZXRCeUlkUHJvdG8uaXNEaXJlY3QpCiAgICAgICAg
ICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCB0cnVlKTsKICAgICAgICAgcmVz
dWx0Lm1fY2hhaW4gPSBhZG9wdFJlZihuZXcgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbigKICAgICAg
ICAgICAgIHByb2ZpbGVkQmxvY2ssCi0gICAgICAgICAgICBzdHViSW5mby51LmdldEJ5SWRQcm90
by5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAotICAgICAgICAgICAgc3R1YkluZm8udS5nZXRC
eUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICBzdHViSW5m
by0+dS5nZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAg
IHN0dWJJbmZvLT51LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAg
ICAgICAgY29tcHV0ZUZvckNoYWluKHJlc3VsdCwgcHJvZmlsZWRCbG9jaywgdWlkKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hh
aW46IHsKLSAgICAgICAgaWYgKCFzdHViSW5mby51LmdldEJ5SWRDaGFpbi5pc0RpcmVjdCkKKyAg
ICAgICAgaWYgKCFzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4uaXNEaXJlY3QpCiAgICAgICAgICAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCB0cnVlKTsKICAgICAgICAgcmVzdWx0
Lm1fY2hhaW4gPSBhZG9wdFJlZihuZXcgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbigKICAgICAgICAg
ICAgIHByb2ZpbGVkQmxvY2ssCi0gICAgICAgICAgICBzdHViSW5mby51LmdldEJ5SWRDaGFpbi5i
YXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAotICAgICAgICAgICAgc3R1YkluZm8udS5nZXRCeUlk
Q2hhaW4uY2hhaW4uZ2V0KCksCi0gICAgICAgICAgICBzdHViSW5mby51LmdldEJ5SWRDaGFpbi5j
b3VudCkpOworICAgICAgICAgICAgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RT
dHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICBzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4uY2hh
aW4uZ2V0KCksCisgICAgICAgICAgICBzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4uY291bnQpKTsK
ICAgICAgICAgY29tcHV0ZUZvckNoYWluKHJlc3VsdCwgcHJvZmlsZWRCbG9jaywgdWlkKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxNTc1OTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKChzdGF0ZSA9PSBTaW1wbGUpID09IChv
ZmZzZXQgIT0gaW52YWxpZE9mZnNldCkpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgR2V0QnlJ
ZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0
cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2Rl
QmxvY2sqLCBTdHViSW5mb01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBTdHJpbmdJ
bXBsKiB1aWQpOwogICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoVk0mLCBTdHJ1
Y3R1cmUqLCBTdHJpbmdJbXBsKiB1aWQpOwogICAgIAogICAgIFN0YXRlIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTU3NTkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MSw3ICs4MSw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20K
ICNlbmRpZgogfQogCi1QdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBTdHJpbmdJbXBs
KiB1aWQpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrLCBTdHViSW5mb01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
LCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIocHJv
ZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAKQEAgLTg5LDMyICs4OSwyOSBAQCBQdXRCeUlkU3Rh
dHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
SW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh1aWQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKLSAgICBpZiAoIXByb2ZpbGVkQmxvY2stPmhhc0Jhc2VsaW5lSklU
UHJvZmlsaW5nKCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxv
Y2ssIGJ5dGVjb2RlSW5kZXgsIHVpZCk7Ci0gICAgCiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxp
a2VseVRvVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQogICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKLSAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5m
byhieXRlY29kZUluZGV4KTsKLSAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCisgICAgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJ
bmRleCk7CisgICAgaWYgKCFzdHViSW5mbyB8fCAhc3R1YkluZm8tPnNlZW4pCiAgICAgICAgIHJl
dHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHVpZCk7
CiAgICAgCi0gICAgaWYgKHN0dWJJbmZvLnJlc2V0QnlHQykKKyAgICBpZiAoc3R1YkluZm8tPnJl
c2V0QnlHQykKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwg
MCwgMCwgaW52YWxpZE9mZnNldCk7CiAKLSAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUp
IHsKKyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3Nf
dW5zZXQ6CiAgICAgICAgIC8vIElmIHRoZSBKSVQgc2F3IGl0IGJ1dCBkaWRuJ3Qgb3B0aW1pemUg
aXQsIHRoZW4gYXNzdW1lIHRoYXQgdGhpcyB0YWtlcyBzbG93IHBhdGguCiAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwog
ICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPQotICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVw
bGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCisgICAgICAgICAgICBz
dHViSW5mby0+dS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXRDb25jdXJy
ZW50bHkoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPnZtKCksIHVpZCk7CiAgICAg
ICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNpbXBsZVJlcGxhY2UsCi0gICAgICAgICAgICAg
ICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAor
ICAgICAgICAgICAgICAgIHN0dWJJbmZvLT51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCksCiAgICAgICAgICAgICAgICAgMCwgMCwKICAgICAgICAgICAgICAgICBvZmZz
ZXQpOwogICAgICAgICB9CkBAIC0xMjMsMTggKzEyMCwxOCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6IHsKLSAgICAgICAgQVNTRVJUKHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24u
cHJldmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRh
dGVkKCkpOworICAgICAgICBBU1NFUlQoc3R1YkluZm8tPnUucHV0QnlJZFRyYW5zaXRpb24ucHJl
dmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVk
KCkpOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSAKLSAgICAgICAgICAgIHN0dWJJ
bmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCisgICAg
ICAgICAgICBzdHViSW5mby0+dS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldENvbmN1
cnJlbnRseSgKICAgICAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+dm0oKSwgdWlkKTsKICAg
ICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1
dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxlVHJhbnNpdGlvbiwKLSAgICAgICAg
ICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLmdl
dCgpLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0
dXJlLmdldCgpLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24u
Y2hhaW4gPyBhZG9wdFJlZihuZXcgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbigKLSAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2
aW91c1N0cnVjdHVyZS5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRC
eUlkVHJhbnNpdGlvbi5jaGFpbi5nZXQoKSkpIDogMCwKKyAgICAgICAgICAgICAgICBzdHViSW5m
by0+dS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAg
ICAgICAgICBzdHViSW5mby0+dS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUuZ2V0KCksCisg
ICAgICAgICAgICAgICAgc3R1YkluZm8tPnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4gPyBhZG9w
dFJlZihuZXcgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbigKKyAgICAgICAgICAgICAgICAgICAgcHJv
ZmlsZWRCbG9jaywgc3R1YkluZm8tPnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1
cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT51LnB1dEJ5SWRUcmFuc2l0
aW9uLmNoYWluLmdldCgpKSkgOiAwLAogICAgICAgICAgICAgICAgIG9mZnNldCk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwg
aW52YWxpZE9mZnNldCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDE1NzU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkw
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8
fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0
KSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKTsKKyAgICBz
dGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKTsKICAgICBzdGF0aWMgUHV0
QnlJZFN0YXR1cyBjb21wdXRlRm9yKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBT
dHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpOwogICAgIAogICAgIFN0YXRlIHN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDE1NzU5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOTQsMTUgKzI5NCwxMiBAQCBzdHJ1Y3QgU3RydWN0dXJl
U3R1YkluZm8gewogICAgIFJlZlB0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+IHdh
dGNocG9pbnRzOwogfTsKIAotaW5saW5lIHZvaWQqIGdldFN0cnVjdHVyZVN0dWJJbmZvUmV0dXJu
TG9jYXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0cnVjdHVyZVN0dWJJbmZvKQoraW5saW5lIENv
ZGVPcmlnaW4gZ2V0U3RydWN0dXJlU3R1YkluZm9Db2RlT3JpZ2luKFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHJ1Y3R1cmVTdHViSW5mbykKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlU3R1YkluZm8tPmNh
bGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIHJldHVybiBzdHJ1Y3R1
cmVTdHViSW5mby5jb2RlT3JpZ2luOwogfQogCi1pbmxpbmUgdW5zaWduZWQgZ2V0U3RydWN0dXJl
U3R1YkluZm9CeXRlY29kZUluZGV4KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHJ1Y3R1cmVTdHViSW5m
bykKLXsKLSAgICByZXR1cm4gc3RydWN0dXJlU3R1YkluZm8tPmNvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleDsKLX0KK3R5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyo+
IFN0dWJJbmZvTWFwOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE1NzU5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDU4LDYgKzEwNTgsOCBAQCBwcml2YXRlOgogICAgICAgICAvLyBj
b2RlIGJsb2NrIGhhZCBnYXRoZXJlZC4KICAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQ
YXJzZXIgbV9sYXp5T3BlcmFuZHM7CiAgICAgICAgIAorICAgICAgICBTdHViSW5mb01hcCBtX3N0
dWJJbmZvczsKKyAgICAgICAgCiAgICAgICAgIC8vIERpZCB3ZSBzZWUgYW55IHJldHVybnM/IFdl
IG5lZWQgdG8gaGFuZGxlIHRoZSAodW5jb21tb24gYnV0IG5lY2Vzc2FyeSkKICAgICAgICAgLy8g
Y2FzZSB3aGVyZSBhIHByb2NlZHVyZSB0aGF0IGRvZXMgbm90IHJldHVybiB3YXMgaW5saW5lZC4K
ICAgICAgICAgYm9vbCBtX2RpZFJldHVybjsKQEAgLTI0MzgsNyArMjQ0MCw4IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1i
ZXJdOwogICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVzID0gR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4LCB1aWQpOworICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5m
b3MsCisgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgsIHVpZCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAgICAgY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwg
Z2V0QnlJZFN0YXR1cyk7CkBAIC0yNDU3LDkgKzI0NjAsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBib29sIGRpcmVjdCA9IGN1cnJlbnRJ
bnN0cnVjdGlvbls4XS51Lm9wZXJhbmQ7CiAKICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0
QnlJZFN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAotICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEluZGV4LAotICAgICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlm
aWVyTnVtYmVyXSk7CisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywKKyAgICAgICAgICAgICAgICBt
X2N1cnJlbnRJbmRleCwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdKTsK
ICAgICAgICAgICAgIGJvb2wgY2FuQ291bnRBc0lubGluZWQgPSB0cnVlOwogICAgICAgICAgICAg
aWYgKCFwdXRCeUlkU3RhdHVzLmlzU2V0KCkpIHsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEZvcmNlT1NSRXhpdCk7CkBAIC0zMzM0LDYgKzMzMzYsMTIgQEAgQnl0ZUNvZGVQYXJzZXI6Oklu
bGluZVN0YWNrRW50cnk6OklubGluZQogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihtX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAgICAgICAgIG1fbGF6eU9wZXJhbmRzLmluaXRp
YWxpemUobG9ja2VyLCBtX3Byb2ZpbGVkQmxvY2stPmxhenlPcGVyYW5kVmFsdWVQcm9maWxlcygp
KTsKICAgICAgICAgbV9leGl0UHJvZmlsZS5pbml0aWFsaXplKGxvY2tlciwgcHJvZmlsZWRCbG9j
ay0+ZXhpdFByb2ZpbGUoKSk7CisgICAgICAgIAorICAgICAgICAvLyBXZSBkbyB0aGlzIHdoaWxl
IGhvbGRpbmcgdGhlIGxvY2sgYmVjYXVzZSB3ZSB3YW50IHRvIGVuY291cmFnZSBTdHJ1Y3R1cmVT
dHViSW5mbydzCisgICAgICAgIC8vIHRvIGJlIHBvdGVudGlhbGx5IGFkZGVkIHRvIG9wZXJhdGlv
bnMgYW5kIGJlY2F1c2UgdGhlIHByb2ZpbGVkIGJsb2NrIGNvdWxkIGJlIGluIHRoZQorICAgICAg
ICAvLyBtaWRkbGUgb2YgTExJbnQtPkpJVCB0aWVyLXVwIGluIHdoaWNoIGNhc2Ugd2Ugd291bGQg
YmUgYWRkaW5nIHRoZSBpbmZvJ3MgcmlnaHQgbm93LgorICAgICAgICBpZiAobV9wcm9maWxlZEJs
b2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQorICAgICAgICAgICAgbV9wcm9maWxlZEJs
b2NrLT5nZXRTdHViSW5mb01hcChsb2NrZXIsIG1fc3R1YkluZm9zKTsKICAgICB9CiAgICAgCiAg
ICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJ
KHJldmlzaW9uIDE1NzU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsMTEgKzIyNCw5IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9jYWxscy5zaXplKCk7ICsraSkKICAgICAgICAgbGlua0J1ZmZlci5saW5rKG1fY2FsbHNb
aV0ubV9jYWxsLCBtX2NhbGxzW2ldLm1fZnVuY3Rpb24pOwogCi0gICAgbV9jb2RlQmxvY2stPnNl
dE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKG1fcHJvcGVydHlBY2Nlc3Nlcy5zaXplKCkgKyBt
X2lucy5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb3BlcnR5QWNj
ZXNzZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSBt
X2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8oaSk7CisgICAgICAgIFN0cnVjdHVyZVN0dWJJ
bmZvJiBpbmZvID0gKm1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3N0dWJJbmZvOwogICAgICAgICBD
b2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25P
ZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+Y2FsbCgpKTsKLSAg
ICAgICAgaW5mby5jb2RlT3JpZ2luID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fY29kZU9yaWdp
bjsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBjYWxsUmV0dXJuTG9jYXRpb247
CiAgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCA9IGRpZmZlcmVuY2VCZXR3
ZWVuQ29kZVB0cihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1f
c3RydWN0dXJlSW1tKSwgY2FsbFJldHVybkxvY2F0aW9uKTsKICAgICAgICAgaW5mby5wYXRjaC5k
ZWx0YUNhbGxUb1N0cnVjdENoZWNrID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1
cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5t
X3N0cnVjdHVyZUNoZWNrKSk7CkBAIC0yNDEsMzAgKzIzOSwxNSBAQCB2b2lkIEpJVENvbXBpbGVy
OjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9T
bG93Q2FzZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxp
bmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93UGF0aEdlbmVy
YXRvci0+bGFiZWwoKSkpOwogICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSA9IGRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9j
YXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9kb25lKSk7CiAgICAgICAgIGluZm8ucGF0
Y2guZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxs
UmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNb
aV0ubV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7Ci0gICAgICAgIGluZm8ucGF0Y2guYmFzZUdQUiA9
IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2Jhc2VHUFI7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVl
R1BSOwotI2Vsc2UKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZVRhZ0dQUiA9IG1fcHJvcGVydHlB
Y2Nlc3Nlc1tpXS5tX3ZhbHVlVGFnR1BSOwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVlR1BSID0g
bV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVHUFI7Ci0jZW5kaWYKLSAgICAgICAgaW5mby5w
YXRjaC51c2VkUmVnaXN0ZXJzID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lzdGVy
czsKLSAgICAgICAgaW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gbV9wcm9wZXJ0eUFjY2Vz
c2VzW2ldLm1fcmVnaXN0ZXJNb2RlID09IFByb3BlcnR5QWNjZXNzUmVjb3JkOjpSZWdpc3RlcnNG
bHVzaGVkOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9pbnMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+
c3RydWN0dXJlU3R1YkluZm8obV9wcm9wZXJ0eUFjY2Vzc2VzLnNpemUoKSArIGkpOworICAgICAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyYgaW5mbyA9ICptX2luc1tpXS5tX3N0dWJJbmZvOwogICAgICAg
ICBDb2RlTG9jYXRpb25MYWJlbCBqdW1wID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1faW5zW2ld
Lm1fanVtcCk7CiAgICAgICAgIENvZGVMb2NhdGlvbkNhbGwgY2FsbFJldHVybkxvY2F0aW9uID0g
bGlua0J1ZmZlci5sb2NhdGlvbk9mKG1faW5zW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmNhbGwo
KSk7Ci0gICAgICAgIGluZm8uY29kZU9yaWdpbiA9IG1faW5zW2ldLm1fY29kZU9yaWdpbjsKICAg
ICAgICAgaW5mby5ob3RQYXRoQmVnaW4gPSBqdW1wOwogICAgICAgICBpbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbiA9IGNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNh
bGxUb1Nsb3dDYXNlID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlv
biwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1faW5zW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxh
YmVsKCkpKTsKLSAgICAgICAgaW5mby5wYXRjaC5iYXNlR1BSID0gbV9pbnNbaV0ubV9iYXNlR1BS
OwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVlR1BSID0gbV9pbnNbaV0ubV9yZXN1bHRHUFI7Ci0g
ICAgICAgIGluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyA9IG1faW5zW2ldLm1fdXNlZFJlZ2lzdGVy
czsKLSAgICAgICAgaW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gZmFsc2U7CiAgICAgfQot
ICAgIG1fY29kZUJsb2NrLT5zb3J0U3RydWN0dXJlU3R1YkluZm9zKCk7CiAgICAgCiAgICAgbV9j
b2RlQmxvY2stPnNldE51bWJlck9mQ2FsbExpbmtJbmZvcyhtX2pzQ2FsbHMuc2l6ZSgpKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9qc0NhbGxzLnNpemUoKTsgKytpKSB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAx
NTc1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc4LDM5ICs3OCwyMCBAQCBzdHJ1Y3QgQ2FsbExpbmtSZWNvcmQgewog
fTsKIAogc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKLSAgICBlbnVtIFJlZ2lzdGVyTW9k
ZSB7IFJlZ2lzdGVyc0ZsdXNoZWQsIFJlZ2lzdGVyc0luVXNlIH07Ci0gICAgCi0jaWYgVVNFKEpT
VkFMVUU2NCkKICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKLSAgICAgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVy
ZUltbSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hl
Y2ssCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0
eVN0b3JhZ2VMb2FkLAorI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWxDb21wYWN0IGxvYWRPclN0b3JlLAotICAgICAgICBTbG93UGF0aEdlbmVyYXRv
ciogc2xvd1BhdGhHZW5lcmF0b3IsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25l
LAotICAgICAgICBpbnQ4X3QgYmFzZUdQUiwKLSAgICAgICAgaW50OF90IHZhbHVlR1BSLAotICAg
ICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgUmVnaXN0ZXJN
b2RlIHJlZ2lzdGVyTW9kZSA9IFJlZ2lzdGVyc0luVXNlKQogI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKLSAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZUltbSwK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssCi0g
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3Jh
Z2VMb2FkLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCB0YWdMb2Fk
T3JTdG9yZSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgcGF5bG9h
ZExvYWRPclN0b3JlLAorI2VuZGlmCiAgICAgICAgIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0
aEdlbmVyYXRvciwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmUsCi0gICAgICAg
IGludDhfdCBiYXNlR1BSLAotICAgICAgICBpbnQ4X3QgdmFsdWVUYWdHUFIsCi0gICAgICAgIGlu
dDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
Ci0gICAgICAgIFJlZ2lzdGVyTW9kZSByZWdpc3Rlck1vZGUgPSBSZWdpc3RlcnNJblVzZSkKLSNl
bmRpZgotICAgICAgICA6IG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQotICAgICAgICAsIG1fc3Ry
dWN0dXJlSW1tKHN0cnVjdHVyZUltbSkKKyAgICAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvKQorICAgICAgICA6IG1fc3RydWN0dXJlSW1tKHN0cnVjdHVyZUltbSkKICAgICAgICAgLCBt
X3N0cnVjdHVyZUNoZWNrKHN0cnVjdHVyZUNoZWNrKQogICAgICAgICAsIG1fcHJvcGVydHlTdG9y
YWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2FkKQogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xMjEs
MTcgKzEwMiwxMCBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogI2VuZGlmCiAgICAg
ICAgICwgbV9zbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aEdlbmVyYXRvcikKICAgICAgICAgLCBt
X2RvbmUoZG9uZSkKLSAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKLSNpZiBVU0UoSlNWQUxV
RTMyXzY0KQotICAgICAgICAsIG1fdmFsdWVUYWdHUFIodmFsdWVUYWdHUFIpCi0jZW5kaWYKLSAg
ICAgICAgLCBtX3ZhbHVlR1BSKHZhbHVlR1BSKQotICAgICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1
c2VkUmVnaXN0ZXJzKQotICAgICAgICAsIG1fcmVnaXN0ZXJNb2RlKHJlZ2lzdGVyTW9kZSkKKyAg
ICAgICAgLCBtX3N0dWJJbmZvKHN0dWJJbmZvKQogICAgIHsKICAgICB9CiAKLSAgICBDb2RlT3Jp
Z2luIG1fY29kZU9yaWdpbjsKICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIG1fc3Ry
dWN0dXJlSW1tOwogICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc3RydWN0dXJl
Q2hlY2s7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIG1fcHJvcGVy
dHlTdG9yYWdlTG9hZDsKQEAgLTE0MywzNSArMTE3LDIyIEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vz
c1JlY29yZCB7CiAjZW5kaWYKICAgICBTbG93UGF0aEdlbmVyYXRvciogbV9zbG93UGF0aEdlbmVy
YXRvcjsKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9kb25lOwotICAgIGludDhfdCBtX2Jh
c2VHUFI7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBpbnQ4X3QgbV92YWx1ZVRhZ0dQUjsK
LSNlbmRpZgotICAgIGludDhfdCBtX3ZhbHVlR1BSOwotICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJl
Z2lzdGVyczsKLSAgICBSZWdpc3Rlck1vZGUgbV9yZWdpc3Rlck1vZGU7CisgICAgU3RydWN0dXJl
U3R1YkluZm8qIG1fc3R1YkluZm87CiB9OwogCiBzdHJ1Y3QgSW5SZWNvcmQgewogICAgIEluUmVj
b3JkKAotICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIE1hY3JvQXNzZW1ibGVyOjpQYXRj
aGFibGVKdW1wIGp1bXAsCi0gICAgICAgIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aEdlbmVy
YXRvciwgaW50OF90IGJhc2VHUFIsIGludDhfdCByZXN1bHRHUFIsCi0gICAgICAgIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQotICAgICAgICA6IG1fY29kZU9yaWdpbihjb2RlT3Jp
Z2luKQotICAgICAgICAsIG1fanVtcChqdW1wKQorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0
Y2hhYmxlSnVtcCBqdW1wLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCisg
ICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKKyAgICAgICAgOiBtX2p1bXAoanVt
cCkKICAgICAgICAgLCBtX3Nsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoR2VuZXJhdG9yKQotICAg
ICAgICAsIG1fYmFzZUdQUihiYXNlR1BSKQotICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQ
UikKLSAgICAgICAgLCBtX3VzZWRSZWdpc3RlcnModXNlZFJlZ2lzdGVycykKKyAgICAgICAgLCBt
X3N0dWJJbmZvKHN0dWJJbmZvKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgQ29kZU9yaWdpbiBt
X2NvZGVPcmlnaW47CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9qdW1wOwog
ICAgIFNsb3dQYXRoR2VuZXJhdG9yKiBtX3Nsb3dQYXRoR2VuZXJhdG9yOwotICAgIGludDhfdCBt
X2Jhc2VHUFI7Ci0gICAgaW50OF90IG1fcmVzdWx0R1BSOwotICAgIFJlZ2lzdGVyU2V0IG1fdXNl
ZFJlZ2lzdGVyczsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKIH07CiAKIC8v
ID09PSBKSVRDb21waWxlciA9PT0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTU3NTkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA5LDYgKzIwOSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
VUludDMKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdp
c3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8g
PSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkU3R1YkluZm8oKTsKKyAgICAKICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0
Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQ
YXRjaChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBp
bGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIp
KSk7CiAgICAgCkBAIC0yMjEsMjcgKzIyMywzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRHZXRCeUlkKENvZGVPCiAgICAgT3duUHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsK
ICAgICBpZiAoIXNsb3dQYXRoVGFyZ2V0LmlzU2V0KCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgICAgICBzdHJ1Y3R1cmVDaGVjay5tX2p1bXAsIHRoaXMsIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0R1BSLCBiYXNlR1BSLAorICAgICAgICAgICAg
c3RydWN0dXJlQ2hlY2subV9qdW1wLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJl
c3VsdEdQUiwgc3R1YkluZm8sIGJhc2VHUFIsCiAgICAgICAgICAgICBpZGVudGlmaWVyVUlEKGlk
ZW50aWZpZXJOdW1iZXIpLCBzcGlsbE1vZGUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc3Ry
dWN0dXJlQ2hlY2subV9qdW1wKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRh
cmdldCk7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdEdQUiwgYmFzZUdQ
UiwKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
LCByZXN1bHRHUFIsIHN0dWJJbmZvLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllclVJ
RChpZGVudGlmaWVyTnVtYmVyKSwgc3BpbGxNb2RlKTsKICAgICB9CisgICAgUmVnaXN0ZXJTZXQg
Y3VycmVudGx5VXNlZFJlZ2lzdGVycyA9IHVzZWRSZWdpc3RlcnMoKTsKKyAgICBBU1NFUlQoY3Vy
cmVudGx5VXNlZFJlZ2lzdGVycy5nZXQoYmFzZUdQUikpOworICAgIEFTU0VSVChjdXJyZW50bHlV
c2VkUmVnaXN0ZXJzLmdldChyZXN1bHRHUFIpKTsKKyAgICAKKyAgICBzdHViSW5mby0+Y29kZU9y
aWdpbiA9IGNvZGVPcmlnaW47CisgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KGJhc2VHUFIpOworICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0
YXRpY19jYXN0PGludDhfdD4ocmVzdWx0R1BSKTsKKyAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJl
Z2lzdGVycyA9IGN1cnJlbnRseVVzZWRSZWdpc3RlcnM7CisgICAgc3R1YkluZm8tPnBhdGNoLnJl
Z2lzdGVyc0ZsdXNoZWQgPSBzcGlsbE1vZGUgIT0gTmVlZFRvU3BpbGw7CisKICAgICBtX2ppdC5h
ZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCiAgICAgICAg
ICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9w
ZXJ0eVN0b3JhZ2VMb2FkLCBsb2FkV2l0aFBhdGNoLAotICAgICAgICAgICAgc2xvd1BhdGguZ2V0
KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90
PihyZXN1bHRHUFIpLAotICAgICAgICAgICAgdXNlZFJlZ2lzdGVycygpLAotICAgICAgICAgICAg
c3BpbGxNb2RlID09IE5lZWRUb1NwaWxsID8gUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVy
c0luVXNlIDogUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0ZsdXNoZWQpKTsKKyAgICAg
ICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHN0dWJJbmZvKSk7CiAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BS
LCBHUFJSZWcgdmFsdWVHUFIsIEVkZ2UgdmFsdWVVc2UsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kIHB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dQYXRoVGFyZ2V0KQogeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1f
aml0LmNvZGVCbG9jaygpLT5hZGRTdHViSW5mbygpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpE
YXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVyOjpQYXRjaGFi
bGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpKTsK
QEAgLTI2OSwyNSArMjgwLDMyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQo
Q29kZU8KICAgICBPd25QdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlmICgh
c2xvd1BhdGhUYXJnZXQuaXNTZXQoKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgICAgIHN0cnVjdHVyZUNoZWNrLm1fanVtcCwgdGhpcywgb3B0aW1pemVkQ2Fs
bCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAorICAgICAgICAgICAgc3RydWN0dXJlQ2hl
Y2subV9qdW1wLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgc3R1YkluZm8sIHZhbHVl
R1BSLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVy
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNl
czsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzdHJ1Y3R1cmVDaGVjay5tX2p1bXApOwogICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wdGltaXplZENh
bGwsIE5vUmVzdWx0LCB2YWx1ZUdQUiwgYmFzZUdQUiwKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHN0dWJJbmZvLCB2YWx1ZUdQUiwgYmFzZUdQ
UiwKICAgICAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwogICAgIH0K
ICAgICBSZWdpc3RlclNldCBjdXJyZW50bHlVc2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVycygp
OwogICAgIGN1cnJlbnRseVVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaEdQUik7CiAgICAgQVNT
RVJUKGN1cnJlbnRseVVzZWRSZWdpc3RlcnMuZ2V0KGJhc2VHUFIpKTsKICAgICBBU1NFUlQoY3Vy
cmVudGx5VXNlZFJlZ2lzdGVycy5nZXQodmFsdWVHUFIpKTsKKyAgICAKKyAgICBzdHViSW5mby0+
Y29kZU9yaWdpbiA9IGNvZGVPcmlnaW47CisgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBz
dGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VHUFIpOworICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQ
UiA9IHN0YXRpY19jYXN0PGludDhfdD4odmFsdWVHUFIpOworICAgIHN0dWJJbmZvLT5wYXRjaC51
c2VkUmVnaXN0ZXJzID0gY3VycmVudGx5VXNlZFJlZ2lzdGVyczsKKyAgICBzdHViSW5mby0+cGF0
Y2gucmVnaXN0ZXJzRmx1c2hlZCA9IGZhbHNlOworICAgIAogICAgIG1faml0LmFkZFByb3BlcnR5
QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKICAgICAgICAgICAgIGNvZGVP
cmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFn
ZUxvYWQsCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdp
dGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKLSAgICAgICAgICAg
IHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBj
dXJyZW50bHlVc2VkUmVnaXN0ZXJzKSk7CisgICAgICAgICAgICBzdHViSW5mbykpOwogICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lv
biAxNTc1OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUxLDYgKzk1MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbihOb2RlKiBub2QKICAgICAgICAgICAgIGpzRHluYW1pY0Nhc3Q8SlNTdHJp
bmcqPih2YWx1ZU9mSlNDb25zdGFudChub2RlLT5jaGlsZDEoKS5ub2RlKCkpKTsKICAgICAgICAg
aWYgKHN0cmluZyAmJiBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpCiAgICAgICAgICAgICAmJiBz
dHJpbmctPnRyeUdldFZhbHVlSW1wbCgpLT5pc0lkZW50aWZpZXIoKSkgeworICAgICAgICAgICAg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZFN0dWJJ
bmZvKCk7CisgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCkBAIC05
NjAsMTIgKzk2MiwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4oTm9kZSogbm9k
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE93blB0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAganVtcC5tX2p1bXAsIHRoaXMs
IG9wZXJhdGlvbkluT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlc3VsdEdQUiksIGJhc2VHUFIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHJlc3VsdEdQUiksIHN0dWJJbmZvLCBiYXNlR1BSLAogICAgICAgICAgICAg
ICAgIHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCkpOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgbV9qaXQuYWRkSW4oSW5SZWNvcmQoCi0gICAgICAgICAgICAgICAgbm9kZS0+Y29kZU9y
aWdpbiwganVtcCwgc2xvd1BhdGguZ2V0KCksIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksCi0g
ICAgICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLCB1c2VkUmVnaXN0ZXJz
KCkpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBu
b2RlLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBz
dGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VHUFIpOworICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNo
LnZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihyZXN1bHRHUFIpOworICAgICAgICAgICAg
c3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJzKCk7CisgICAgICAg
ICAgICBzdHViSW5mby0+cGF0Y2gucmVnaXN0ZXJzRmx1c2hlZCA9IGZhbHNlOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBtX2ppdC5hZGRJbihJblJlY29yZChqdW1wLCBzbG93UGF0aC5nZXQo
KSwgc3R1YkluZm8pKTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
LnJlbGVhc2UoKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBiYXNlLnVzZSgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
cmV2aXNpb24gMTU3NTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMyLDE0ICsxMjMyLDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEsIGNvbnN0IFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFN0
cmluZ0ltcGwqIHVpZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0
ZWRJbW1QdHIodWlkKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgU3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgU3RyaW5n
SW1wbCogdWlkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZElt
bVB0cih1aWQpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VEQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKQEAgLTEzNjMsOSArMTM2Myw5IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgU3RyaW5nSW1wbCogdWlk
KQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgYXJnMiwgVHJ1c3Rl
ZEltbVB0cih1aWQpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FSkpKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMykKQEAgLTE0OTQsMTQgKzE0OTQsMTQgQEAgcHVibGljOgogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQp
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KLSAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BS
UmVnIGFyZzFQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCiAg
ICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJ
VF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
dWJJbmZvKSwgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGludDMy
X3QgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCiAgICAgewot
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1N
WV9BUkcgYXJnMVBheWxvYWQsIFRydXN0ZWRJbW0zMihhcmcxVGFnKSwgVHJ1c3RlZEltbVB0cih1
aWQpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcpLCBUcnVz
dGVkSW1tUHRyKHVpZCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRURB
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEZQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMikKQEAgLTE2MjEsMTMgKzE2MjEsMTMgQEAgcHVibGljOgogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9B
UkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwog
ICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VKSkkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJS
ZWcgYXJnMlBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQ
UlJlZyBhcmcyUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICNpZiBDUFUoU0g0KQog
ICAgICAgICAvLyBXZSBoYXZlIHRvIHB1dCB1aWQgaW4gdGhlIDR0aCBhcmd1bWVudCByZWdpc3Rl
ciAocjcpIGFzIDY0LWJpdCB2YWx1ZSBhcmcyIHdpbGwgYmUgcHV0IG9uIHN0YWNrIGZvciBzaDQg
YXJjaGl0ZWN1cmUuCi0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cih1aWQpLCBhcmcyUGF5bG9hZCwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgYXJn
MVRhZywgVHJ1c3RlZEltbVB0cih1aWQpLCBhcmcyUGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKTsKICNlbHNlCi0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMlBh
eWxvYWQsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgVHJ1c3RlZEltbVB0cih1aWQp
KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMlBheWxvYWQsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKICNlbmRpZgogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE1NzU5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg2
LDIwICs0ODYsMjAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICNlbmRp
ZgogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvOjpj
b3B5VG9TdHViSW5mbyhTdHJ1Y3R1cmVTdHViSW5mbyYgaW5mbywgTGlua0J1ZmZlciAmbGlua0J1
ZmZlcikKK0FMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm86OmNv
cHlUb1N0dWJJbmZvKExpbmtCdWZmZXIgJmxpbmtCdWZmZXIpCiB7CiAgICAgQVNTRVJUKGJ5dGVj
b2RlSW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBp
bmZvLmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpOwotICAgIGluZm8uY2Fs
bFJldHVybkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGNhbGxSZXR1cm5Mb2NhdGlv
bik7CisgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgp
OworICAgIHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YoY2FsbFJldHVybkxvY2F0aW9uKTsKIAotICAgIGluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRv
Q2FsbCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIobGlua0J1ZmZl
ci5sb2NhdGlvbk9mKHN0cnVjdHVyZVRvQ29tcGFyZSksIGluZm8uY2FsbFJldHVybkxvY2F0aW9u
KTsKLSAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2sgPSBNYWNyb0Fzc2VtYmxl
cjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlQ2hlY2spKTsKKyAgICBzdHViSW5mby0+cGF0Y2gu
ZGVsdGFDaGVja0ltbVRvQ2FsbCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNv
ZGVQdHIobGlua0J1ZmZlci5sb2NhdGlvbk9mKHN0cnVjdHVyZVRvQ29tcGFyZSksIHN0dWJJbmZv
LT5jYWxsUmV0dXJuTG9jYXRpb24pOworICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1N0
cnVjdENoZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHVi
SW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJl
Q2hlY2spKTsKICAgICAKLSAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBNYWNy
b0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY29sZFBhdGhCZWdpbikpOwotICAgIGluZm8ucGF0
Y2guZGVsdGFDYWxsVG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRvbmUp
KTsKLSAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxl
cjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOworICAgIHN0dWJJbmZvLT5w
YXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3
ZWVuQ29kZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0
aW9uT2YoY29sZFBhdGhCZWdpbikpOworICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb0Rv
bmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5j
YWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihkb25lKSk7CisgICAgc3R1
YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlm
ZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAgICAgCi0gICAgaW5mby5w
YXRjaC5iYXNlR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VH
UFIgPSBHUFJJbmZvOjpyZWdUMDsKIAogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDApOwpAQCAtNTA3LDM3ICs1MDcsMzcg
QEAgQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogI2lmIFVTRShKU1ZB
TFVFNjQpIC8vIEpTVkFMVUUgY2FzZXMKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2Ug
R2V0QnlJZDoKLSAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlID0gTWFj
cm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7Ci0gICAg
ICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICAgICAgc3R1Yklu
Zm8tPnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbCkpOworICAgICAgICBzdHViSW5mby0+
cGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBQdXRCeUlkOgotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBN
YWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKLSAg
ICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QxOworICAgICAgICBzdHVi
SW5mby0+cGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZm
ZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1
ZmZlci5sb2NhdGlvbk9mKHB1dERpc3BsYWNlbWVudExhYmVsKSk7CisgICAgICAgIHN0dWJJbmZv
LT5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QxOwogICAgICAgICB1c2VkUmVnaXN0ZXJz
LnNldChHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICNlbHNlIC8vIEpT
VkFMVUUgY2FzZXMKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgR2V0QnlJZDoKLSAg
ICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJs
ZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsMikpOwotICAgICAgICBpbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsMSkpOwotICAgICAgICBpbmZvLnBhdGNo
LnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgIGluZm8ucGF0Y2gudmFsdWVUYWdH
UFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRv
VGFnTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRy
KHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihnZXRE
aXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRv
UGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
Z2V0RGlzcGxhY2VtZW50TGFiZWwxKSk7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQ
UiA9IEdQUkluZm86OnJlZ1QwOworICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVUYWdHUFIg
PSBHUFJJbmZvOjpyZWdUMTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVn
VDEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5SWQ6Ci0gICAgICAgIGluZm8ucGF0
Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRp
b25PZihwdXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKLSAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNh
bGxUb1BheWxvYWRMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2Vl
bkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihw
dXREaXNwbGFjZW1lbnRMYWJlbDEpKTsKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQ
UkluZm86OnJlZ1QyOwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVlVGFnR1BSID0gR1BSSW5mbzo6
cmVnVDM7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3Jl
ID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+Y2Fs
bFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFi
ZWwyKSk7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JT
dG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1YkluZm8t
PmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERpc3BsYWNlbWVu
dExhYmVsMSkpOworICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpy
ZWdUMjsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlVGFnR1BSID0gR1BSSW5mbzo6cmVn
VDM7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAg
dXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICBicmVhazsKICAgICB9
CiAjZW5kaWYgLy8gSlNWQUxVRSBjYXNlcwogICAgIAotICAgIGluZm8ucGF0Y2gudXNlZFJlZ2lz
dGVycyA9IHVzZWRSZWdpc3RlcnM7Ci0gICAgaW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0g
dHJ1ZTsKKyAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IHVzZWRSZWdpc3RlcnM7
CisgICAgc3R1YkluZm8tPnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSB0cnVlOwogfQogCiBDb21w
aWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVm
Zm9ydCkKQEAgLTczMiw5ICs3MzIsOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVD
b21waWxlKEpJCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGl0ZXItPmZyb20sIEZ1bmN0
aW9uUHRyKGl0ZXItPnRvKSk7CiAgICAgfQogCi0gICAgbV9jb2RlQmxvY2stPnNldE51bWJlck9m
U3RydWN0dXJlU3R1YkluZm9zKG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uc2l6ZSgp
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0
aW9uSW5mby5zaXplKCk7ICsraSkKLSAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9u
SW5mb1tpXS5jb3B5VG9TdHViSW5mbyhtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8oaSks
IHBhdGNoQnVmZmVyKTsKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1tp
XS5jb3B5VG9TdHViSW5mbyhwYXRjaEJ1ZmZlcik7CiAgICAgbV9jb2RlQmxvY2stPnNldE51bWJl
ck9mQnlWYWxJbmZvcyhtX2J5VmFsQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fYnlWYWxDb21waWxhdGlvbkluZm8uc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgQ29kZUxvY2F0aW9uSnVtcCBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXAo
cGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX2J5VmFsQ29tcGlsYXRpb25JbmZvW2ldLmJhZFR5cGVK
dW1wKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1NzU5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw2
ICsxNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFM
YWJlbDMyIHB1dERpc3BsYWNlbWVudExhYmVsMTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbDMyIHB1dERpc3BsYWNlbWVudExhYmVsMjsKICNlbmRpZgorICAgICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm87CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIFBy
b3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbygpCkBAIC0yMzYsMTAgKzIzNywxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzbG93Q2FzZUlu
Zm8oTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGNvbGRQYXRoQmVnaW4sIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGwpCisgICAgICAgIHZvaWQgc2xvd0Nhc2VJbmZvKE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBjb2xkUGF0aEJlZ2luLCBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogaW5mbykKICAgICAgICAgewogICAgICAgICAgICAgY2FsbFJldHVybkxvY2F0aW9uID0g
Y2FsbDsKICAgICAgICAgICAgIHRoaXMtPmNvbGRQYXRoQmVnaW4gPSBjb2xkUGF0aEJlZ2luOwor
ICAgICAgICAgICAgc3R1YkluZm8gPSBpbmZvOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBz
bG93Q2FzZUluZm8oTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCkKQEAgLTI0Nyw3ICsyNDksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGNhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGw7
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGNvcHlUb1N0dWJJbmZvKFN0cnVjdHVyZVN0dWJJ
bmZvJiBpbmZvLCBMaW5rQnVmZmVyICZwYXRjaEJ1ZmZlcik7CisgICAgICAgIHZvaWQgY29weVRv
U3R1YkluZm8oTGlua0J1ZmZlciAmcGF0Y2hCdWZmZXIpOwogICAgIH07CiAKICAgICBzdHJ1Y3Qg
QnlWYWxDb21waWxhdGlvbkluZm8gewpAQCAtNzc4LDkgKzc4MCw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VDLCBpbnQsIEpTQ2VsbCopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKLCBpbnQsIEdQUlJlZyk7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihXaXRoUHJv
ZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRUpJLCBpbnQsIEdQUlJlZywgU3RyaW5nSW1wbCopOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlVGFn
LCBKX0pJVE9wZXJhdGlvbl9FU3NpSkksIGludCwgU3RydWN0dXJlU3R1YkluZm8qLCBHUFJSZWcs
IFN0cmluZ0ltcGwqKTsKICNlbHNlCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oV2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VKSSwgaW50LCBHUFJSZWcs
IEdQUlJlZywgU3RyaW5nSW1wbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FU3NpSkksIGludCwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBHUFJSZWcsIEdQUlJlZywgU3RyaW5nSW1wbCopOwogI2VuZGlmCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUpJZGMsIGludCwgR1BSUmVnLCBjb25zdCBJZGVudGlmaWVyKik7CiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKLCBpbnQsIEdQUlJl
ZywgR1BSUmVnKTsKQEAgLTgxMSw5ICs4MTMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSiwgUmVn
aXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRUpJZEpKLCBSZWdpc3RlcklELCBjb25zdCBJZGVudGlmaWVyKiwgUmVnaXN0
ZXJJRCwgUmVnaXN0ZXJJRCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpJLCBSZWdpc3RlcklE
LCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSwgU3RydWN0dXJlU3R1YkluZm8q
LCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CiAjZWxzZQotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkksIFJl
Z2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFN0cmluZ0ltcGwq
KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FU3NpSkpJLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQs
IFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFN0cmluZ0ltcGwqKTsKICNlbmRpZgogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkosIFJl
Z2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKWkosIFJlZ2lzdGVySUQsIGlu
dDMyX3QsIFJlZ2lzdGVySUQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgJKHJldmlzaW9uIDE1NzU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsOSArMjAwLDkgQEAgQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkkgb3BlcmF0aW9u
LCBSZWdpc3RlcklEIHJlZ09wMSwgUmVnaXN0ZXJJRCByZWdPcDIsIFN0cmluZ0ltcGwqIHVpZCkK
K0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIFJlZ2lzdGVySUQgcmVnT3AxLCBSZWdpc3RlcklEIHJlZ09wMiwgU3RyaW5nSW1wbCogdWlk
KQogewotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShyZWdPcDEsIHJlZ09wMiwgVHJ1
c3RlZEltbVB0cih1aWQpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzdHViSW5mbyksIHJlZ09wMSwgcmVnT3AyLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwog
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAK
QEAgLTIxMiw5ICsyMTIsOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJ
VDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsK
IH0KIAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRp
b24oSklUOjpXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgaW50
IGRzdCwgR1BSUmVnIGFyZzEsIFN0cmluZ0ltcGwqIHVpZCkKK0FMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpJVDo6V2l0aFByb2ZpbGVUYWcsIEpf
SklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIGludCBkc3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIFN0cmluZ0ltcGwqIHVpZCkKIHsKLSAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRy
dXN0ZWRJbW1QdHIodWlkKSk7CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUob3BlcmF0aW9uLCBkc3QpOwogfQogCkBAIC01
MzUsMTMgKzUzNSwxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0K
IAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRUpKSSBvcGVyYXRpb24sIFJlZ2lzdGVySUQgcmVnT3AxVGFnLCBSZWdp
c3RlcklEIHJlZ09wMVBheWxvYWQsIFJlZ2lzdGVySUQgcmVnT3AyVGFnLCBSZWdpc3RlcklEIHJl
Z09wMlBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0
aW9uLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFJlZ2lzdGVySUQgcmVnT3AxVGFnLCBS
ZWdpc3RlcklEIHJlZ09wMVBheWxvYWQsIFJlZ2lzdGVySUQgcmVnT3AyVGFnLCBSZWdpc3RlcklE
IHJlZ09wMlBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICNpZiBDUFUoU0g0KQogICAgIC8v
IFdlIGhhdmUgdG8gcHV0IHVpZCBpbiB0aGUgNHRoIGFyZ3VtZW50IHJlZ2lzdGVyIChyNykgYXMg
NjQtYml0IHZhbHVlIHJlZ09wMiB3aWxsIGJlIHB1dCBvbiBzdGFjayBmb3Igc2g0IGFyY2hpdGVj
dXJlLgotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShyZWdPcDFQYXlsb2FkLCByZWdP
cDFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSwgcmVnT3AyUGF5bG9hZCwgcmVnT3AyVGFnKTsKKyAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIHJl
Z09wMVBheWxvYWQsIHJlZ09wMVRhZywgVHJ1c3RlZEltbVB0cih1aWQpLCByZWdPcDJQYXlsb2Fk
LCByZWdPcDJUYWcpOwogI2Vsc2UKLSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFC
SV8zMkJJVF9EVU1NWV9BUkcgcmVnT3AxUGF5bG9hZCwgcmVnT3AxVGFnLCByZWdPcDJQYXlsb2Fk
LCByZWdPcDJUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCByZWdPcDFQYXlsb2FkLCByZWdPcDFU
YWcsIHJlZ09wMlBheWxvYWQsIHJlZ09wMlRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKICNlbmRp
ZgogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDE1NzU5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCBpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ29uc3RydWN0CiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1wbCogdWlkKQorRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CkBAIC0xMjQsNTEgKzEyNCw0NiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFs
dWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7CiB9CiAKLUpfRlVOQ1RJT05fV1JBUFBFUl9XSVRI
X1JFVFVSTl9BRERSRVNTX0VKSShvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KTsKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdFdpdGhSZXR1cm5B
ZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1wbCog
dWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwq
IHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
CiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7
Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nh
c3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFz
ZVZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQs
IHNsb3QpOwogCi0gICAgaWYgKGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4o
c3R1YkluZm8uYWNjZXNzVHlwZSkpCi0gICAgICAgIGJ1aWxkR2V0QnlJRExpc3QoZXhlYywgYmFz
ZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8pOworICAgIGlmIChhY2Nlc3NUeXBlID09IHN0
YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKKyAgICAgICAgYnVp
bGRHZXRCeUlETGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8pOwog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1KX0ZVTkNUSU9OX1dS
QVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkkob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplV2l0
aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJp
bmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJp
bmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gdWlkLT5pc0VtcHR5VW5pcXVlKCkgPyBJZGVu
dGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKHVpZCkpIDogSWRlbnRpZmllcih2bSwgdWlkKTsKLSAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1
YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
OwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VW
YWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlID09
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKSB7Ci0gICAgICAg
IGlmIChzdHViSW5mby5zZWVuKQotICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFz
ZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8pOworICAgIGlmIChhY2Nlc3NUeXBlID09IHN0
YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkgeworICAgICAgICBp
ZiAoc3R1YkluZm8tPnNlZW4pCisgICAgICAgICAgICByZXBhdGNoR2V0QnlJRChleGVjLCBiYXNl
VmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8pOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBzdHViSW5mby5zZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1
ZTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUpf
RlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VDSShvcGVyYXRpb25Jbk9wdGlt
aXplKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZVdp
dGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBTdHJpbmdJbXBs
KiBrZXksIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgSlNDZWxsKiBiYXNlLCBTdHJpbmdJbXBsKiBrZXksIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTE3OCwyNCAr
MTczLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4KICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCi0g
ICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0
dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBl
KTsKIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNs
b3QoYmFzZSk7CiAgICAgYm9vbCByZXN1bHQgPSBhc09iamVjdChiYXNlKS0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIGlkZW50LCBzbG90KTsKICAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChhY2Nlc3NU
eXBlID09IHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIFJFTEVBU0VfQVNTRVJUKGFjY2Vzc1R5
cGUgPT0gc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogICAgIAotICAgIGlmIChzdHViSW5mby5zZWVu
KQotICAgICAgICByZXBhdGNoSW4oZXhlYywgYmFzZSwgaWRlbnQsIHJlc3VsdCwgc2xvdCwgc3R1
YkluZm8pOworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaEluKGV4ZWMs
IGJhc2UsIGlkZW50LCByZXN1bHQsIHNsb3QsICpzdHViSW5mbyk7CiAgICAgZWxzZQotICAgICAg
ICBzdHViSW5mby5zZWVuID0gdHJ1ZTsKKyAgICAgICAgc3R1YkluZm8tPnNlZW4gPSB0cnVlOwog
ICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSogZXhl
YywgSlNDZWxsKiBiYXNlLCBTdHJpbmdJbXBsKiBrZXkpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBK
U0NlbGwqIGJhc2UsIFN0cmluZ0ltcGwqIGtleSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTIzNSw3
ICsyMjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsR2V0dGVyKGV4ZWMsIGJhc2UsIGdldHRlclNldHRl
cikpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJp
bmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yNDUsNyArMjM5LDcgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpYwogICAgIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSkucHV0KGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KSwgc2xvdCk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3Ry
aWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTI1NSw3ICsyNDks
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0CiAgICAgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwpAQCAtMjY1LDcgKzI1OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
RGlyZWMKICAgICBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xv
dCk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3Ry
aWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTI3NSwx
NSArMjY5LDEzIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKICAg
ICBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKS0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CiAK
LVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkkob3BlcmF0aW9uUHV0
QnlJZFN0cmljdE9wdGltaXplKTsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
U3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0lt
cGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBp
ZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5j
b2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7
CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKTsKQEAgLTI5MSwyNCArMjgzLDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkU3RyaWMKICAgICAKICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50
LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vzc1R5cGUgIT0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgaWYgKHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRC
eUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBOb3REaXJlY3QpOwor
ICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFz
ZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBOb3REaXJlY3QpOwogICAgIGVsc2UKLSAg
ICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7CisgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1
ZTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpKSShvcGVy
YXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUpOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAK
ICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsK
LSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHVi
SW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2Fz
dDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwpAQCAtMzE2LDI0ICszMDYsMjIgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAogICAgIAogICAgIGJhc2VWYWx1
ZS5wdXQoZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlw
ZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBp
ZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc3R1YkluZm8uc2VlbikKLSAg
ICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1Yklu
Zm8sIE5vdERpcmVjdCk7CisgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQorICAgICAgICByZXBhdGNo
UHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERpcmVj
dCk7CiAgICAgZWxzZQotICAgICAgICBzdHViSW5mby5zZWVuID0gdHJ1ZTsKKyAgICAgICAgc3R1
YkluZm8tPnNlZW4gPSB0cnVlOwogfQogCi1WX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5f
QUREUkVTU19FSkpJKG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSk7Ci12b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplV2l0aFJl
dHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7
Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdl
dFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0
YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSkpOwpAQCAtMzQxLDI0ICszMjksMjIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWREaXJlYwogICAgIAogICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdChleGVj
LT52bSgpLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlICE9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAgIGlmIChh
Y2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBl
KSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChzdHViSW5mby5zZWVuKQotICAgICAg
ICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgc3R1YkluZm8s
IERpcmVjdCk7CisgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQorICAgICAgICByZXBhdGNoUHV0QnlJ
RChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwogICAg
IGVsc2UKLSAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7CisgICAgICAgIHN0dWJJbmZvLT5z
ZWVuID0gdHJ1ZTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1Nf
RUpKSShvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUpOwotdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZVdpdGhSZXR1
cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OwotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5n
ZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpKTsKQEAgLTM2NiwyNCArMzUyLDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkRGlyZWMKICAgICAKICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAh
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAo
YWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlw
ZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc3R1YkluZm8uc2VlbikKLSAgICAg
ICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsIHN0dWJJbmZv
LCBEaXJlY3QpOworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaFB1dEJ5
SUQoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKICAg
ICBlbHNlCi0gICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHViSW5mby0+
c2VlbiA9IHRydWU7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNT
X0VKSkkob3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdCk7Ci12b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCog
dWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAg
ICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVz
cyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4o
c3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTM5MSwyMSArMzc1LDE5IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKICAgICAKICAgICBiYXNl
VmFsdWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vz
c1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisg
ICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFj
Y2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYnVpbGRQdXRCeUlkTGlzdChl
eGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCBzdHViSW5mbywgTm90RGlyZWN0KTsKKyAgICBi
dWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywg
Tm90RGlyZWN0KTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1Nf
RUpKSShvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KTsKLXZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0V2l0aFJldHVybkFkZHJlc3Mo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVp
bGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJp
bmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwotICAgIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRTdHViSW5mbyhyZXR1
cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUg
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwpAQCAtNDEzLDIxICsz
OTUsMTkgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAogICAgIAog
ICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBp
ZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NU
eXBlKSkKKyAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHVi
SW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBidWlsZFB1dEJ5
SWRMaXN0KGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBOb3REaXJlY3Qp
OworICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0
dWJJbmZvLCBOb3REaXJlY3QpOwogfQogCi1WX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5f
QUREUkVTU19FSkpJKG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QpOwotdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3RXaXRo
UmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVp
ZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCkt
PmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpKTsKQEAgLTQzNSwyMSArNDE1LDE5IEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKICAgICAKICAgICBiYXNlT2JqZWN0LT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNz
VHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAg
ICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNj
ZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBidWlsZFB1dEJ5SWRMaXN0KGV4
ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCBzdHViSW5mbywgRGlyZWN0KTsKKyAgICBidWls
ZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERp
cmVjdCk7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkko
b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCk7Ci12b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdFdpdGhSZXR1cm5B
ZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVj
dE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
CiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsK
LSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0
U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5
cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRCYXNlKSk7CkBAIC00NTcsMTAgKzQzNSwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjCiAgICAgCiAgICAgYmFzZU9iamVjdCAtPnB1dERpcmVjdChleGVj
LT52bSgpLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlICE9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAgIGlmIChh
Y2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBl
KSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhlYywgYmFz
ZU9iamVjdCwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBEaXJlY3QpOworICAgIGJ1aWxkUHV0QnlJ
ZExpc3QoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsK
IH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVTdG9yYWdlQW5kRmlu
aXNoUHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE1NzU5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTAsNiArMTEwLDcgQEAgaW5saW5lIEpJVEhhbmRsZXJFbmNvZGVkIGRmZ0hh
bmRsZXJFbmNvZAogICAgIFBjOiBJbnN0cnVjdGlvbiogaS5lLiBieXRlY29kZSBQQwogICAgIFI6
IFJlZ2lzdGVyCiAgICAgUzogc2l6ZV90CisgICAgU3NpOiBTdHJ1Y3R1cmVTdHViSW5mbyoKICAg
ICBTdDogU3RydWN0dXJlKgogICAgIFY6IHZvaWQKICAgICBXOiBXYXRjaHBvaW50U2V0KgpAQCAt
MTI5LDcgKzEzMCw2IEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkoK
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VJ
KShFeGVjU3RhdGUqLCBTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUp
OwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25f
RUpBKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNBcnJheSopOwotdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpJKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpJZGMpKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
KCpKX0pJVE9wZXJhdGlvbl9FSnNzWikoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBpbnQzMl90KTsK
QEAgLTEzOSw2ICsxMzksOCBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
KCpKCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlv
bl9FUFMpKEV4ZWNTdGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVj
dGlvbiopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVy
YXRpb25fRVNTKShFeGVjU3RhdGUqLCBzaXplX3QsIHNpemVfdCk7Cit0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU3NpQ0kpKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiwgU3RyaW5nSW1wbCopOwordHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKik7CiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FWiko
RXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gKCpKX0pJVE9wZXJhdGlvbl9FWkljZlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIElubGluZUNh
bGxGcmFtZSosIGludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
ICgqSl9KSVRPcGVyYXRpb25fRVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKQEAg
LTE4MCw3ICsxODIsNiBAQCB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0
CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKKShFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklU
T3BlcmF0aW9uX0VKQ0kpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwqLCBTdHJp
bmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VK
SWRKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwotdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJ
VE9wZXJhdGlvbl9FSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVy
YXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0
aW9uX0VKUFApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCB2b2lkKiwgdm9pZCopOwogdHlw
ZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSlpKKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwpAQCAtMTg5LDYgKzE5
MCw3IEBAIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXQKIHR5cGVkZWYg
dm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRU9aSikoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJB
VElPTiAoKlZfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5
cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVBaSikoRXhlY1N0YXRl
Kiwgdm9pZCosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKK3R5cGVkZWYgdm9pZCBKSVRfT1BF
UkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKTsKIHR5
cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fVykoV2F0Y2hwb2ludFNl
dCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FWikoRXhl
Y1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIEpJVF9PUEVSQVRJT04gKCpQX0pJVE9w
ZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKQEAgLTIxNSwyNiArMjE3LDI2IEBAIEpJVEhhbmRsZXJF
bmNvZGVkIEpJVF9PUEVSQVRJT04gbG9va3VwRXgKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25TdGFja0NoZWNrKEV4ZWNTdGF0ZSosIENvZGVCbG9jayopIFdURl9JTlRFUk5BTDsKIGludDMy
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhFeGVjU3RhdGUqKSBXVEZf
SU5URVJOQUw7CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlD
aGVjayhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0lt
cGwqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldEJ5SWRCdWlsZExpc3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwq
KSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRp
bWl6ZShFeGVjU3RhdGUqLCBKU0NlbGwqLCBTdHJpbmdJbXBsKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFN0cmluZ0ltcGwq
KTsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlk
QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUs
IFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jbk9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgSlNDZWxsKiwgU3RyaW5nSW1wbCopOworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25JbihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2Vs
bCosIFN0cmluZ0ltcGwqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2VuZXJpY0luKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKTsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEN1c3RvbUdldHRlcihFeGVjU3RhdGUq
LCBKU0NlbGwqLCBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYywgU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEdldHRl
cihFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJp
Y3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwq
KSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVj
dE5vblN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBT
dHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVS
TkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRp
bWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWRTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRM
aXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBT
dHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0KEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVTdG9yYWdlQW5kRmluaXNoUHV0KEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQsIEVuY29kZWRKU1ZhbHVl
KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWwoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJp
YyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTU3NTkzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
NSw5ICs1NjUsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdAog
CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAgICAgCi0gICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbihXaXRoUHJvZmlsZSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBy
ZXN1bHRWUmVnLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CisgICAgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvID0gbV9jb2RlQmxvY2stPmFkZFN0dWJJbmZvKCk7CisgICAgCisgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbihXaXRoUHJvZmlsZSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
LCByZXN1bHRWUmVnLCBzdHViSW5mbywgcmVnVDAsIGlkZW50LT5pbXBsKCkpOwogCi0gICAgbV9w
cm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25J
bmRleCsrXS5zbG93Q2FzZUluZm8oY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgbV9wcm9wZXJ0
eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRleCsr
XS5zbG93Q2FzZUluZm8oY29sZFBhdGhCZWdpbiwgY2FsbCwgc3R1YkluZm8pOwogfQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
QEAgLTYzMSwxMCArNjMzLDEyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5z
dHJ1Y3QKICAgICAgICAgICAgIG9wdGltaXplZENhbGwgPSBvcGVyYXRpb25QdXRCeUlkTm9uU3Ry
aWN0T3B0aW1pemU7CiAgICAgfQogICAgIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24o
b3B0aW1pemVkQ2FsbCwgcmVnVDEsIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKKyAgICBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2NvZGVCbG9jay0+YWRkU3R1YkluZm8oKTsKKworICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3B0aW1pemVkQ2FsbCwgc3R1YkluZm8sIHJlZ1Qx
LCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CiAKICAgICAvLyBUcmFjayB0aGUgbG9jYXRpb24gb2Yg
dGhlIGNhbGw7IHRoaXMgd2lsbCBiZSB1c2VkIHRvIHJlY292ZXIgcGF0Y2ggaW5mb3JtYXRpb24u
Ci0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1ttX3Byb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb25JbmRleCsrXS5zbG93Q2FzZUluZm8oY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAg
bV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25JbmRleCsrXS5zbG93Q2FzZUluZm8oY29sZFBhdGhCZWdpbiwgY2FsbCwgc3R1YkluZm8pOwog
fQogCiAvLyBDb21waWxlIGEgc3RvcmUgaW50byBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdl
LiAgTWF5IG92ZXJ3cml0ZSB0aGUKSW5kZXg6IFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDE1NzU5MykKKysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtOSw2ICs5LDcgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL0F0
b21pY3MuaCBcCiAgICAgU291cmNlL1dURi93dGYvQXV0b2RyYWluZWRQb29sLmggXAogICAgIFNv
dXJjZS9XVEYvd3RmL0JhZy5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9CYWdUb0hhc2hNYXAuaCBc
CiAgICAgU291cmNlL1dURi93dGYvQml0QXJyYXkuaCBcCiAgICAgU291cmNlL1dURi93dGYvQml0
VmVjdG9yLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvQml0VmVjdG9yLmggXApJbmRleDogU291
cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCShyZXZpc2lvbiAxNTc1OTMpCisrKyBTb3VyY2UvV1RG
L1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBdXRvZHJhaW5lZFBvb2wuaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQVZMVHJlZS5oIiAvPg0KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxCYWcuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlx3dGZcQmFnVG9IYXNoTWFwLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEJpdEFycmF5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEJpdG1h
cC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxCaXRWZWN0b3IuaCIgLz4N
CkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE1NzU5MykKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAkJMEY5RDMzNjIxNjVEQkE3MzAwNUFEMzg3
IC8qIFByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi87
IH07CiAJCTBGOUQzMzYzMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUUxNjVEQkE3MzAw
NUFEMzg3IC8qIFByaW50U3RyZWFtLmggKi87IH07CiAJCTBGQjE0RTE5MTgwRkEyMTgwMDlCNkI0
RCAvKiBCYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjE0RTE4MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCAqLzsgfTsKKwkJMEZCMTRFMUIxODEw
RTFEQzAwOUI2QjREIC8qIEJhZ1RvSGFzaE1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCMTRFMUExODEwRTFEQTAwOUI2QjREIC8qIEJhZ1RvSGFz
aE1hcC5oICovOyB9OwogCQkwRkM0NDg4MzE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0NDg4MjE2
RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggKi87IH07CiAJCTBGQzRFREU2MTY5NjE0OTYw
MEY2NTA0MSAvKiBDb21tYVByaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQzRFREU1MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIu
aCAqLzsgfTsKIAkJMEZEODFBQzUxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgxQUM0MTU0
RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoKTsgfTsgfTsKQEAgLTI4OSw2ICsyOTAsNyBAQAogCQkwRjlEMzM1RDE2NURCQTczMDA1
QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJpbnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlE
MzM1RTE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJpbnRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZCMTRFMTgxODBGQTIxODAwOUI2QjREIC8qIEJhZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCYWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCMTRF
MUExODEwRTFEQTAwOUI2QjREIC8qIEJhZ1RvSGFzaE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWdU
b0hhc2hNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNDQ4ODIxNkZFOUZF
MTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcm9jZXNzSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNEVERTUxNjk2
MTQ5NjAwRjY1MDQxIC8qIENvbW1hUHJpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb21tYVByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZE
ODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmFzdEJpdFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjA4LDYgKzYxMCw3IEBACiAJCQkJMTQ2OTQxOUIxNkVBQjEwQTAwMjRFMTQ2IC8q
IEF1dG9kcmFpbmVkUG9vbE1hYy5tbSAqLywKIAkJCQlBOEE0NzI1RTE1MUE4MjVBMDA0MTIzRkYg
LyogQVZMVHJlZS5oICovLAogCQkJCTBGQjE0RTE4MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCAq
LywKKwkJCQkwRkIxNEUxQTE4MTBFMURBMDA5QjZCNEQgLyogQmFnVG9IYXNoTWFwLmggKi8sCiAJ
CQkJNEYwMzIxQkIxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFycmF5LmggKi8sCiAJCQkJQThBNDcy
NUYxNTFBODI1QTAwNDEyM0ZGIC8qIEJpdG1hcC5oICovLAogCQkJCUE4QTQ3MjYwMTUxQTgyNUEw
MDQxMjNGRiAvKiBCaXRWZWN0b3IuY3BwICovLApAQCAtOTk2LDYgKzk5OSw3IEBACiAJCQkJQThB
NDczRkExNTFBODI1QjAwNDEyM0ZGIC8qIE9TUmFuZG9tU291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNGQzE1MUE4MjVCMDA0MTIzRkYgLyogT3duUHRyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNGRDE1MUE4MjVCMDA0MTIzRkYgLyogT3duUHRyQ29tbW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkIxNEUxQjE4MTBFMURDMDA5QjZCNEQgLyogQmFnVG9IYXNoTWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzNGRTE1MUE4MjVCMDA0MTIzRkYgLyogUGFja2VkSW50VmVj
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNGRjE1MUE4MjVCMDA0MTIzRkYgLyogUGFn
ZUFsbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDAxMTUxQTgyNUIwMDQxMjNG
RiAvKiBQYWdlQWxsb2NhdGlvbkFsaWduZWQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNl
L1dURi93dGYvQmFnVG9IYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQmFn
VG9IYXNoTWFwLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9CYWdUb0hhc2hNYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBC
YWdUb0hhc2hNYXBfaAorI2RlZmluZSBCYWdUb0hhc2hNYXBfaAorCisjaW5jbHVkZSA8d3RmL0Jh
Zy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgS2V5
R2V0dGVyRnVuY3Rvcj4KK3ZvaWQgdG9IYXNoTWFwKEJhZzxFbGVtZW50VHlwZT4mIGJhZywgS2V5
R2V0dGVyRnVuY3RvciYgZ2V0S2V5LCBIYXNoTWFwPEtleVR5cGUsIEVsZW1lbnRUeXBlKj4mIHJl
c3VsdCkKK3sKKyAgICBmb3IgKEJhZzxFbGVtZW50VHlwZT46Oml0ZXJhdG9yIGl0ZXIgPSBiYWcu
YmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKKyAgICAgICAgRWxlbWVudFR5cGUqIGVsZW1lbnQg
PSAqaXRlcjsKKyAgICAgICAgcmVzdWx0LmFkZChnZXRLZXkoKmVsZW1lbnQpLCBlbGVtZW50KTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNl
bmRpZiAvLyBCYWdUb0hhc2hNYXBfaAorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTU3NTkzKQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQsNiArNCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIEFzc2VydGlvbnMuaAogICAg
IEF0b21pY3MuaAogICAgIEJhZy5oCisgICAgQmF0VG9IYXNoTWFwLmgKICAgICBCaXRBcnJheS5o
CiAgICAgQml0VmVjdG9yLmgKICAgICBCaXRtYXAuaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214543</attachid>
            <date>2013-10-17 23:55:20 -0700</date>
            <delta_ts>2013-10-18 18:19:06 -0700</delta_ts>
            <desc>it compiles!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>100837</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxNTc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlJlcGF0
Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHd0Zi9CYWdUb0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvQ29t
bWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtMzMxLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIGR1
bXBDaGFpbihQcmludFN0cmVhbSYgb3V0LCAKIH0KICNlbmRpZgogCi12b2lkIENvZGVCbG9jazo6
cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVj
LCBpbnQgbG9jYXRpb24pCit2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMo
UHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0
dWJJbmZvTWFwJiBtYXApCiB7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gaW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC0zNTAsOCArMzUxLDggQEAgdm9pZCBD
b2RlQmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKAogI2VuZGlmCiAKICNpZiBFTkFCTEUo
SklUKQotICAgIGlmIChudW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKSB7Ci0gICAgICAgIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGdldFN0dWJJbmZvKGxvY2F0aW9uKTsKKyAgICBp
ZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRp
b24pKSkgeworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsK
ICAgICAgICAgaWYgKHN0dWJJbmZvLnNlZW4pIHsKICAgICAgICAgICAgIG91dC5wcmludGYoIiBq
aXQoIik7CiAgICAgICAgICAgICAKQEAgLTUyMCwxMSArNTIxLDE3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAgICAgICAgb3V0LnByaW50ZigiOyBhY3RpdmF0
aW9uIGluIHIlZCIsIGFjdGl2YXRpb25SZWdpc3RlcigpLm9mZnNldCgpKTsKICAgICBvdXQucHJp
bnRmKCJcbiIpOwogICAgIAorICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZvczsKKyAgICB7CisgICAg
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIGdldFN0dWJJ
bmZvTWFwKGxvY2tlciwgc3R1YkluZm9zKTsKKyAgICB9CisgICAgCiAgICAgY29uc3QgSW5zdHJ1
Y3Rpb24qIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBjb25zdCBJbnN0cnVj
dGlvbiogZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CiAgICAgZm9yIChjb25zdCBJbnN0cnVj
dGlvbiogaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBkdW1wQnl0ZWNvZGUo
b3V0LCBleGVjLCBiZWdpbiwgaXQpOwotCisgICAgICAgIGR1bXBCeXRlY29kZShvdXQsIGV4ZWMs
IGJlZ2luLCBpdCwgc3R1YkluZm9zKTsKKyAgICAKICAgICBpZiAobnVtYmVyT2ZJZGVudGlmaWVy
cygpKSB7CiAgICAgICAgIG91dC5wcmludGYoIlxuSWRlbnRpZmllcnM6XG4iKTsKICAgICAgICAg
c2l6ZV90IGkgPSAwOwpAQCAtNTUyLDExICs1NTksNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKFByaW50U3RyZWFtCiAgICAgICAgIH0gd2hpbGUgKGkgPCBjb3VudCk7CiAgICAgfQog
Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIW1fc3RydWN0dXJlU3R1YkluZm9zLmlzRW1wdHko
KSkKLSAgICAgICAgb3V0LnByaW50ZigiXG5TdHJ1Y3R1cmVzOlxuIik7Ci0jZW5kaWYKLQogICAg
IGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLmlzRW1w
dHkoKSkgewogICAgICAgICBvdXQucHJpbnRmKCJcbkV4Y2VwdGlvbiBIYW5kbGVyczpcbiIpOwog
ICAgICAgICB1bnNpZ25lZCBpID0gMDsKQEAgLTY1Nyw3ICs2NTksNyBAQCB2b2lkIENvZGVCbG9j
azo6ZHVtcFJhcmVDYXNlUHJvZmlsZShQcmluCiB9CiAjZW5kaWYKIAotdm9pZCBDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElu
c3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCkKK3ZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
bnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZv
TWFwJiBtYXApCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAgICBib29sIGhh
c1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKQEAgLTk0Nyw3ICs5NDksNyBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5
X2xlbmd0aDoKICAgICAgICAgY2FzZSBvcF9nZXRfc3RyaW5nX2xlbmd0aDogewogICAgICAgICAg
ICAgcHJpbnRHZXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQpOwotICAgICAgICAgICAg
cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBleGVjLCBsb2NhdGlvbik7CisgICAgICAgICAg
ICBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGV4ZWMsIGxvY2F0aW9uLCBtYXApOwogICAg
ICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MTMsNyArMTQxNSw2IEBAIHN0
YXRpYyBIYXNoU2V0PENvZGVCbG9jayo+IGxpdmVDb2RlQmxvY2sKIAogI2RlZmluZSBGT1JfRUFD
SF9NRU1CRVJfVkVDVE9SKG1hY3JvKSBcCiAgICAgbWFjcm8oaW5zdHJ1Y3Rpb25zKSBcCi0gICAg
bWFjcm8oc3RydWN0dXJlU3R1YkluZm9zKSBcCiAgICAgbWFjcm8oY2FsbExpbmtJbmZvcykgXAog
ICAgIG1hY3JvKGxpbmtlZENhbGxlckxpc3QpIFwKICAgICBtYWNybyhpZGVudGlmaWVycykgXApA
QCAtMTkzMCw4ICsxOTMxLDggQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICAgICAvLyBtX2lu
Y29taW5nQ2FsbHMgbGlua2VkIGxpc3RzIHRocm91Z2ggdGhlIGV4ZWN1dGlvbiBvZiB0aGUgfkNh
bGxMaW5rSW5mbwogICAgIC8vIGRlc3RydWN0b3JzLgogCi0gICAgZm9yIChzaXplX3Qgc2l6ZSA9
IG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgIG1fc3RydWN0dXJlU3R1YkluZm9zW2ldLmRlcmVmKCk7CisgICAgZm9yIChCYWc8U3RydWN0
dXJlU3R1YkluZm8+OjppdGVyYXRvciBpdGVyID0gbV9zdHViSW5mb3MuYmVnaW4oKTsgISFpdGVy
OyArK2l0ZXIpCisgICAgICAgICgqaXRlciktPmRlcmVmKCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKIAogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCkBAIC0yMDg2LDggKzIwODcsOCBA
QCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xvCiAKICNpZiBFTkFCTEUo
SklUKQogICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKSB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZVN0dWJJbmZvcy5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gbV9zdHJ1Y3R1cmVTdHVi
SW5mb3NbaV07CisgICAgICAgIGZvciAoQmFnPFN0cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0b3Ig
aXRlciA9IG1fc3R1YkluZm9zLmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7CisgICAgICAgICAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqKml0ZXI7CiAgICAgICAgICAgICBzd2l0
Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgYWNjZXNzX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDogewpAQCAtMjM0Myw4ICsyMzQ0LDggQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgICAgICYmICFIZWFwOjpp
c01hcmtlZChjYWxsTGlua0luZm8oaSkubGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQogICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOwogICAgICAgICB9
Ci0gICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3N0cnVjdHVyZVN0dWJJbmZvcy5zaXplKCks
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8gPSBtX3N0cnVjdHVyZVN0dWJJbmZvc1tpXTsKKyAgICAgICAgZm9yIChCYWc8U3Ry
dWN0dXJlU3R1YkluZm8+OjppdGVyYXRvciBpdGVyID0gbV9zdHViSW5mb3MuYmVnaW4oKTsgISFp
dGVyOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9
ICoqaXRlcjsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLnZpc2l0V2Vh
a1JlZmVyZW5jZXMoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNTYsNiArMjM1
NywxNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiB9CiAKICNp
ZiBFTkFCTEUoSklUKQorU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1YkluZm8o
KQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgcmV0dXJu
IG1fc3R1YkluZm9zLmFkZCgpOworfQorCit2b2lkIENvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAo
Y29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIFN0dWJJbmZvTWFwJiByZXN1bHQpCit7CisgICAg
dG9IYXNoTWFwKG1fc3R1YkluZm9zLCBnZXRTdHJ1Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4sIHJl
c3VsdCk7Cit9CisKIHZvaWQgQ29kZUJsb2NrOjpyZXNldFN0dWIoU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQogewogICAgIGlmIChzdHViSW5mby5hY2Nlc3NUeXBlID09IGFjY2Vzc191bnNl
dCkKQEAgLTI1NzgsNyArMjU5MCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VG
b3JCeXRlY28KIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNocmlua01v
ZGUpCiB7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBtX3N0cnVjdHVyZVN0dWJJbmZvcy5zaHJpbmtU
b0ZpdCgpOwogICAgIG1fY2FsbExpbmtJbmZvcy5zaHJpbmtUb0ZpdCgpOwogI2VuZGlmCiAjaWYg
RU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtMzA5NiwxNiArMzEwNyw2IEBAIHZvaWQgQ29kZUJs
b2NrOjpzZXRPcHRpbWl6YXRpb25UaHJlc2hvbGQKIAogI2VuZGlmCiAgICAgCi1zdGF0aWMgYm9v
bCBzdHJ1Y3R1cmVTdHViSW5mb0xlc3NUaGFuKGNvbnN0IFN0cnVjdHVyZVN0dWJJbmZvJiBhLCBj
b25zdCBTdHJ1Y3R1cmVTdHViSW5mbyYgYikKLXsKLSAgICByZXR1cm4gYS5jYWxsUmV0dXJuTG9j
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSA8IGIuY2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7Ci19Ci0KLXZvaWQgQ29kZUJsb2NrOjpzb3J0U3RydWN0dXJlU3R1YkluZm9z
KCkKLXsKLSAgICBzdGQ6OnNvcnQobV9zdHJ1Y3R1cmVTdHViSW5mb3MuYmVnaW4oKSwgbV9zdHJ1
Y3R1cmVTdHViSW5mb3MuZW5kKCksIHN0cnVjdHVyZVN0dWJJbmZvTGVzc1RoYW4pOwotfQotCiB1
aW50MzJfdCBDb2RlQmxvY2s6OmFkanVzdGVkRXhpdENvdW50VGhyZXNob2xkKHVpbnQzMl90IGRl
c2lyZWRUaHJlc2hvbGQpCiB7CiAgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChq
aXRUeXBlKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHJldmlzaW9uIDE1NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUg
IlZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUg
IldhdGNocG9pbnQuaCIKKyNpbmNsdWRlIDx3dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkQXJyYXkuaD4KQEAgLTE3MCwxOCArMTcxLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5k
T2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbik7CiAKICNpZiBFTkFCTEUo
SklUKQotCi0gICAgU3RydWN0dXJlU3R1YkluZm8mIGdldFN0dWJJbmZvKFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxT
dHJ1Y3R1cmVTdHViSW5mbywgdm9pZCo+KG1fc3RydWN0dXJlU3R1YkluZm9zLCBtX3N0cnVjdHVy
ZVN0dWJJbmZvcy5zaXplKCksIHJldHVybkFkZHJlc3MudmFsdWUoKSwgZ2V0U3RydWN0dXJlU3R1
YkluZm9SZXR1cm5Mb2NhdGlvbikpOwotICAgIH0KLQotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBn
ZXRTdHViSW5mbyh1bnNpZ25lZCBieXRlY29kZUluZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJu
ICooYmluYXJ5U2VhcmNoPFN0cnVjdHVyZVN0dWJJbmZvLCB1bnNpZ25lZD4obV9zdHJ1Y3R1cmVT
dHViSW5mb3MsIG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCwgZ2V0
U3RydWN0dXJlU3R1YkluZm9CeXRlY29kZUluZGV4KSk7Ci0gICAgfQorICAgIFN0cnVjdHVyZVN0
dWJJbmZvKiBhZGRTdHViSW5mbygpOworICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJh
dG9yIGJlZ2luKCkgeyByZXR1cm4gbV9zdHViSW5mb3MuYmVnaW4oKTsgfQorICAgIEJhZzxTdHJ1
Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fc3R1YkluZm9zLmVuZCgp
OyB9CiAKICAgICB2b2lkIHJlc2V0U3R1YihTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIAorICAg
IHZvaWQgZ2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIFN0dWJJbmZv
TWFwJiByZXN1bHQpOwogCiAgICAgQnlWYWxJbmZvJiBnZXRCeVZhbEluZm8odW5zaWduZWQgYnl0
ZWNvZGVJbmRleCkKICAgICB7CkBAIC0zNzcsMTEgKzM3Myw2IEBAIHB1YmxpYzoKICAgICBTdHJp
bmcgbmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcik7CiAKICNpZiBFTkFCTEUoSklUKQot
ICAgIHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Moc2l6ZV90IHNpemUpIHsgbV9z
dHJ1Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXplKTsgfQotICAgIHZvaWQgc29ydFN0cnVjdHVyZVN0
dWJJbmZvcygpOwotICAgIHNpemVfdCBudW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKTsgfQotICAgIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHJ1Y3R1cmVTdHViSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fc3RydWN0dXJl
U3R1YkluZm9zW2luZGV4XTsgfQotCiAgICAgdm9pZCBzZXROdW1iZXJPZkJ5VmFsSW5mb3Moc2l6
ZV90IHNpemUpIHsgbV9ieVZhbEluZm9zLmdyb3coc2l6ZSk7IH0KICAgICBzaXplX3QgbnVtYmVy
T2ZCeVZhbEluZm9zKCkgY29uc3QgeyByZXR1cm4gbV9ieVZhbEluZm9zLnNpemUoKTsgfQogICAg
IEJ5VmFsSW5mbyYgYnlWYWxJbmZvKHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9ieVZhbEluZm9z
W2luZGV4XTsgfQpAQCAtNDQ1LDggKzQzNiw4IEBAIHB1YmxpYzoKICAgICBSYXJlQ2FzZVByb2Zp
bGUqIHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0cnlCaW5hcnlTZWFyY2g8UmFyZUNhc2VQcm9maWxlLCBp
bnQ+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3JhcmVDYXNlUHJvZmlsZXMsIG1fcmFyZUNhc2VQcm9maWxlcy5zaXplKCksIGJ5dGVjb2Rl
T2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZXRSYXJlQ2FzZVByb2ZpbGVCeXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICBtX3Jh
cmVDYXNlUHJvZmlsZXMsIG1fcmFyZUNhc2VQcm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0
LAorICAgICAgICAgICAgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmZzZXQpOwogICAgIH0K
IAogICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQpAQCAt
OTM1LDE0ICs5MjYsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fY29uc3RhbnRSZWdpc3Rl
cnNbaV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUoKSwgY29uc3RhbnRzW2ldLmdldCgpKTsK
ICAgICB9CiAKLSAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSos
IGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7CisgICAgdm9p
ZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXAgPSBT
dHViSW5mb01hcCgpKTsKIAogICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1lKGludCByKSBjb25zdDsK
ICAgICB2b2lkIHByaW50VW5hcnlPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2Nh
dGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOwogICAgIHZvaWQgcHJp
bnRCaW5hcnlPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOwogICAgIHZvaWQgcHJpbnRDb25kaXRpb25h
bEp1bXAoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0
IEluc3RydWN0aW9uKiYsIGludCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3ApOwogICAgIHZvaWQg
cHJpbnRHZXRCeUlkT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNv
bnN0IEluc3RydWN0aW9uKiYpOwotICAgIHZvaWQgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJp
bnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24pOworICAgIHZvaWQgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNv
bnN0IFN0dWJJbmZvTWFwJik7CiAgICAgZW51bSBDYWNoZUR1bXBNb2RlIHsgRHVtcENhY2hlcywg
RG9udER1bXBDYWNoZXMgfTsKICAgICB2b2lkIHByaW50Q2FsbE9wKFByaW50U3RyZWFtJiwgRXhl
Y1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBv
cCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgdm9pZCBw
cmludFB1dEJ5SWRPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOwpAQCAtMTAzMSw3ICsxMDIyLDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlOwogICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBtX2ppdENvZGVXaXRoQXJpdHlDaGVjazsKICNpZiBFTkFCTEUoSklUKQotICAg
IFZlY3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHJ1Y3R1cmVTdHViSW5mb3M7CisgICAgQmFn
PFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0dWJJbmZvczsKICAgICBWZWN0b3I8QnlWYWxJbmZvPiBt
X2J5VmFsSW5mb3M7CiAgICAgVmVjdG9yPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwog
ICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2Rl
PENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHJldmlzaW9uIDE1NzYxOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDYgKzYwLDEyIEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICB7CiAgICAgfQogICAgIAor
ICAgIENvZGVPcmlnaW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6
IGJ5dGVjb2RlSW5kZXgoaW52YWxpZEJ5dGVjb2RlSW5kZXgpCisgICAgICAgICwgaW5saW5lQ2Fs
bEZyYW1lKGJpdHdpc2VfY2FzdDxJbmxpbmVDYWxsRnJhbWUqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KDEpKSkKKyAgICB7CisgICAgfQorICAgIAogICAgIGV4cGxpY2l0IENvZGVPcmlnaW4odW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSAw
KQogICAgICAgICA6IGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKICAgICAgICAgLCBpbmxp
bmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKQpAQCAtNjksNiArNzUsMTEgQEAgc3RydWN0IENv
ZGVPcmlnaW4gewogICAgIAogICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBieXRlY29k
ZUluZGV4ICE9IGludmFsaWRCeXRlY29kZUluZGV4OyB9CiAgICAgCisgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYnl0ZWNvZGVJ
bmRleCA9PSBpbnZhbGlkQnl0ZWNvZGVJbmRleCAmJiAhIWlubGluZUNhbGxGcmFtZTsKKyAgICB9
CisgICAgCiAgICAgLy8gVGhlIGlubGluZSBkZXB0aCBpcyB0aGUgZGVwdGggb2YgdGhlIGlubGlu
ZSBzdGFjaywgc28gMSA9IG5vdCBpbmxpbmVkLAogICAgIC8vIDIgPSBpbmxpbmVkIG9uZSBkZWVw
LCBldGMuCiAgICAgdW5zaWduZWQgaW5saW5lRGVwdGgoKSBjb25zdDsKQEAgLTgxLDggKzkyLDgg
QEAgc3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIHN0YXRpYyB1bnNpZ25lZCBpbmxpbmVE
ZXB0aEZvckNhbGxGcmFtZShJbmxpbmVDYWxsRnJhbWUqKTsKICAgICAKKyAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvZGVPcmlnaW4mIG90aGVy
KSBjb25zdDsKLSAgICAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29kZU9yaWdpbiYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgCiAgICAgLy8gR2V0
IHRoZSBpbmxpbmUgc3RhY2suIFRoaXMgaXMgc2xvdywgYW5kIGlzIGludGVuZGVkIGZvciBkZWJ1
Z2dpbmcgb25seS4KQEAgLTE0NSw2ICsxNTYsMTIgQEAgaW5saW5lIGludCBDb2RlT3JpZ2luOjpz
dGFja09mZnNldCgpIGNvbgogICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
OwogfQogCitpbmxpbmUgdW5zaWduZWQgQ29kZU9yaWdpbjo6aGFzaCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2goYnl0ZWNvZGVJbmRleCkgKworICAg
ICAgICBXVEY6OlB0ckhhc2g8SW5saW5lQ2FsbEZyYW1lKj46Omhhc2goaW5saW5lQ2FsbEZyYW1l
KTsKK30KKwogaW5saW5lIGJvb2wgQ29kZU9yaWdpbjo6b3BlcmF0b3I9PShjb25zdCBDb2RlT3Jp
Z2luJiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gYnl0ZWNvZGVJbmRleCA9PSBvdGhlci5i
eXRlY29kZUluZGV4CkBAIC0xNTgsNyArMTc1LDI1IEBAIGlubGluZSBTY3JpcHRFeGVjdXRhYmxl
KiBDb2RlT3JpZ2luOjpjb2QKICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxl
LmdldCgpOwogfQogCitzdHJ1Y3QgQ29kZU9yaWdpbkhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IENvZGVPcmlnaW4mIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvZGVPcmlnaW4mIGEsIGNvbnN0IENvZGVPcmlnaW4m
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNo
OwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpDb2RlT3JpZ2luPiB7CisgICAg
dHlwZWRlZiBKU0M6OkNvZGVPcmlnaW5IYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlND
OjpDb2RlT3JpZ2luPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkNvZGVPcmlnaW4+IHsg
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBDb2RlT3JpZ2luX2gKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAkocmV2aXNpb24gMTU3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yQ2hhaW4oR2V0QgogI2VuZGlmCiB9CiAKLUdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVpZCkKK0dldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJ
bmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVpZCkKIHsK
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwog
ICAgIApAQCAtMTEzLDI4ICsxMTMsMjMgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURf
UEFSQU0odWlkKTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0g
ICAgaWYgKCFwcm9maWxlZEJsb2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQorICAgIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUlu
ZGV4KSk7CisgICAgaWYgKCFzdHViSW5mbyB8fCAhc3R1YkluZm8tPnNlZW4pCiAgICAgICAgIHJl
dHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHVpZCk7
CiAgICAgCi0gICAgLy8gRmlyc3QgY2hlY2sgaWYgaXQgbWFrZXMgZWl0aGVyIGNhbGxzLCBpbiB3
aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUgc3VwZXIgY2FyZWZ1bCwgb3IKLSAgICAvLyBpZiBpdCdz
IG5vdCBzZXQgYXQgYWxsLCBpbiB3aGljaCBjYXNlIHdlIHB1bnQuCi0gICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRl
eCk7Ci0gICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21M
TEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQpOwotICAgIAotICAgIGlmIChz
dHViSW5mby5yZXNldEJ5R0MpCisgICAgaWYgKHN0dWJJbmZvLT5yZXNldEJ5R0MpCiAgICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIHRydWUpOwogCiAgICAgUG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBsaXN0OwogICAgIGludCBsaXN0U2l6ZTsKLSAgICBz
d2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKKyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGZfbGlzdDoKLSAgICAgICAg
bGlzdCA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0LnN0cnVjdHVyZUxpc3Q7Ci0gICAgICAg
IGxpc3RTaXplID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3QubGlzdFNpemU7CisgICAgICAg
IGxpc3QgPSBzdHViSW5mby0+dS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsKKyAgICAg
ICAgbGlzdFNpemUgPSBzdHViSW5mby0+dS5nZXRCeUlkU2VsZkxpc3QubGlzdFNpemU7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90b19saXN0OgotICAgICAg
ICBsaXN0ID0gc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3Q7Ci0gICAg
ICAgIGxpc3RTaXplID0gc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0Lmxpc3RTaXplOworICAg
ICAgICBsaXN0ID0gc3R1YkluZm8tPnUuZ2V0QnlJZFByb3RvTGlzdC5zdHJ1Y3R1cmVMaXN0Owor
ICAgICAgICBsaXN0U2l6ZSA9IHN0dWJJbmZvLT51LmdldEJ5SWRQcm90b0xpc3QubGlzdFNpemU7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGxpc3QgPSAwOwpAQCAtMTUz
LDEyICsxNDgsMTIgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgIC8vIEZpbmFsbHkgZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZlIGFuIGFjY2VzcyBzdHJh
dGVneS4KICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKICAgICByZXN1bHQubV93YXNTZWVuSW5K
SVQgPSB0cnVlOyAvLyBUaGlzIGlzIGludGVyZXN0aW5nIGZvciBieXRlY29kZSBkdW1waW5nIG9u
bHkuCi0gICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CisgICAgc3dpdGNoIChzdHVi
SW5mby0+YWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgogICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQpOwog
ICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjogewotICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVj
dHVyZS5nZXQoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby0+dS5n
ZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzSWdub3JlZDsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwogICAgICAg
ICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKQEAgLTIxNCwy
NCArMjA5LDI0IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAg
ICB9CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90bzogewotICAgICAg
ICBpZiAoIXN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvLmlzRGlyZWN0KQorICAgICAgICBpZiAoIXN0
dWJJbmZvLT51LmdldEJ5SWRQcm90by5pc0RpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBHZXRC
eUlkU3RhdHVzKE1ha2VzQ2FsbHMsIHRydWUpOwogICAgICAgICByZXN1bHQubV9jaGFpbiA9IGFk
b3B0UmVmKG5ldyBJbnRlbmRlZFN0cnVjdHVyZUNoYWluKAogICAgICAgICAgICAgcHJvZmlsZWRC
bG9jaywKLSAgICAgICAgICAgIHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCksCi0gICAgICAgICAgICBzdHViSW5mby51LmdldEJ5SWRQcm90by5wcm90b3R5
cGVTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgIHN0dWJJbmZvLT51LmdldEJ5SWRQcm90
by5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgc3R1YkluZm8tPnUuZ2V0
QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBjb21wdXRlRm9y
Q2hhaW4ocmVzdWx0LCBwcm9maWxlZEJsb2NrLCB1aWQpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjogewotICAgICAgICBp
ZiAoIXN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmlzRGlyZWN0KQorICAgICAgICBpZiAoIXN0dWJJ
bmZvLT51LmdldEJ5SWRDaGFpbi5pc0RpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKE1ha2VzQ2FsbHMsIHRydWUpOwogICAgICAgICByZXN1bHQubV9jaGFpbiA9IGFkb3B0
UmVmKG5ldyBJbnRlbmRlZFN0cnVjdHVyZUNoYWluKAogICAgICAgICAgICAgcHJvZmlsZWRCbG9j
aywKLSAgICAgICAgICAgIHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1
cmUuZ2V0KCksCi0gICAgICAgICAgICBzdHViSW5mby51LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQo
KSwKLSAgICAgICAgICAgIHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmNvdW50KSk7CisgICAgICAg
ICAgICBzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSwK
KyAgICAgICAgICAgIHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQoKSwKKyAgICAg
ICAgICAgIHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jb3VudCkpOwogICAgICAgICBjb21wdXRl
Rm9yQ2hhaW4ocmVzdWx0LCBwcm9maWxlZEJsb2NrLCB1aWQpOwogICAgICAgICBicmVhazsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmgJKHJldmlzaW9uIDE1NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5m
by5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzAsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxlKSA9PSAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQp
KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2Rl
QmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0
YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgU3R1YkluZm9NYXAmIG1h
cCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKTsKICAgICBzdGF0aWMg
R2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKFZNJiwgU3RydWN0dXJlKiwgU3RyaW5nSW1wbCogdWlk
KTsKICAgICAKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5j
cHAJKHJldmlzaW9uIDE1NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAjZW5kaWYKIH0KIAotUHV0QnlJZFN0
YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKQorUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3R1Yklu
Zm9NYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKQogewog
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAg
ICAgCkBAIC04OSwzMiArODksMjkgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKAogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFS
QU0odWlkKTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAg
aWYgKCFwcm9maWxlZEJsb2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQotICAgICAgICBy
ZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQp
OwotICAgIAogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRl
Y29kZUluZGV4KSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwg
MCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgCi0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRleCk7Ci0gICAg
aWYgKCFzdHViSW5mby5zZWVuKQorICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1h
cC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgaWYgKCFzdHViSW5mbyB8fCAh
c3R1YkluZm8tPnNlZW4pCiAgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHVpZCk7CiAgICAgCi0gICAgaWYgKHN0dWJJbmZvLnJlc2V0
QnlHQykKKyAgICBpZiAoc3R1YkluZm8tPnJlc2V0QnlHQykKICAgICAgICAgcmV0dXJuIFB1dEJ5
SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAKLSAgICBz
d2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKKyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6CiAgICAgICAgIC8vIElmIHRoZSBKSVQg
c2F3IGl0IGJ1dCBkaWRuJ3Qgb3B0aW1pemUgaXQsIHRoZW4gYXNzdW1lIHRoYXQgdGhpcyB0YWtl
cyBzbG93IHBhdGguCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgs
IDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRf
YnlfaWRfcmVwbGFjZTogewogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPQotICAgICAg
ICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXRD
b25jdXJyZW50bHkoCisgICAgICAgICAgICBzdHViSW5mby0+dS5wdXRCeUlkUmVwbGFjZS5iYXNl
T2JqZWN0U3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAgICAgICAgICAgICAgICAgKnByb2Zp
bGVkQmxvY2stPnZtKCksIHVpZCk7CiAgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkp
IHsKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNp
bXBsZVJlcGxhY2UsCi0gICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5i
YXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLT51LnB1
dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksCiAgICAgICAgICAgICAgICAg
MCwgMCwKICAgICAgICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9CkBAIC0xMjMsMTggKzEy
MCwxOCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAg
IAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNl
IGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKLSAgICAgICAgQVNTRVJUKHN0
dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBBU1NFUlQoc3R1Yklu
Zm8tPnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRj
aHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSAKLSAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0
dXJlLT5nZXRDb25jdXJyZW50bHkoCisgICAgICAgICAgICBzdHViSW5mby0+dS5wdXRCeUlkVHJh
bnNpdGlvbi5zdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgICAgICAgICAqcHJv
ZmlsZWRCbG9jay0+dm0oKSwgdWlkKTsKICAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0
KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAg
U2ltcGxlVHJhbnNpdGlvbiwKLSAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRUcmFu
c2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLmdldCgpLAotICAgICAgICAgICAgICAgIHN0dWJJbmZv
LnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLmdldCgpLAotICAgICAgICAgICAgICAgIHN0
dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4gPyBhZG9wdFJlZihuZXcgSW50ZW5kZWRT
dHJ1Y3R1cmVDaGFpbigKLSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgc3R1Yklu
Zm8udS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS5nZXQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5nZXQoKSkpIDog
MCwKKyAgICAgICAgICAgICAgICBzdHViSW5mby0+dS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91
c1N0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAgICAgICBzdHViSW5mby0+dS5wdXRCeUlkVHJh
bnNpdGlvbi5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgc3R1YkluZm8tPnUucHV0
QnlJZFRyYW5zaXRpb24uY2hhaW4gPyBhZG9wdFJlZihuZXcgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFp
bigKKyAgICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8tPnUucHV0QnlJ
ZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLT51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluLmdldCgpKSkgOiAwLAogICAgICAg
ICAgICAgICAgIG9mZnNldCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDE1
NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludGVuZGVkU3Ry
dWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQo
KG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09
IChtX29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBQ
dXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCwgU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9y
KENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5n
SW1wbCogdWlkKTsKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3Qp
OwogICAgIAogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgJKHJldmlzaW9uIDE1NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOTQsMTUg
KzI5NCwxMiBAQCBzdHJ1Y3QgU3RydWN0dXJlU3R1YkluZm8gewogICAgIFJlZlB0cjxXYXRjaHBv
aW50c09uU3RydWN0dXJlU3R1YkluZm8+IHdhdGNocG9pbnRzOwogfTsKIAotaW5saW5lIHZvaWQq
IGdldFN0cnVjdHVyZVN0dWJJbmZvUmV0dXJuTG9jYXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0
cnVjdHVyZVN0dWJJbmZvKQoraW5saW5lIENvZGVPcmlnaW4gZ2V0U3RydWN0dXJlU3R1YkluZm9D
b2RlT3JpZ2luKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHJ1Y3R1cmVTdHViSW5mbykKIHsKLSAgICBy
ZXR1cm4gc3RydWN0dXJlU3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRk
cmVzcygpOworICAgIHJldHVybiBzdHJ1Y3R1cmVTdHViSW5mby5jb2RlT3JpZ2luOwogfQogCi1p
bmxpbmUgdW5zaWduZWQgZ2V0U3RydWN0dXJlU3R1YkluZm9CeXRlY29kZUluZGV4KFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHJ1Y3R1cmVTdHViSW5mbykKLXsKLSAgICByZXR1cm4gc3RydWN0dXJlU3R1
YkluZm8tPmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKLX0KK3R5cGVkZWYgSGFzaE1hcDxDb2Rl
T3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyo+IFN0dWJJbmZvTWFwOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHJldmlzaW9uIDE1NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU4LDYgKzEwNTgs
OCBAQCBwcml2YXRlOgogICAgICAgICAvLyBjb2RlIGJsb2NrIGhhZCBnYXRoZXJlZC4KICAgICAg
ICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIgbV9sYXp5T3BlcmFuZHM7CiAgICAgICAg
IAorICAgICAgICBTdHViSW5mb01hcCBtX3N0dWJJbmZvczsKKyAgICAgICAgCiAgICAgICAgIC8v
IERpZCB3ZSBzZWUgYW55IHJldHVybnM/IFdlIG5lZWQgdG8gaGFuZGxlIHRoZSAodW5jb21tb24g
YnV0IG5lY2Vzc2FyeSkKICAgICAgICAgLy8gY2FzZSB3aGVyZSBhIHByb2NlZHVyZSB0aGF0IGRv
ZXMgbm90IHJldHVybiB3YXMgaW5saW5lZC4KICAgICAgICAgYm9vbCBtX2RpZFJldHVybjsKQEAg
LTI0MzgsNyArMjQ0MCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIAogICAgICAgICAgICAgU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5p
ZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwogICAgICAgICAgICAgR2V0QnlJZFN0YXR1
cyBnZXRCeUlkU3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4LCB1
aWQpOworICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywg
bV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsCisgICAgICAgICAgICAgICAgbV9jdXJyZW50
SW5kZXgsIHVpZCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoCiAg
ICAgICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlv
biwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlJZFN0YXR1cyk7CkBAIC0yNDU3LDkgKzI0
NjAsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICBib29sIGRpcmVjdCA9IGN1cnJlbnRJbnN0cnVjdGlvbls4XS51Lm9wZXJhbmQ7CiAKICAg
ICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJZFN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLAotICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4LAotICAgICAgICAgICAgICAgIG1f
Z3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CisgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX3N0
dWJJbmZvcywKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCwgbV9ncmFwaC5pZGVudGlm
aWVycygpW2lkZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIGJvb2wgY2FuQ291bnRBc0lu
bGluZWQgPSB0cnVlOwogICAgICAgICAgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2V0KCkpIHsK
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CkBAIC0zMzM0LDYgKzMz
MzYsMTIgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgICAg
ICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAg
ICAgICAgIG1fbGF6eU9wZXJhbmRzLmluaXRpYWxpemUobG9ja2VyLCBtX3Byb2ZpbGVkQmxvY2st
PmxhenlPcGVyYW5kVmFsdWVQcm9maWxlcygpKTsKICAgICAgICAgbV9leGl0UHJvZmlsZS5pbml0
aWFsaXplKGxvY2tlciwgcHJvZmlsZWRCbG9jay0+ZXhpdFByb2ZpbGUoKSk7CisgICAgICAgIAor
ICAgICAgICAvLyBXZSBkbyB0aGlzIHdoaWxlIGhvbGRpbmcgdGhlIGxvY2sgYmVjYXVzZSB3ZSB3
YW50IHRvIGVuY291cmFnZSBTdHJ1Y3R1cmVTdHViSW5mbydzCisgICAgICAgIC8vIHRvIGJlIHBv
dGVudGlhbGx5IGFkZGVkIHRvIG9wZXJhdGlvbnMgYW5kIGJlY2F1c2UgdGhlIHByb2ZpbGVkIGJs
b2NrIGNvdWxkIGJlIGluIHRoZQorICAgICAgICAvLyBtaWRkbGUgb2YgTExJbnQtPkpJVCB0aWVy
LXVwIGluIHdoaWNoIGNhc2Ugd2Ugd291bGQgYmUgYWRkaW5nIHRoZSBpbmZvJ3MgcmlnaHQgbm93
LgorICAgICAgICBpZiAobV9wcm9maWxlZEJsb2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygp
KQorICAgICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mb01hcChsb2NrZXIsIG1f
c3R1YkluZm9zKTsKICAgICB9CiAgICAgCiAgICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE1NzYxOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjQsMTEgKzIyNCw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYWxscy5zaXplKCk7ICsraSkKICAgICAg
ICAgbGlua0J1ZmZlci5saW5rKG1fY2FsbHNbaV0ubV9jYWxsLCBtX2NhbGxzW2ldLm1fZnVuY3Rp
b24pOwogCi0gICAgbV9jb2RlQmxvY2stPnNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKG1f
cHJvcGVydHlBY2Nlc3Nlcy5zaXplKCkgKyBtX2lucy5zaXplKCkpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3Byb3BlcnR5QWNjZXNzZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
U3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8o
aSk7CisgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZvID0gKm1fcHJvcGVydHlBY2Nlc3Nl
c1tpXS5tX3N0dWJJbmZvOwogICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2Nh
dGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93
UGF0aEdlbmVyYXRvci0+Y2FsbCgpKTsKLSAgICAgICAgaW5mby5jb2RlT3JpZ2luID0gbV9wcm9w
ZXJ0eUFjY2Vzc2VzW2ldLm1fY29kZU9yaWdpbjsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9j
YXRpb24gPSBjYWxsUmV0dXJuTG9jYXRpb247CiAgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDaGVj
a0ltbVRvQ2FsbCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihsaW5rQnVmZmVyLmxvY2F0aW9u
T2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc3RydWN0dXJlSW1tKSwgY2FsbFJldHVybkxvY2F0
aW9uKTsKICAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENoZWNrID0gZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlv
bk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3N0cnVjdHVyZUNoZWNrKSk7CkBAIC0yNDEsMzAg
KzIzOSwxNSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAg
ICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5
QWNjZXNzZXNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkpOwogICAgICAgICBpbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0
dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0u
bV9kb25lKSk7CiAgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IGRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9j
YXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7Ci0g
ICAgICAgIGluZm8ucGF0Y2guYmFzZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2Jhc2VH
UFI7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IG1f
cHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwotI2Vsc2UKLSAgICAgICAgaW5mby5wYXRj
aC52YWx1ZVRhZ0dQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlVGFnR1BSOwotICAg
ICAgICBpbmZvLnBhdGNoLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVH
UFI7Ci0jZW5kaWYKLSAgICAgICAgaW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzID0gbV9wcm9wZXJ0
eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lzdGVyczsKLSAgICAgICAgaW5mby5wYXRjaC5yZWdpc3Rl
cnNGbHVzaGVkID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fcmVnaXN0ZXJNb2RlID09IFByb3Bl
cnR5QWNjZXNzUmVjb3JkOjpSZWdpc3RlcnNGbHVzaGVkOwogICAgIH0KICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9pbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgU3RydWN0dXJlU3R1
YkluZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9wcm9wZXJ0eUFj
Y2Vzc2VzLnNpemUoKSArIGkpOworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgaW5mbyA9ICpt
X2luc1tpXS5tX3N0dWJJbmZvOwogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBqdW1wID0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKG1faW5zW2ldLm1fanVtcCk7CiAgICAgICAgIENvZGVMb2NhdGlv
bkNhbGwgY2FsbFJldHVybkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1faW5zW2ld
Lm1fc2xvd1BhdGhHZW5lcmF0b3ItPmNhbGwoKSk7Ci0gICAgICAgIGluZm8uY29kZU9yaWdpbiA9
IG1faW5zW2ldLm1fY29kZU9yaWdpbjsKICAgICAgICAgaW5mby5ob3RQYXRoQmVnaW4gPSBqdW1w
OwogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGxSZXR1cm5Mb2NhdGlvbjsK
ICAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlID0gZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1faW5z
W2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVsKCkpKTsKLSAgICAgICAgaW5mby5wYXRjaC5i
YXNlR1BSID0gbV9pbnNbaV0ubV9iYXNlR1BSOwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVlR1BS
ID0gbV9pbnNbaV0ubV9yZXN1bHRHUFI7Ci0gICAgICAgIGluZm8ucGF0Y2gudXNlZFJlZ2lzdGVy
cyA9IG1faW5zW2ldLm1fdXNlZFJlZ2lzdGVyczsKLSAgICAgICAgaW5mby5wYXRjaC5yZWdpc3Rl
cnNGbHVzaGVkID0gZmFsc2U7CiAgICAgfQotICAgIG1fY29kZUJsb2NrLT5zb3J0U3RydWN0dXJl
U3R1YkluZm9zKCk7CiAgICAgCiAgICAgbV9jb2RlQmxvY2stPnNldE51bWJlck9mQ2FsbExpbmtJ
bmZvcyhtX2pzQ2FsbHMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9q
c0NhbGxzLnNpemUoKTsgKytpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxNTc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDM5ICs3OCwyMCBA
QCBzdHJ1Y3QgQ2FsbExpbmtSZWNvcmQgewogfTsKIAogc3RydWN0IFByb3BlcnR5QWNjZXNzUmVj
b3JkIHsKLSAgICBlbnVtIFJlZ2lzdGVyTW9kZSB7IFJlZ2lzdGVyc0ZsdXNoZWQsIFJlZ2lzdGVy
c0luVXNlIH07Ci0gICAgCi0jaWYgVVNFKEpTVkFMVUU2NCkKICAgICBQcm9wZXJ0eUFjY2Vzc1Jl
Y29yZCgKLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZUltbSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
b252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAorI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGxvYWRPclN0b3Jl
LAotICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCi0gICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lLAotICAgICAgICBpbnQ4X3QgYmFzZUdQUiwKLSAg
ICAgICAgaW50OF90IHZhbHVlR1BSLAotICAgICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKLSAgICAgICAgUmVnaXN0ZXJNb2RlIHJlZ2lzdGVyTW9kZSA9IFJlZ2lzdGVyc0lu
VXNlKQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgK
LSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RGF0YUxhYmVsUHRyIHN0cnVjdHVyZUltbSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNo
YWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0
aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsQ29tcGFjdCB0YWdMb2FkT3JTdG9yZSwKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbENvbXBhY3QgcGF5bG9hZExvYWRPclN0b3JlLAorI2VuZGlmCiAgICAgICAg
IFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aEdlbmVyYXRvciwKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIGRvbmUsCi0gICAgICAgIGludDhfdCBiYXNlR1BSLAotICAgICAgICBpbnQ4
X3QgdmFsdWVUYWdHUFIsCi0gICAgICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIFJlZ2lzdGVyTW9kZSByZWdpc3Rl
ck1vZGUgPSBSZWdpc3RlcnNJblVzZSkKLSNlbmRpZgotICAgICAgICA6IG1fY29kZU9yaWdpbihj
b2RlT3JpZ2luKQotICAgICAgICAsIG1fc3RydWN0dXJlSW1tKHN0cnVjdHVyZUltbSkKKyAgICAg
ICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQorICAgICAgICA6IG1fc3RydWN0dXJlSW1t
KHN0cnVjdHVyZUltbSkKICAgICAgICAgLCBtX3N0cnVjdHVyZUNoZWNrKHN0cnVjdHVyZUNoZWNr
KQogICAgICAgICAsIG1fcHJvcGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2FkKQog
I2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xMjEsMTcgKzEwMiwxMCBAQCBzdHJ1Y3QgUHJvcGVydHlB
Y2Nlc3NSZWNvcmQgewogI2VuZGlmCiAgICAgICAgICwgbV9zbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aEdlbmVyYXRvcikKICAgICAgICAgLCBtX2RvbmUoZG9uZSkKLSAgICAgICAgLCBtX2Jhc2VH
UFIoYmFzZUdQUikKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAsIG1fdmFsdWVUYWdH
UFIodmFsdWVUYWdHUFIpCi0jZW5kaWYKLSAgICAgICAgLCBtX3ZhbHVlR1BSKHZhbHVlR1BSKQot
ICAgICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQotICAgICAgICAsIG1fcmVn
aXN0ZXJNb2RlKHJlZ2lzdGVyTW9kZSkKKyAgICAgICAgLCBtX3N0dWJJbmZvKHN0dWJJbmZvKQog
ICAgIHsKICAgICB9CiAKLSAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdpbjsKICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsUHRyIG1fc3RydWN0dXJlSW1tOwogICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG1fc3RydWN0dXJlQ2hlY2s7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkNv
bnZlcnRpYmxlTG9hZExhYmVsIG1fcHJvcGVydHlTdG9yYWdlTG9hZDsKQEAgLTE0MywzNSArMTE3
LDIyIEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAjZW5kaWYKICAgICBTbG93UGF0
aEdlbmVyYXRvciogbV9zbG93UGF0aEdlbmVyYXRvcjsKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbV9kb25lOwotICAgIGludDhfdCBtX2Jhc2VHUFI7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICBpbnQ4X3QgbV92YWx1ZVRhZ0dQUjsKLSNlbmRpZgotICAgIGludDhfdCBtX3ZhbHVlR1BS
OwotICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKLSAgICBSZWdpc3Rlck1vZGUgbV9y
ZWdpc3Rlck1vZGU7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87CiB9OwogCiBz
dHJ1Y3QgSW5SZWNvcmQgewogICAgIEluUmVjb3JkKAotICAgICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGp1bXAsCi0gICAgICAgIFNsb3dQ
YXRoR2VuZXJhdG9yKiBzbG93UGF0aEdlbmVyYXRvciwgaW50OF90IGJhc2VHUFIsIGludDhfdCBy
ZXN1bHRHUFIsCi0gICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQotICAg
ICAgICA6IG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQotICAgICAgICAsIG1fanVtcChqdW1wKQor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBqdW1wLCBTbG93UGF0aEdlbmVy
YXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCisgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbykKKyAgICAgICAgOiBtX2p1bXAoanVtcCkKICAgICAgICAgLCBtX3Nsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoR2VuZXJhdG9yKQotICAgICAgICAsIG1fYmFzZUdQUihiYXNlR1BSKQotICAg
ICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQUikKLSAgICAgICAgLCBtX3VzZWRSZWdpc3RlcnMo
dXNlZFJlZ2lzdGVycykKKyAgICAgICAgLCBtX3N0dWJJbmZvKHN0dWJJbmZvKQogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW47CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlBhdGNoYWJsZUp1bXAgbV9qdW1wOwogICAgIFNsb3dQYXRoR2VuZXJhdG9yKiBtX3Nsb3dQ
YXRoR2VuZXJhdG9yOwotICAgIGludDhfdCBtX2Jhc2VHUFI7Ci0gICAgaW50OF90IG1fcmVzdWx0
R1BSOwotICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKKyAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyogbV9zdHViSW5mbzsKIH07CiAKIC8vID09PSBKSVRDb21waWxlciA9PT0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
cmV2aXNpb24gMTU3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDYgKzIwOSw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlVUludDMKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJS
ZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKKyAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkU3R1Yklu
Zm8oKTsKKyAgICAKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29t
cGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1f
aml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBz
dHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKSk7CiAgICAgCkBAIC0yMjEsMjcgKzIyMywzNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgT3duUHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBpZiAoIXNsb3dQYXRoVGFyZ2V0LmlzU2V0
KCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzdHJ1
Y3R1cmVDaGVjay5tX2p1bXAsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0
R1BSLCBiYXNlR1BSLAorICAgICAgICAgICAgc3RydWN0dXJlQ2hlY2subV9qdW1wLCB0aGlzLCBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdEdQUiwgc3R1YkluZm8sIGJhc2VHUFIsCiAg
ICAgICAgICAgICBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpLCBzcGlsbE1vZGUpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc3RydWN0dXJlQ2hlY2subV9qdW1wKTsKICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUsIHJlc3VsdEdQUiwgYmFzZUdQUiwKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHRHUFIsIHN0dWJJbmZvLCBiYXNlR1BS
LAogICAgICAgICAgICAgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSwgc3BpbGxNb2Rl
KTsKICAgICB9CisgICAgUmVnaXN0ZXJTZXQgY3VycmVudGx5VXNlZFJlZ2lzdGVycyA9IHVzZWRS
ZWdpc3RlcnMoKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQoYmFzZUdQ
UikpOworICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldChyZXN1bHRHUFIpKTsK
KyAgICAKKyAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IGNvZGVPcmlnaW47CisgICAgc3R1Yklu
Zm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VHUFIpOworICAgIHN0
dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4ocmVzdWx0R1BSKTsK
KyAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IGN1cnJlbnRseVVzZWRSZWdpc3Rl
cnM7CisgICAgc3R1YkluZm8tPnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSBzcGlsbE1vZGUgIT0g
TmVlZFRvU3BpbGw7CisKICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJv
cGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0Nv
bXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBsb2FkV2l0aFBhdGNo
LAotICAgICAgICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90
PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAotICAgICAgICAgICAgdXNl
ZFJlZ2lzdGVycygpLAotICAgICAgICAgICAgc3BpbGxNb2RlID09IE5lZWRUb1NwaWxsID8gUHJv
cGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0luVXNlIDogUHJvcGVydHlBY2Nlc3NSZWNvcmQ6
OlJlZ2lzdGVyc0ZsdXNoZWQpKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3Ry
dWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGxvYWRXaXRoUGF0Y2gsCisgICAgICAg
ICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzdHViSW5mbykpOwogICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHZhbHVlR1BSLCBFZGdlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCkKIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2pp
dC5jb2RlQmxvY2soKS0+YWRkU3R1YkluZm8oKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6RGF0
YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxl
SnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChK
SVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpU
cnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKSk7CkBA
IC0yNTQsNyArMjY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2Rl
TwogCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CiAg
ICAgCi0gICAgVl9KSVRPcGVyYXRpb25fRUpKSSBvcHRpbWl6ZWRDYWxsOworICAgIFZfSklUT3Bl
cmF0aW9uX0VTc2lKSkkgb3B0aW1pemVkQ2FsbDsKICAgICBpZiAobV9qaXQuc3RyaWN0TW9kZUZv
cihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKSkgewogICAgICAgICBpZiAocHV0S2luZCA9PSBE
aXJlY3QpCiAgICAgICAgICAgICBvcHRpbWl6ZWRDYWxsID0gb3BlcmF0aW9uUHV0QnlJZERpcmVj
dFN0cmljdE9wdGltaXplOwpAQCAtMjY5LDI1ICsyODAsMzIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgIE93blB0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGg7CiAgICAgaWYgKCFzbG93UGF0aFRhcmdldC5pc1NldCgpKSB7CiAgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc3RydWN0dXJlQ2hlY2subV9qdW1wLCB0
aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgdmFsdWVHUFIsIGJhc2VHUFIsCisgICAgICAg
ICAgICBzdHJ1Y3R1cmVDaGVjay5tX2p1bXAsIHRoaXMsIG9wdGltaXplZENhbGwsIE5vUmVzdWx0
LCBzdHViSW5mbywgdmFsdWVHUFIsIGJhc2VHUFIsCiAgICAgICAgICAgICBpZGVudGlmaWVyVUlE
KGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHN0cnVjdHVyZUNo
ZWNrLm1fanVtcCk7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwog
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgc3R1YkluZm8s
IHZhbHVlR1BSLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllclVJRChpZGVudGlmaWVy
TnVtYmVyKSk7CiAgICAgfQogICAgIFJlZ2lzdGVyU2V0IGN1cnJlbnRseVVzZWRSZWdpc3RlcnMg
PSB1c2VkUmVnaXN0ZXJzKCk7CiAgICAgY3VycmVudGx5VXNlZFJlZ2lzdGVycy5jbGVhcihzY3Jh
dGNoR1BSKTsKICAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQoYmFzZUdQUikp
OwogICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldCh2YWx1ZUdQUikpOworICAg
IAorICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gY29kZU9yaWdpbjsKKyAgICBzdHViSW5mby0+
cGF0Y2guYmFzZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4oYmFzZUdQUik7CisgICAgc3R1Yklu
Zm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZUdQUik7CisgICAg
c3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMgPSBjdXJyZW50bHlVc2VkUmVnaXN0ZXJzOwor
ICAgIHN0dWJJbmZvLT5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gZmFsc2U7CisgICAgCiAgICAg
bV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAot
ICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVj
aywgcHJvcGVydHlTdG9yYWdlTG9hZCwKKyAgICAgICAgICAgIHN0cnVjdHVyZVRvQ29tcGFyZSwg
c3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGgu
Z2V0KCksIGRvbmVMYWJlbCwKLSAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiks
IHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBjdXJyZW50bHlVc2VkUmVnaXN0ZXJzKSk7Cisg
ICAgICAgICAgICBzdHViSW5mbykpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
LnJlbGVhc2UoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTc2MTgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUx
LDYgKzk1MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbihOb2RlKiBub2QKICAg
ICAgICAgICAgIGpzRHluYW1pY0Nhc3Q8SlNTdHJpbmcqPih2YWx1ZU9mSlNDb25zdGFudChub2Rl
LT5jaGlsZDEoKS5ub2RlKCkpKTsKICAgICAgICAgaWYgKHN0cmluZyAmJiBzdHJpbmctPnRyeUdl
dFZhbHVlSW1wbCgpCiAgICAgICAgICAgICAmJiBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpLT5p
c0lkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
ID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZFN0dWJJbmZvKCk7CisgICAgICAgICAgICAKICAgICAg
ICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogCkBAIC05NjAsMTIgKzk2MiwxNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW4oTm9kZSogbm9kCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IE93blB0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAg
ICAgICAgICAgICAganVtcC5tX2p1bXAsIHRoaXMsIG9wZXJhdGlvbkluT3B0aW1pemUsCi0gICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3VsdEdQUiksIGJhc2VHUFIs
CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3VsdEdQUiksIHN0
dWJJbmZvLCBiYXNlR1BSLAogICAgICAgICAgICAgICAgIHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBs
KCkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9qaXQuYWRkSW4oSW5SZWNvcmQo
Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29kZU9yaWdpbiwganVtcCwgc2xvd1BhdGguZ2V0KCks
IHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksCi0gICAgICAgICAgICAgICAgc2FmZUNhc3Q8aW50
OF90PihyZXN1bHRHUFIpLCB1c2VkUmVnaXN0ZXJzKCkpKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBub2RlLT5jb2RlT3JpZ2luOworICAgICAgICAg
ICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VHUFIp
OworICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8aW50
OF90PihyZXN1bHRHUFIpOworICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3Rl
cnMgPSB1c2VkUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gucmVnaXN0
ZXJzRmx1c2hlZCA9IGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX2ppdC5hZGRJ
bihJblJlY29yZChqdW1wLCBzbG93UGF0aC5nZXQoKSwgc3R1YkluZm8pKTsKICAgICAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBiYXNlLnVzZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU3NjE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjMyLDE0ICsxMjMyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIGNvbnN0IFN0cmluZ0lt
cGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VTc2lDSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFN0cmluZ0ltcGwqIHVpZCkKICAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRy
KHVpZCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgU3RyaW5n
SW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgU3RyaW5nSW1wbCogdWlkKQogICAgIHsKLSAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIodWlk
KSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VEQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MikKQEAgLTEzNjMsOSArMTM2Myw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwog
ICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VKSkkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFN0cmluZ0ltcGwqIHVp
ZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VT
c2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgU3RyaW5nSW1wbCogdWlkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIodWlkKSk7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KHN0dWJJbmZvKSwgYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKQEAgLTE0OTQsMTQg
KzE0OTQsMTQgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1
bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBTdHJpbmdJbXBs
KiB1aWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FU3NpSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9h
ZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFy
ZzFQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFy
ZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBheWxvYWQsIGFyZzFU
YWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9h
ZCwgaW50MzJfdCBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkK
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lK
SSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGludDMyX3QgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXls
b2FkLCBTdHJpbmdJbXBsKiB1aWQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIFRydXN0ZWRJ
bW0zMihhcmcxVGFnKSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9h
ZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRURBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKQEAgLTE2
MjEsMTMgKzE2MjEsMTMgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFy
ZzIsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkkgb3BlcmF0aW9uLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlBheWxvYWQsIFN0cmluZ0ltcGwq
IHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBh
cmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyUGF5bG9hZCwgU3RyaW5nSW1w
bCogdWlkKQogICAgIHsKICNpZiBDUFUoU0g0KQogICAgICAgICAvLyBXZSBoYXZlIHRvIHB1dCB1
aWQgaW4gdGhlIDR0aCBhcmd1bWVudCByZWdpc3RlciAocjcpIGFzIDY0LWJpdCB2YWx1ZSBhcmcy
IHdpbGwgYmUgcHV0IG9uIHN0YWNrIGZvciBzaDQgYXJjaGl0ZWN1cmUuCi0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3Rl
ZEltbVB0cih1aWQpLCBhcmcyUGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cih1aWQpLCBh
cmcyUGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICNlbHNlCi0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMlBheWxvYWQsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwg
YXJnMVRhZywgYXJnMlBheWxvYWQsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgVHJ1
c3RlZEltbVB0cih1aWQpKTsKICNlbmRpZgogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTU3NjE4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDYgKzI2
NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKICAgICB9CiAK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7Cisg
ICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzMpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0
ZWRJbW0zMiBhcmczKQogICAgIHsKICAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CkBAIC0z
OTEsNiArNDAwLDE2IEBAIHB1YmxpYzoKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwog
ICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJ
bW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
NCk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMywgR1BS
UmVnIGFyZzQpCiAgICAgewogICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKQEAgLTEwNjUs
NiArMTA4NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQ
UlJlZyBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAgICBtb3ZlKGFyZzIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMik7IC8vIEluIGNhc2UgYXJnMiBpcyBhcmd1bWVudEdQUjEu
CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92
ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKwogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
ciBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczKQogICAgIHsKICAg
ICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwpAQCAtMTMxMyw2ICsxMzQw
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
OwogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3NH
UFI8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzIsIGFy
ZzMpOworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAg
IG1vdmUoYXJnNCwgR1BSSW5mbzo6YXJndW1lbnRHUFI0KTsKKyAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CiAjZW5k
aWYKIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTU3NjE4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODUsMjAg
KzQ4NSwyMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogI2VuZGlmCiB9
CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm86OmNvcHlU
b1N0dWJJbmZvKFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZvLCBMaW5rQnVmZmVyICZsaW5rQnVmZmVy
KQorQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6Y29weVRv
U3R1YkluZm8oTGlua0J1ZmZlciAmbGlua0J1ZmZlcikKIHsKICAgICBBU1NFUlQoYnl0ZWNvZGVJ
bmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIGluZm8u
Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCk7Ci0gICAgaW5mby5jYWxsUmV0
dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY2FsbFJldHVybkxvY2F0aW9uKTsK
KyAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCk7Cisg
ICAgc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihj
YWxsUmV0dXJuTG9jYXRpb24pOwogCi0gICAgaW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxs
ID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihsaW5rQnVmZmVyLmxv
Y2F0aW9uT2Yoc3RydWN0dXJlVG9Db21wYXJlKSwgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24pOwot
ICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjayA9IE1hY3JvQXNzZW1ibGVyOjpk
aWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihzdHJ1Y3R1cmVDaGVjaykpOworICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0
YUNoZWNrSW1tVG9DYWxsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlVG9Db21wYXJlKSwgc3R1YkluZm8tPmNh
bGxSZXR1cm5Mb2NhdGlvbik7CisgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvU3RydWN0
Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZv
LT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihzdHJ1Y3R1cmVDaGVj
aykpOwogICAgIAotICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSA9IE1hY3JvQXNz
ZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24s
IGxpbmtCdWZmZXIubG9jYXRpb25PZihjb2xkUGF0aEJlZ2luKSk7Ci0gICAgaW5mby5wYXRjaC5k
ZWx0YUNhbGxUb0RvbmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRy
KGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZG9uZSkpOwot
ICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IE1hY3JvQXNzZW1ibGVyOjpk
aWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CisgICAgc3R1YkluZm8tPnBhdGNo
LmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25P
Zihjb2xkUGF0aEJlZ2luKSk7CisgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSA9
IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxS
ZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRvbmUpKTsKKyAgICBzdHViSW5m
by0+cGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQpKTsKICAgICAKLSAgICBpbmZvLnBhdGNo
LmJhc2VHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICBzdHViSW5mby0+cGF0Y2guYmFzZUdQUiA9
IEdQUkluZm86OnJlZ1QwOwogCiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKICAgICB1
c2VkUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZWdUMCk7CkBAIC01MDYsMzcgKzUwNiwzNyBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHViQ29tcGlsYXRpCiAjaWYgVVNFKEpTVkFMVUU2
NCkgLy8gSlNWQUxVRSBjYXNlcwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBHZXRC
eUlkOgotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fz
c2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwpKTsKLSAgICAgICAg
aW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QwOworICAgICAgICBzdHViSW5mby0+
cGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7CisgICAgICAgIHN0dWJJbmZvLT5wYXRj
aC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QwOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFB1
dEJ5SWQ6Ci0gICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSA9IE1hY3Jv
QXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRp
b24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbCkpOwotICAgICAg
ICBpbmZvLnBhdGNoLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDE7CisgICAgICAgIHN0dWJJbmZv
LT5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKKyAgICAgICAgc3R1YkluZm8tPnBh
dGNoLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDE7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0
KEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2Vsc2UgLy8gSlNWQUxV
RSBjYXNlcwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBHZXRCeUlkOgotICAgICAg
ICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwyKSk7Ci0gICAgICAgIGluZm8ucGF0
Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwxKSk7Ci0gICAgICAgIGluZm8ucGF0Y2gudmFs
dWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZVRhZ0dQUiA9
IEdQUkluZm86OnJlZ1QxOworICAgICAgICBzdHViSW5mby0+cGF0Y2guZGVsdGFDYWxsVG9UYWdM
b2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1
YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3Bs
YWNlbWVudExhYmVsMikpOworICAgICAgICBzdHViSW5mby0+cGF0Y2guZGVsdGFDYWxsVG9QYXls
b2FkTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRy
KHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihnZXRE
aXNwbGFjZW1lbnRMYWJlbDEpKTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0g
R1BSSW5mbzo6cmVnVDA7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZVRhZ0dQUiA9IEdQ
UkluZm86OnJlZ1QxOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZWdUMSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHV0QnlJZDoKLSAgICAgICAgaW5mby5wYXRjaC5k
ZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3
ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9m
KHB1dERpc3BsYWNlbWVudExhYmVsMikpOwotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRv
UGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERp
c3BsYWNlbWVudExhYmVsMSkpOwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVlR1BSID0gR1BSSW5m
bzo6cmVnVDI7Ci0gICAgICAgIGluZm8ucGF0Y2gudmFsdWVUYWdHUFIgPSBHUFJJbmZvOjpyZWdU
MzsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUgPSBN
YWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0
dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbDIp
KTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3Jl
ID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+Y2Fs
bFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFi
ZWwxKSk7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1Qy
OworICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVUYWdHUFIgPSBHUFJJbmZvOjpyZWdUMzsK
ICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICB1c2Vk
UmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICNl
bmRpZiAvLyBKU1ZBTFVFIGNhc2VzCiAgICAgCi0gICAgaW5mby5wYXRjaC51c2VkUmVnaXN0ZXJz
ID0gdXNlZFJlZ2lzdGVyczsKLSAgICBpbmZvLnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSB0cnVl
OworICAgIHN0dWJJbmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVyczsKKyAg
ICBzdHViSW5mby0+cGF0Y2gucmVnaXN0ZXJzRmx1c2hlZCA9IHRydWU7CiB9CiAKIENvbXBpbGF0
aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0
KQpAQCAtNzMxLDkgKzczMSw4IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBp
bGUoSkkKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoaXRlci0+ZnJvbSwgRnVuY3Rpb25Q
dHIoaXRlci0+dG8pKTsKICAgICB9CiAKLSAgICBtX2NvZGVCbG9jay0+c2V0TnVtYmVyT2ZTdHJ1
Y3R1cmVTdHViSW5mb3MobV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5zaXplKCkpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25J
bmZvLnNpemUoKTsgKytpKQotICAgICAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZv
W2ldLmNvcHlUb1N0dWJJbmZvKG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhpKSwgcGF0
Y2hCdWZmZXIpOworICAgICAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvW2ldLmNv
cHlUb1N0dWJJbmZvKHBhdGNoQnVmZmVyKTsKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtYmVyT2ZC
eVZhbEluZm9zKG1fYnlWYWxDb21waWxhdGlvbkluZm8uc2l6ZSgpKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5zaXplKCk7ICsraSkgewogICAg
ICAgICBDb2RlTG9jYXRpb25KdW1wIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcChwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mKG1fYnlWYWxDb21waWxhdGlvbkluZm9baV0uYmFkVHlwZUp1bXAp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTU3NjE4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTczLDYgKzE3
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVs
MzIgcHV0RGlzcGxhY2VtZW50TGFiZWwxOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxh
YmVsMzIgcHV0RGlzcGxhY2VtZW50TGFiZWwyOwogI2VuZGlmCisgICAgICAgIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbzsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgUHJvcGVy
dHlTdHViQ29tcGlsYXRpb25JbmZvKCkKQEAgLTIzNiwxMCArMjM3LDExIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNsb3dDYXNlSW5mbyhN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgY29sZFBhdGhCZWdpbiwgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbCkKKyAgICAgICAgdm9pZCBzbG93Q2FzZUluZm8oTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGNv
bGRQYXRoQmVnaW4sIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwsIFN0cnVjdHVyZVN0dWJJbmZv
KiBpbmZvKQogICAgICAgICB7CiAgICAgICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24gPSBjYWxs
OwogICAgICAgICAgICAgdGhpcy0+Y29sZFBhdGhCZWdpbiA9IGNvbGRQYXRoQmVnaW47CisgICAg
ICAgICAgICBzdHViSW5mbyA9IGluZm87CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHNsb3dD
YXNlSW5mbyhNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsKQpAQCAtMjQ3LDcgKzI0OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgY2FsbFJldHVybkxvY2F0aW9uID0gY2FsbDsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgY29weVRvU3R1YkluZm8oU3RydWN0dXJlU3R1YkluZm8m
IGluZm8sIExpbmtCdWZmZXIgJnBhdGNoQnVmZmVyKTsKKyAgICAgICAgdm9pZCBjb3B5VG9TdHVi
SW5mbyhMaW5rQnVmZmVyICZwYXRjaEJ1ZmZlcik7CiAgICAgfTsKIAogICAgIHN0cnVjdCBCeVZh
bENvbXBpbGF0aW9uSW5mbyB7CkBAIC03NzgsOSArNzgwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUMsIGludCwgSlNDZWxsKik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUosIGludCwgR1BSUmVnKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxl
VGFnLCBKX0pJVE9wZXJhdGlvbl9FSkksIGludCwgR1BSUmVnLCBTdHJpbmdJbXBsKik7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGVUYWcsIEpf
SklUT3BlcmF0aW9uX0VTc2lKSSwgaW50LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZywgU3Ry
aW5nSW1wbCopOwogI2Vsc2UKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRUpJLCBpbnQsIEdQUlJlZywgR1BS
UmVnLCBTdHJpbmdJbXBsKik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oV2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VTc2lKSSwgaW50LCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEdQUlJlZywgR1BSUmVnLCBTdHJpbmdJbXBsKik7CiAjZW5kaWYKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSklk
YywgaW50LCBHUFJSZWcsIGNvbnN0IElkZW50aWZpZXIqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkosIGludCwgR1BSUmVnLCBH
UFJSZWcpOwpAQCAtODExLDkgKzgxMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3Rl
cklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FSklkSkosIFJlZ2lzdGVySUQsIGNvbnN0IElkZW50aWZpZXIqLCBSZWdpc3RlcklE
LCBSZWdpc3RlcklEKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkksIFJlZ2lzdGVySUQsIFJl
Z2lzdGVySUQsIFN0cmluZ0ltcGwqKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJl
Z2lzdGVySUQsIFJlZ2lzdGVySUQsIFN0cmluZ0ltcGwqKTsKICNlbHNlCi0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSSwgUmVnaXN0
ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgU3RyaW5nSW1wbCopOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VTc2lKSkksIFN0cnVjdHVyZVN0dWJJbmZvKiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVn
aXN0ZXJJRCwgUmVnaXN0ZXJJRCwgU3RyaW5nSW1wbCopOwogI2VuZGlmCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSiwgUmVnaXN0
ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpaSiwgUmVnaXN0ZXJJRCwgaW50MzJf
dCwgUmVnaXN0ZXJJRCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAkocmV2aXNpb24gMTU3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw5ICsyMDAsOSBAQCBBTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSSBvcGVyYXRpb24sIFJl
Z2lzdGVySUQgcmVnT3AxLCBSZWdpc3RlcklEIHJlZ09wMiwgU3RyaW5nSW1wbCogdWlkKQorQUxX
QVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24sIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UmVnaXN0ZXJJRCByZWdPcDEsIFJlZ2lzdGVySUQgcmVnT3AyLCBTdHJpbmdJbXBsKiB1aWQpCiB7
Ci0gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKHJlZ09wMSwgcmVnT3AyLCBUcnVzdGVk
SW1tUHRyKHVpZCkpOworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKHN0dWJJbmZvKSwgcmVnT3AxLCByZWdPcDIsIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIApAQCAt
MjEyLDkgKzIxMiw5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoK
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQog
Ci1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihK
SVQ6OldpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBpbnQgZHN0
LCBHUFJSZWcgYXJnMSwgU3RyaW5nSW1wbCogdWlkKQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSklUOjpXaXRoUHJvZmlsZVRhZywgSl9KSVRP
cGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgaW50IGRzdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBHUFJSZWcgYXJnMSwgU3RyaW5nSW1wbCogdWlkKQogewotICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3Rl
ZEltbVB0cih1aWQpKTsKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShvcGVyYXRpb24sIGRzdCk7CiB9CiAKQEAgLTUzNSwx
MyArNTM1LDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQogCi1B
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FSkpJIG9wZXJhdGlvbiwgUmVnaXN0ZXJJRCByZWdPcDFUYWcsIFJlZ2lzdGVy
SUQgcmVnT3AxUGF5bG9hZCwgUmVnaXN0ZXJJRCByZWdPcDJUYWcsIFJlZ2lzdGVySUQgcmVnT3Ay
UGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24s
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUmVnaXN0ZXJJRCByZWdPcDFUYWcsIFJlZ2lz
dGVySUQgcmVnT3AxUGF5bG9hZCwgUmVnaXN0ZXJJRCByZWdPcDJUYWcsIFJlZ2lzdGVySUQgcmVn
T3AyUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQogewogI2lmIENQVShTSDQpCiAgICAgLy8gV2Ug
aGF2ZSB0byBwdXQgdWlkIGluIHRoZSA0dGggYXJndW1lbnQgcmVnaXN0ZXIgKHI3KSBhcyA2NC1i
aXQgdmFsdWUgcmVnT3AyIHdpbGwgYmUgcHV0IG9uIHN0YWNrIGZvciBzaDQgYXJjaGl0ZWN1cmUu
Ci0gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKHJlZ09wMVBheWxvYWQsIHJlZ09wMVRh
ZywgVHJ1c3RlZEltbVB0cih1aWQpLCByZWdPcDJQYXlsb2FkLCByZWdPcDJUYWcpOworICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgcmVnT3Ax
UGF5bG9hZCwgcmVnT3AxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCksIHJlZ09wMlBheWxvYWQsIHJl
Z09wMlRhZyk7CiAjZWxzZQotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMy
QklUX0RVTU1ZX0FSRyByZWdPcDFQYXlsb2FkLCByZWdPcDFUYWcsIHJlZ09wMlBheWxvYWQsIHJl
Z09wMlRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIHJlZ09wMVBheWxvYWQsIHJlZ09wMVRhZywg
cmVnT3AyUGF5bG9hZCwgcmVnT3AyVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMTU3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIGludDMyX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db25zdHJ1Y3QKICAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKQEAgLTEyNCw1MSArMTI0LDQ2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5n
ZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKIH0KIAotSl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVU
VVJOX0FERFJFU1NfRUpJKG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QpOwotRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0V2l0aFJldHVybkFkZHJl
c3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1wbCogdWlk
KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1
YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
OwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VW
YWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOwogCi0gICAgaWYgKGFjY2Vzc1R5cGUgPT0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCi0gICAgICAgIGJ1aWxk
R2V0QnlJRExpc3QoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8pOworICAg
IGlmIChhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKSkKKyAgICAgICAgYnVpbGRHZXRCeUlETGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50
LCBzbG90LCAqc3R1YkluZm8pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQogCi1KX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkkob3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAg
SWRlbnRpZmllciBpZGVudCA9IHVpZC0+aXNFbXB0eVVuaXF1ZSgpID8gSWRlbnRpZmllcjo6ZnJv
bShQcml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVy
bkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4
ZWMsIGlkZW50LCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2Fz
dDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkgewotICAgICAgICBpZiAoc3R1Yklu
Zm8uc2VlbikKLSAgICAgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRl
bnQsIHNsb3QsIHN0dWJJbmZvKTsKKyAgICBpZiAoYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxB
Y2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpIHsKKyAgICAgICAgaWYgKHN0dWJJbmZv
LT5zZWVuKQorICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVu
dCwgc2xvdCwgKnN0dWJJbmZvKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3R1YkluZm8u
c2VlbiA9IHRydWU7CisgICAgICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiAgICAgfQog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1KX0ZVTkNUSU9OX1dS
QVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FQ0kob3BlcmF0aW9uSW5PcHRpbWl6ZSk7Ci1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemVXaXRoUmV0dXJuQWRk
cmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5LCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5KQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwpAQCAtMTc4LDI0ICsxNzMsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25JbgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2Rl
QmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7Cisg
ICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1Yklu
Zm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICBib29sIHJlc3VsdCA9IGFzT2JqZWN0KGJhc2Up
LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIAotICAgIFJFTEVBU0Vf
QVNTRVJUKGFjY2Vzc1R5cGUgPT0gc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoYWNjZXNzVHlwZSA9PSBzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAgICAgCi0gICAgaWYg
KHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hJbihleGVjLCBiYXNlLCBpZGVudCwgcmVz
dWx0LCBzbG90LCBzdHViSW5mbyk7CisgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQorICAgICAgICBy
ZXBhdGNoSW4oZXhlYywgYmFzZSwgaWRlbnQsIHJlc3VsdCwgc2xvdCwgKnN0dWJJbmZvKTsKICAg
ICBlbHNlCi0gICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHViSW5mby0+
c2VlbiA9IHRydWU7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
cmVzdWx0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4o
RXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIFN0cmluZ0ltcGwqIGtleSkKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5KQogewogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwpAQCAtMjM1LDcgKzIyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ2EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxHZXR0ZXIoZXhlYywgYmFz
ZSwgZ2V0dGVyU2V0dGVyKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTI0NSw3ICsy
MzksNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljCiAgICAgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRlbnQsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwpA
QCAtMjU1LDcgKzI0OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9u
U3QKICAgICBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnB1dChleGVjLCBpZGVudCwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0lt
cGwqIHVpZCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CkBAIC0yNjUsNyArMjU5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWREaXJlYwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpLCBzbG90KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREaXJlY3ROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwpAQCAtMjc1LDE1ICsyNjksMTMgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlYwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpLT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
LCBzbG90KTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpK
SShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1
YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
OwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAg
LTI5MSwyNCArMjgzLDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3Ry
aWMKICAgICAKICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAg
ICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1Yklu
Zm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
aWYgKHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1
ZSwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBOb3REaXJlY3QpOworICAgIGlmIChzdHViSW5mby0+
c2VlbikKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xv
dCwgKnN0dWJJbmZvLCBOb3REaXJlY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3R1YkluZm8uc2Vl
biA9IHRydWU7CisgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KIAotVl9GVU5DVElP
Tl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpKSShvcGVyYXRpb25QdXRCeUlkTm9uU3Ry
aWN0T3B0aW1pemUpOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJp
Y3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCog
dWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRk
cmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlw
ZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTMxNiwyNCArMzA2LDIy
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKICAgICAKICAgICBi
YXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFj
Y2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkp
CisgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8t
PmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHN0dWJJbmZvLnNl
ZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3Qs
IHN0dWJJbmZvLCBOb3REaXJlY3QpOworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAg
cmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBO
b3REaXJlY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7CisgICAg
ICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhf
UkVUVVJOX0FERFJFU1NfRUpKSShvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUp
Owotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6
ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAg
CiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7
Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nh
c3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CkBAIC0zNDEsMjQg
KzMyOSwyMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiAgICAg
CiAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50LCB2YWx1ZSwgc2xv
dCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4o
c3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgaWYgKHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJh
c2VPYmplY3QsIGlkZW50LCBzbG90LCBzdHViSW5mbywgRGlyZWN0KTsKKyAgICBpZiAoc3R1Yklu
Zm8tPnNlZW4pCisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50
LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiAgICAgZWxzZQotICAgICAgICBzdHViSW5mby5z
ZWVuID0gdHJ1ZTsKKyAgICAgICAgc3R1YkluZm8tPnNlZW4gPSB0cnVlOwogfQogCi1WX0ZVTkNU
SU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkpJKG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3ROb25TdHJpY3RPcHRpbWl6ZSk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdE5vblN0cmljdE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVp
ZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OwotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5n
ZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpKTsKQEAgLTM2NiwyNCArMzUyLDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkRGlyZWMKICAgICAKICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAh
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAo
YWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlw
ZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc3R1YkluZm8uc2VlbikKLSAgICAg
ICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsIHN0dWJJbmZv
LCBEaXJlY3QpOworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaFB1dEJ5
SUQoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKICAg
ICBlbHNlCi0gICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHViSW5mby0+
c2VlbiA9IHRydWU7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNT
X0VKSkkob3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdCk7Ci12b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCog
dWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVp
ZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCkt
PmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSk7CkBAIC0zOTEsMjEgKzM3NSwxOSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZFN0cmljCiAgICAgCiAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNs
b3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1
YkluZm8sIE5vdERpcmVjdCk7CisgICAgYnVpbGRQdXRCeUlkTGlzdChleGVjLCBiYXNlVmFsdWUs
IGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERpcmVjdCk7CiB9CiAKLVZfRlVOQ1RJT05fV1JB
UFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkkob3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1
aWxkTGlzdCk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1
aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlk
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
ICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJl
c3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC00MTMsMjEgKzM5NSwxOSBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0CiAgICAgCiAgICAgYmFz
ZVZhbHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nl
c3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQor
ICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5h
Y2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGJ1aWxkUHV0QnlJZExpc3Qo
ZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8sIE5vdERpcmVjdCk7CisgICAg
YnVpbGRQdXRCeUlkTGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8s
IE5vdERpcmVjdCk7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNT
X0VKSkkob3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCk7Ci12b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdFdpdGhSZXR1cm5B
ZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVj
dFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50
aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0g
ZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vz
c1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5
cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBh
c09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKQEAgLTQzNSwyMSArNDE1LDE5
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKICAgICAKICAgICBi
YXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAg
ICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5m
by5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NU
eXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBi
dWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCBzdHViSW5mbywg
RGlyZWN0KTsKKyAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBz
bG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JF
VFVSTl9BRERSRVNTX0VKSkkob3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlz
dCk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1
aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlk
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVy
bkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU09iamVj
dCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOwpA
QCAtNDU3LDEwICs0MzUsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRE
aXJlYwogICAgIAogICAgIGJhc2VPYmplY3QgLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQs
IHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxB
Y2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNzVHlwZSAhPSBz
dGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50
LCBzbG90LCBzdHViSW5mbywgRGlyZWN0KTsKKyAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJh
c2VPYmplY3QsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNTc2MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTEw
LDYgKzExMCw3IEBAIGlubGluZSBKSVRIYW5kbGVyRW5jb2RlZCBkZmdIYW5kbGVyRW5jb2QKICAg
ICBQYzogSW5zdHJ1Y3Rpb24qIGkuZS4gYnl0ZWNvZGUgUEMKICAgICBSOiBSZWdpc3RlcgogICAg
IFM6IHNpemVfdAorICAgIFNzaTogU3RydWN0dXJlU3R1YkluZm8qCiAgICAgU3Q6IFN0cnVjdHVy
ZSoKICAgICBWOiB2b2lkCiAgICAgVzogV2F0Y2hwb2ludFNldCoKQEAgLTEyOSw3ICsxMzAsNiBA
QCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKCiB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSSkoRXhlY1N0YXRlKiwg
U3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9K
SVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKQSkoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKLXR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAo
KkpfSklUT3BlcmF0aW9uX0VKSWRjKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9K
SVRPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRp
b25fRUpzc1opKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgaW50MzJfdCk7CkBAIC0xMzksNiArMTM5
LDggQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSgogdHlwZWRlZiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBTKShFeGVjU3Rh
dGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTUykoRXhl
Y1N0YXRlKiwgc2l6ZV90LCBzaXplX3QpOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUNJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEpTQ2VsbCosIFN0cmluZ0ltcGwqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGlu
dDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVy
YXRpb25fRVpJY2ZaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBJbmxpbmVDYWxsRnJhbWUqLCBpbnQz
Ml90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0
aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CkBAIC0xODAsNyArMTgyLDYg
QEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdAogdHlwZWRlZiB2b2lk
IEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSkNJ
KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKiwgU3RyaW5nSW1wbCopOwogdHlw
ZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSklkSkopKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlKTsKLXR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUpK
SSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBs
Kik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKSkopKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUp
OwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSlBQKShFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCosIHZvaWQqKTsKIHR5cGVkZWYgdm9pZCBKSVRf
T1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUpaSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKQEAgLTE4OSw2ICsxOTAsNyBAQCB0eXBlZGVm
IHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0CiB0eXBlZGVmIHZvaWQgSklUX09QRVJB
VElPTiAoKlZfSklUT3BlcmF0aW9uX0VPWkopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJf
dCwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9w
ZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQz
Ml90LCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklU
T3BlcmF0aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX1cpKFdhdGNocG9pbnRTZXQqKTsKIHR5cGVkZWYg
dm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMy
X3QpOwogdHlwZWRlZiBjaGFyKiBKSVRfT1BFUkFUSU9OICgqUF9KSVRPcGVyYXRpb25fRSkoRXhl
Y1N0YXRlKik7CkBAIC0yMTUsMjYgKzIxNywyNiBAQCBKSVRIYW5kbGVyRW5jb2RlZCBKSVRfT1BF
UkFUSU9OIGxvb2t1cEV4CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RhY2tDaGVjayhF
eGVjU3RhdGUqLCBDb2RlQmxvY2sqKSBXVEZfSU5URVJOQUw7CiBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogaW50
MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhlY1N0YXRl
KikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRCeUlkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVS
TkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRM
aXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
OwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRl
KiwgSlNDZWxsKiwgU3RyaW5nSW1wbCopOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbihFeGVjU3RhdGUqLCBKU0NlbGwqLCBTdHJpbmdJbXBsKik7CitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdChFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpT
Q2VsbCosIFN0cmluZ0ltcGwqKTsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW4oRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBTdHJpbmdJbXBs
Kik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlbmVyaWNJbihFeGVj
U3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNhbGxDdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiwgSlNDZWxsKiwgUHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxHZXR0ZXIoRXhlY1N0YXRlKiwg
SlNDZWxsKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
LXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
Owotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3QoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0
T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0
QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9u
U3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5n
SW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRE
aXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmlu
Z0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
U3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
U3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqLCBKU09iamVjdCos
IFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAJKHJldmlzaW9uIDE1NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjQsOSArNTY0LDExIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3QKIAogICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogICAgIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VlJlZywgcmVn
VDAsIGlkZW50LT5pbXBsKCkpOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1f
Y29kZUJsb2NrLT5hZGRTdHViSW5mbygpOworICAgIAorICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VlJlZywg
c3R1YkluZm8sIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3ND
b21waWxhdGlvbkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgrK10uc2xvd0Nh
c2VJbmZvKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxh
dGlvbkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgrK10uc2xvd0Nhc2VJbmZv
KGNvbGRQYXRoQmVnaW4sIGNhbGwsIHN0dWJJbmZvKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02MTcsNyArNjE5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdAogCiAgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbih0aGlzKTsKICAgICAKLSAgICBWX0pJVE9wZXJhdGlvbl9FSkpJIG9w
dGltaXplZENhbGw7CisgICAgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcHRpbWl6ZWRDYWxsOwog
ICAgIGlmIChtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgaWYgKGRpcmVj
dCkKICAgICAgICAgICAgIG9wdGltaXplZENhbGwgPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3Ry
aWN0T3B0aW1pemU7CkBAIC02MzAsMTAgKzYzMiwxMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X2J5X2lkKEluc3RydWN0CiAgICAgICAgICAgICBvcHRpbWl6ZWRDYWxsID0gb3BlcmF0aW9u
UHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogICAgIH0KICAgICAKLSAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKG9wdGltaXplZENhbGwsIHJlZ1QxLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7
CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbV9jb2RlQmxvY2stPmFkZFN0dWJJ
bmZvKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wdGltaXplZENhbGwsIHN0
dWJJbmZvLCByZWdUMSwgcmVnVDAsIGlkZW50LT5pbXBsKCkpOwogCiAgICAgLy8gVHJhY2sgdGhl
IGxvY2F0aW9uIG9mIHRoZSBjYWxsOyB0aGlzIHdpbGwgYmUgdXNlZCB0byByZWNvdmVyIHBhdGNo
IGluZm9ybWF0aW9uLgotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm9bbV9wcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgrK10uc2xvd0Nhc2VJbmZvKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm9bbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9uSW5kZXgrK10uc2xvd0Nhc2VJbmZvKGNvbGRQYXRoQmVnaW4sIGNhbGws
IHN0dWJJbmZvKTsKIH0KIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3MgcHJv
cGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgdGhlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE1NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMCw3ICs2MTAsNyBAQCB2
b2lkIGJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAgICAgIHJlcGF0Y2hD
YWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wZXJh
dGlvbkdldEJ5SWQpOwogfQogCi1zdGF0aWMgVl9KSVRPcGVyYXRpb25fRUpKSSBhcHByb3ByaWF0
ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRL
aW5kIHB1dEtpbmQpCitzdGF0aWMgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBhcHByb3ByaWF0ZUdl
bmVyaWNQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5k
IHB1dEtpbmQpCiB7CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgaWYg
KHB1dEtpbmQgPT0gRGlyZWN0KQpAQCAtNjIyLDcgKzYyMiw3IEBAIHN0YXRpYyBWX0pJVE9wZXJh
dGlvbl9FSkpJIGFwcHJvcHJpYXRlR2UKICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdDsKIH0KIAotc3RhdGljIFZfSklUT3BlcmF0aW9uX0VKSkkgYXBwcm9wcmlhdGVMaXN0QnVp
bGRpbmdQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5k
IHB1dEtpbmQpCitzdGF0aWMgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBhcHByb3ByaWF0ZUxpc3RC
dWlsZGluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtp
bmQgcHV0S2luZCkKIHsKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBp
ZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC0xMzg4LDggKzEzODgsOCBAQCB2b2lkIHJlc2V0R2V0
QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoCiAKIHZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0Y2hC
dWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAg
ICBWX0pJVE9wZXJhdGlvbl9FSkpJIHVub3B0aW1pemVkRnVuY3Rpb24gPSBiaXR3aXNlX2Nhc3Q8
Vl9KSVRPcGVyYXRpb25fRUpKST4oTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbikuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Ci0gICAgVl9KSVRP
cGVyYXRpb25fRUpKSSBvcHRpbWl6ZWRGdW5jdGlvbjsKKyAgICBWX0pJVE9wZXJhdGlvbl9FU3Np
SkpJIHVub3B0aW1pemVkRnVuY3Rpb24gPSBiaXR3aXNlX2Nhc3Q8Vl9KSVRPcGVyYXRpb25fRVNz
aUpKST4oTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbikuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgVl9KSVRPcGVyYXRpb25fRVNzaUpK
SSBvcHRpbWl6ZWRGdW5jdGlvbjsKICAgICBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVy
YXRpb25QdXRCeUlkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0
QnlJZFN0cmljdEJ1aWxkTGlzdCkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRp
b25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlv
biA9PSBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdCkKSW5kZXg6IFNvdXJjZS9XVEYvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHJldmlzaW9uIDE1NzYxOCkKKysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtOSw2ICs5LDcgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNv
dXJjZS9XVEYvd3RmL0F0b21pY3MuaCBcCiAgICAgU291cmNlL1dURi93dGYvQXV0b2RyYWluZWRQ
b29sLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0JhZy5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9C
YWdUb0hhc2hNYXAuaCBcCiAgICAgU291cmNlL1dURi93dGYvQml0QXJyYXkuaCBcCiAgICAgU291
cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvQml0VmVjdG9y
LmggXApJbmRleDogU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCShyZXZpc2lvbiAxNTc2MTgp
CisrKyBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjMsNiArMTIzLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBdXRvZHJh
aW5lZFBvb2wuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQVZMVHJlZS5o
IiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxCYWcuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQmFnVG9IYXNoTWFwLmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd3RmXEJpdEFycmF5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cd3RmXEJpdG1hcC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxC
aXRWZWN0b3IuaCIgLz4NCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE1NzYxOCkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAkJMEY5RDMzNjIx
NjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmlu
dFN0cmVhbS5jcHAgKi87IH07CiAJCTBGOUQzMzYzMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0
cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5
RDMzNUUxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggKi87IH07CiAJCTBGQjE0RTE5
MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQjE0RTE4MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCAqLzsgfTsK
KwkJMEZCMTRFMUIxODEwRTFEQzAwOUI2QjREIC8qIEJhZ1RvSGFzaE1hcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCMTRFMUExODEwRTFEQTAwOUI2
QjREIC8qIEJhZ1RvSGFzaE1hcC5oICovOyB9OwogCQkwRkM0NDg4MzE2RkU5RkUxMDA4NDRCRTkg
LyogUHJvY2Vzc0lELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkM0NDg4MjE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggKi87IH07CiAJCTBG
QzRFREU2MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzRFREU1MTY5NjE0OTYwMEY2NTA0MSAv
KiBDb21tYVByaW50ZXIuaCAqLzsgfTsKIAkJMEZEODFBQzUxNTRGQjIyRTAwOTgzRTcyIC8qIEZh
c3RCaXRWZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTI4OSw2ICsyOTAsNyBAQAogCQkwRjlE
MzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjlEMzM1RTE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRTdHJlYW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZCMTRFMTgxODBGQTIxODAwOUI2QjREIC8qIEJhZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZCMTRFMUExODEwRTFEQTAwOUI2QjREIC8qIEJhZ1RvSGFzaE1hcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCYWdUb0hhc2hNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZDNDQ4ODIxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcm9jZXNzSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZDNEVERTUxNjk2MTQ5NjAwRjY1MDQxIC8qIENvbW1hUHJpbnRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYVByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEJpdFZlY3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjA4LDYgKzYxMCw3IEBACiAJCQkJMTQ2OTQxOUIxNkVB
QjEwQTAwMjRFMTQ2IC8qIEF1dG9kcmFpbmVkUG9vbE1hYy5tbSAqLywKIAkJCQlBOEE0NzI1RTE1
MUE4MjVBMDA0MTIzRkYgLyogQVZMVHJlZS5oICovLAogCQkJCTBGQjE0RTE4MTgwRkEyMTgwMDlC
NkI0RCAvKiBCYWcuaCAqLywKKwkJCQkwRkIxNEUxQTE4MTBFMURBMDA5QjZCNEQgLyogQmFnVG9I
YXNoTWFwLmggKi8sCiAJCQkJNEYwMzIxQkIxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFycmF5Lmgg
Ki8sCiAJCQkJQThBNDcyNUYxNTFBODI1QTAwNDEyM0ZGIC8qIEJpdG1hcC5oICovLAogCQkJCUE4
QTQ3MjYwMTUxQTgyNUEwMDQxMjNGRiAvKiBCaXRWZWN0b3IuY3BwICovLApAQCAtOTk2LDYgKzk5
OSw3IEBACiAJCQkJQThBNDczRkExNTFBODI1QjAwNDEyM0ZGIC8qIE9TUmFuZG9tU291cmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNGQzE1MUE4MjVCMDA0MTIzRkYgLyogT3duUHRyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNGRDE1MUE4MjVCMDA0MTIzRkYgLyogT3duUHRyQ29t
bW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkIxNEUxQjE4MTBFMURDMDA5QjZCNEQgLyogQmFn
VG9IYXNoTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNGRTE1MUE4MjVCMDA0MTIzRkYg
LyogUGFja2VkSW50VmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNGRjE1MUE4MjVC
MDA0MTIzRkYgLyogUGFnZUFsbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDAx
MTUxQTgyNUIwMDQxMjNGRiAvKiBQYWdlQWxsb2NhdGlvbkFsaWduZWQuaCBpbiBIZWFkZXJzICov
LApJbmRleDogU291cmNlL1dURi93dGYvQmFnVG9IYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvQmFnVG9IYXNoTWFwLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0
Zi9CYWdUb0hhc2hNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBCYWdUb0hhc2hNYXBfaAorI2RlZmluZSBCYWdUb0hhc2hNYXBfaAorCisj
aW5jbHVkZSA8d3RmL0JhZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlw
ZSwgdHlwZW5hbWUgS2V5R2V0dGVyRnVuY3Rvcj4KK3ZvaWQgdG9IYXNoTWFwKEJhZzxFbGVtZW50
VHlwZT4mIGJhZywgS2V5R2V0dGVyRnVuY3RvciYgZ2V0S2V5LCBIYXNoTWFwPEtleVR5cGUsIEVs
ZW1lbnRUeXBlKj4mIHJlc3VsdCkKK3sKKyAgICBmb3IgKHR5cGVuYW1lIEJhZzxFbGVtZW50VHlw
ZT46Oml0ZXJhdG9yIGl0ZXIgPSBiYWcuYmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKKyAgICAg
ICAgRWxlbWVudFR5cGUqIGVsZW1lbnQgPSAqaXRlcjsKKyAgICAgICAgcmVzdWx0LmFkZChnZXRL
ZXkoKmVsZW1lbnQpLCBlbGVtZW50KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgor
Cit1c2luZyBXVEY6OnRvSGFzaE1hcDsKKworI2VuZGlmIC8vIEJhZ1RvSGFzaE1hcF9oCisKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNTc2MTgpCisrKyBTb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAgc2V0KFdURl9I
RUFERVJTCiAgICAgQXNzZXJ0aW9ucy5oCiAgICAgQXRvbWljcy5oCiAgICAgQmFnLmgKKyAgICBC
YXRUb0hhc2hNYXAuaAogICAgIEJpdEFycmF5LmgKICAgICBCaXRWZWN0b3IuaAogICAgIEJpdG1h
cC5oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214627</attachid>
            <date>2013-10-18 18:19:06 -0700</date>
            <delta_ts>2013-10-18 18:40:38 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>119348</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBA
CisyMDEzLTEwLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QSBDb2RlQmxvY2sncyBTdHJ1Y3R1cmVTdHViSW5mb3Mgc2hvdWxkbid0IGJlIGluIGEgVmVjdG9y
IHRoYXQgd2Ugc2VhcmNoIHVzaW5nIGNvZGUgb3JpZ2lucyBhbmQgbWFjaGluZSBjb2RlIFBDcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTQwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBU
aGlzIGFjY29tcGxpc2hlcyBhIG51bWJlciBvZiBzaW1wbGlmaWNhdGlvbnMuIFN0cnVjdHVyZVN0
dWJJbmZvIGlzIG5vdyBub24tbW92aW5nLAorICAgICAgICB3aGVyZWFzIHByZXZpb3VzbHkgaXQg
d2FzIGluIGEgVmVjdG9yLCBzbyBpdCBtb3ZlZC4gVGhpcyBhbGxvd3MgeW91IHRvIHVzZSBwb2lu
dGVycyB0bworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mby4gVGhpcyBhbHNvIGVsaW1pbmF0ZXMg
dGhlIHVzZSBvZiByZXR1cm4gUEMgYXMgYSB3YXkgb2YgZmluZGluZyB0aGUKKyAgICAgICAgU3Ry
dWN0dXJlU3R1YkluZm8ncy4gSXQgcmVtb3ZlcyBzb21lIG9mIHRoZSBuZWVkIGZvciB0aGUgY29t
cGlsZS10aW1lIHByb3BlcnR5IGFjY2VzcworICAgICAgICByZWNvcmRzOyBmb3IgZXhhbXBsZSB0
aGUgREZHIG5vIGxvbmdlciBoYXMgdG8gc2F2ZSBpbmZvcm1hdGlvbiBhYm91dCByZWdpc3RlcnMg
aW4gYQorICAgICAgICBwcm9wZXJ0eSBhY2Nlc3MgcmVjb3JkIG9ubHkgdG8gbGF0ZXIgc2F2ZSBp
dCB0byB0aGUgc3R1YiBpbmZvLgorICAgICAgICAKKyAgICAgICAgVGhlIG1haW4gdGhpbmcgaXMg
YWNjb21wbGlzaGVzIGlzIHRoYXQgaXQgbWFrZXMgaXQgZWFzaWVyIHRvIGFkZCBTdHJ1Y3R1cmVT
dHViSW5mbydzCisgICAgICAgIGF0IGFueSBzdGFnZSBvZiBjb21waWxhdGlvbi4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJp
bnRHZXRCeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjphZGRTdHViSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiZWdpbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZW5kKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpyYXJl
Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9y
aWdpbi5oOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjpDb2RlT3JpZ2luKToKKyAgICAgICAg
KEpTQzo6Q29kZU9yaWdpbjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlND
OjpDb2RlT3JpZ2luOjpoYXNoKToKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbkhhc2g6Omhhc2gp
OgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luSGFzaDo6ZXF1YWwpOgorICAgICAgICAqIGJ5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpnZXRTdHJ1
Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4pOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxp
bmVTdGFja0VudHJ5KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoSlNDOjpERkc6OkluUmVjb3JkOjpJblJlY29yZCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
UHV0QnlJZCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6Y29w
eVRvU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5m
bzo6c2xvd0Nhc2VJbmZvKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3By
aWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUxp
c3RCdWlsZGluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6
CisKIDIwMTMtMTAtMTggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTcHJlYWQgb3BlcmF0b3Igc2hvdWxkIGJlIHBlcmZvcm1pbmcgZGlyZWN0ICJwdXRzIiBhbmQg
bm90IHRyaWdnZXJpbmcgc2V0dGVycwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE1NzY0NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1
Miw3IEBACiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9y
SW5saW5lcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0JhZ1RvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5n
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC0zMzEsNyAr
MzMyLDcgQEAgc3RhdGljIHZvaWQgZHVtcENoYWluKFByaW50U3RyZWFtJiBvdXQsIAogfQogI2Vu
ZGlmCiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbikKK3ZvaWQgQ29kZUJsb2NrOjpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMs
IGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKIHsKICAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgbG9jYXRpb247CiAKQEAg
LTM1MCw4ICszNTEsOCBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMo
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKG51bWJlck9mU3RydWN0dXJlU3R1
YkluZm9zKCkpIHsKLSAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZ2V0U3R1
YkluZm8obG9jYXRpb24pOworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IG1h
cC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7CisgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8uc2VlbikgewogICAg
ICAgICAgICAgb3V0LnByaW50ZigiIGppdCgiKTsKICAgICAgICAgICAgIApAQCAtNTIwLDExICs1
MjEsMTcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbQogICAgICAg
ICBvdXQucHJpbnRmKCI7IGFjdGl2YXRpb24gaW4gciVkIiwgYWN0aXZhdGlvblJlZ2lzdGVyKCku
b2Zmc2V0KCkpOwogICAgIG91dC5wcmludGYoIlxuIik7CiAgICAgCisgICAgU3R1YkluZm9NYXAg
c3R1YkluZm9zOworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKyAgICAgICAgZ2V0U3R1YkluZm9NYXAobG9ja2VyLCBzdHViSW5mb3MpOworICAgIH0K
KyAgICAKICAgICBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwogICAgIGNvbnN0IEluc3RydWN0aW9uKiBlbmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsK
ICAgICBmb3IgKGNvbnN0IEluc3RydWN0aW9uKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsraXQp
Ci0gICAgICAgIGR1bXBCeXRlY29kZShvdXQsIGV4ZWMsIGJlZ2luLCBpdCk7Ci0KKyAgICAgICAg
ZHVtcEJ5dGVjb2RlKG91dCwgZXhlYywgYmVnaW4sIGl0LCBzdHViSW5mb3MpOworICAgIAogICAg
IGlmIChudW1iZXJPZklkZW50aWZpZXJzKCkpIHsKICAgICAgICAgb3V0LnByaW50ZigiXG5JZGVu
dGlmaWVyczpcbiIpOwogICAgICAgICBzaXplX3QgaSA9IDA7CkBAIC01NTIsMTEgKzU1OSw2IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAgICAgICAgfSB3aGls
ZSAoaSA8IGNvdW50KTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmICghbV9zdHJ1
Y3R1cmVTdHViSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICBvdXQucHJpbnRmKCJcblN0cnVjdHVy
ZXM6XG4iKTsKLSNlbmRpZgotCiAgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmludGYoIlxuRXhj
ZXB0aW9uIEhhbmRsZXJzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwpAQCAtNjU3LDcg
KzY1OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wUmFyZUNhc2VQcm9maWxlKFByaW4KIH0KICNl
bmRpZgogCi12b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0KQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKIHsKICAgICBpbnQgbG9jYXRpb24gPSBp
dCAtIGJlZ2luOwogICAgIGJvb2wgaGFzUHJpbnRlZFByb2ZpbGluZyA9IGZhbHNlOwpAQCAtOTQ3
LDcgKzk0OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAg
ICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgICAgICBjYXNlIG9wX2dldF9zdHJp
bmdfbGVuZ3RoOiB7CiAgICAgICAgICAgICBwcmludEdldEJ5SWRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCk7Ci0gICAgICAgICAgICBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGV4ZWMs
IGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgZXhl
YywgbG9jYXRpb24sIG1hcCk7CiAgICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBp
dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtMTQxMyw3ICsxNDE1LDYgQEAgc3RhdGljIEhhc2hTZXQ8Q29kZUJsb2NrKj4gbGl2ZUNvZGVC
bG9jawogCiAjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8pIFwKICAgICBtYWNy
byhpbnN0cnVjdGlvbnMpIFwKLSAgICBtYWNybyhzdHJ1Y3R1cmVTdHViSW5mb3MpIFwKICAgICBt
YWNybyhjYWxsTGlua0luZm9zKSBcCiAgICAgbWFjcm8obGlua2VkQ2FsbGVyTGlzdCkgXAogICAg
IG1hY3JvKGlkZW50aWZpZXJzKSBcCkBAIC0xOTMwLDggKzE5MzEsOCBAQCBDb2RlQmxvY2s6On5D
b2RlQmxvY2soKQogICAgIC8vIG1faW5jb21pbmdDYWxscyBsaW5rZWQgbGlzdHMgdGhyb3VnaCB0
aGUgZXhlY3V0aW9uIG9mIHRoZSB+Q2FsbExpbmtJbmZvCiAgICAgLy8gZGVzdHJ1Y3RvcnMuCiAK
LSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6ZSgpLCBpID0g
MDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaV0uZGVyZWYo
KTsKKyAgICBmb3IgKEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3N0
dWJJbmZvcy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikKKyAgICAgICAgKCppdGVyKS0+ZGVyZWYo
KTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJ
Q1MKQEAgLTIwODYsOCArMjA4Nyw4IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0
aW9ucyhTbG8KIAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzSklUKGppdFR5
cGUoKSkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3RydWN0dXJlU3R1
YkluZm9zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8gPSBtX3N0cnVjdHVyZVN0dWJJbmZvc1tpXTsKKyAgICAgICAgZm9yIChCYWc8U3RydWN0
dXJlU3R1YkluZm8+OjppdGVyYXRvciBpdGVyID0gbV9zdHViSW5mb3MuYmVnaW4oKTsgISFpdGVy
OyArK2l0ZXIpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICoq
aXRlcjsKICAgICAgICAgICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgICAg
ICAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICAg
ICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CkBAIC0yMzQzLDgg
KzIzNDQsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAg
ICAgICAgICAgICAgJiYgIUhlYXA6OmlzTWFya2VkKGNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNh
bGxlZS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvKGkpLmxhc3RTZWVuQ2Fs
bGVlLmNsZWFyKCk7CiAgICAgICAgIH0KLSAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3Ry
dWN0dXJlU3R1YkluZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAg
ICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IG1fc3RydWN0dXJlU3R1YkluZm9zW2ld
OworICAgICAgICBmb3IgKEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIGl0ZXIgPSBt
X3N0dWJJbmZvcy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgeworICAgICAgICAgICAgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKippdGVyOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNlcygpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwpAQCAtMjM1Niw2ICsyMzU3LDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKIH0KIAogI2lmIEVOQUJMRShKSVQpCitTdHJ1Y3R1cmVTdHViSW5mbyog
Q29kZUJsb2NrOjphZGRTdHViSW5mbygpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICByZXR1cm4gbV9zdHViSW5mb3MuYWRkKCk7Cit9CisKK3ZvaWQgQ29k
ZUJsb2NrOjpnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3R1Yklu
Zm9NYXAmIHJlc3VsdCkKK3sKKyAgICB0b0hhc2hNYXAobV9zdHViSW5mb3MsIGdldFN0cnVjdHVy
ZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKK30KKwogdm9pZCBDb2RlQmxvY2s6OnJlc2V0
U3R1YihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKHN0dWJJbmZvLmFj
Y2Vzc1R5cGUgPT0gYWNjZXNzX3Vuc2V0KQpAQCAtMjU3OCw3ICsyNTkwLDYgQEAgdm9pZCBDb2Rl
QmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjbwogdm9pZCBDb2RlQmxvY2s6OnNocmlua1Rv
Rml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKIHsKICNpZiBFTkFCTEUoSklUKQotICAgIG1fc3Ry
dWN0dXJlU3R1YkluZm9zLnNocmlua1RvRml0KCk7CiAgICAgbV9jYWxsTGlua0luZm9zLnNocmlu
a1RvRml0KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0zMDk2LDE2
ICszMTA3LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNldE9wdGltaXphdGlvblRocmVzaG9sZAogCiAj
ZW5kaWYKICAgICAKLXN0YXRpYyBib29sIHN0cnVjdHVyZVN0dWJJbmZvTGVzc1RoYW4oY29uc3Qg
U3RydWN0dXJlU3R1YkluZm8mIGEsIGNvbnN0IFN0cnVjdHVyZVN0dWJJbmZvJiBiKQotewotICAg
IHJldHVybiBhLmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpIDwgYi5jYWxs
UmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6
OnNvcnRTdHJ1Y3R1cmVTdHViSW5mb3MoKQotewotICAgIHN0ZDo6c29ydChtX3N0cnVjdHVyZVN0
dWJJbmZvcy5iZWdpbigpLCBtX3N0cnVjdHVyZVN0dWJJbmZvcy5lbmQoKSwgc3RydWN0dXJlU3R1
YkluZm9MZXNzVGhhbik7Ci19Ci0KIHVpbnQzMl90IENvZGVCbG9jazo6YWRqdXN0ZWRFeGl0Q291
bnRUaHJlc2hvbGQodWludDMyX3QgZGVzaXJlZFRocmVzaG9sZCkKIHsKICAgICBBU1NFUlQoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTU3NjQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw2ICs3Myw3IEBACiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAiVmlydHVh
bFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgPHd0Zi9CYWcu
aD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgpAQCAtMTcwLDE4ICsxNzEsMTMg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYg
Y29sdW1uKTsKIAogI2lmIEVOQUJMRShKSVQpCi0KLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgZ2V0
U3R1YkluZm8oUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgIHsKLSAgICAgICAg
cmV0dXJuICooYmluYXJ5U2VhcmNoPFN0cnVjdHVyZVN0dWJJbmZvLCB2b2lkKj4obV9zdHJ1Y3R1
cmVTdHViSW5mb3MsIG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgcmV0dXJuQWRkcmVzcy52
YWx1ZSgpLCBnZXRTdHJ1Y3R1cmVTdHViSW5mb1JldHVybkxvY2F0aW9uKSk7Ci0gICAgfQotCi0g
ICAgU3RydWN0dXJlU3R1YkluZm8mIGdldFN0dWJJbmZvKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
Ci0gICAgewotICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8U3RydWN0dXJlU3R1YkluZm8s
IHVuc2lnbmVkPihtX3N0cnVjdHVyZVN0dWJJbmZvcywgbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6
ZSgpLCBieXRlY29kZUluZGV4LCBnZXRTdHJ1Y3R1cmVTdHViSW5mb0J5dGVjb2RlSW5kZXgpKTsK
LSAgICB9CisgICAgU3RydWN0dXJlU3R1YkluZm8qIGFkZFN0dWJJbmZvKCk7CisgICAgQmFnPFN0
cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX3N0dWJJbmZvcy5i
ZWdpbigpOyB9CisgICAgQmFnPFN0cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0b3IgZW5kKCkgeyBy
ZXR1cm4gbV9zdHViSW5mb3MuZW5kKCk7IH0KIAogICAgIHZvaWQgcmVzZXRTdHViKFN0cnVjdHVy
ZVN0dWJJbmZvJik7CisgICAgCisgICAgdm9pZCBnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCk7CiAKICAgICBCeVZhbEluZm8mIGdl
dEJ5VmFsSW5mbyh1bnNpZ25lZCBieXRlY29kZUluZGV4KQogICAgIHsKQEAgLTM3NywxMSArMzcz
LDYgQEAgcHVibGljOgogICAgIFN0cmluZyBuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVy
KTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJ
bmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9Ci0g
ICAgdm9pZCBzb3J0U3RydWN0dXJlU3R1YkluZm9zKCk7Ci0gICAgc2l6ZV90IG51bWJlck9mU3Ry
dWN0dXJlU3R1YkluZm9zKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6
ZSgpOyB9Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKGludCBpbmRl
eCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaW5kZXhdOyB9Ci0KICAgICB2b2lkIHNl
dE51bWJlck9mQnlWYWxJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX2J5VmFsSW5mb3MuZ3JvdyhzaXpl
KTsgfQogICAgIHNpemVfdCBudW1iZXJPZkJ5VmFsSW5mb3MoKSBjb25zdCB7IHJldHVybiBtX2J5
VmFsSW5mb3Muc2l6ZSgpOyB9CiAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8oc2l6ZV90IGluZGV4
KSB7IHJldHVybiBtX2J5VmFsSW5mb3NbaW5kZXhdOyB9CkBAIC00NDUsOCArNDM2LDggQEAgcHVi
bGljOgogICAgIFJhcmVDYXNlUHJvZmlsZSogcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRyeUJpbmFyeVNl
YXJjaDxSYXJlQ2FzZVByb2ZpbGUsIGludD4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmFyZUNhc2VQcm9maWxlcywgbV9yYXJlQ2FzZVBy
b2ZpbGVzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fcmFyZUNhc2VQcm9maWxlcywgbV9yYXJlQ2FzZVByb2ZpbGVz
LnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICBnZXRSYXJlQ2FzZVByb2ZpbGVC
eXRlY29kZU9mZnNldCk7CiAgICAgfQogCiAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShp
bnQgYnl0ZWNvZGVPZmZzZXQpCkBAIC05MzUsMTQgKzkyNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSgp
LCBjb25zdGFudHNbaV0uZ2V0KCkpOwogICAgIH0KIAotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJ
bnN0cnVjdGlvbiomKTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYsIEV4ZWNT
dGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29u
c3QgU3R1YkluZm9NYXAmIG1hcCA9IFN0dWJJbmZvTWFwKCkpOwogCiAgICAgQ1N0cmluZyByZWdp
c3Rlck5hbWUoaW50IHIpIGNvbnN0OwogICAgIHZvaWQgcHJpbnRVbmFyeU9wKFByaW50U3RyZWFt
JiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBj
aGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEJpbmFyeU9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRl
KiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7CiAg
ICAgdm9pZCBwcmludENvbmRpdGlvbmFsSnVtcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGNv
bnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgaW50IGxvY2F0aW9uLCBjb25z
dCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYsIEV4ZWNT
dGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7Ci0gICAgdm9pZCBwcmlu
dEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlv
bik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYsIEV4ZWNT
dGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmKTsKICAgICBlbnVtIENhY2hl
RHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwogICAgIHZvaWQgcHJpbnRD
YWxsT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3Ry
dWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVk
UHJvZmlsaW5nKTsKICAgICB2b2lkIHByaW50UHV0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0
YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7
CkBAIC0xMDMxLDcgKzEwMjIsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2pp
dENvZGU7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNr
OwogI2lmIEVOQUJMRShKSVQpCi0gICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVj
dHVyZVN0dWJJbmZvczsKKyAgICBCYWc8U3RydWN0dXJlU3R1YkluZm8+IG1fc3R1YkluZm9zOwog
ICAgIFZlY3RvcjxCeVZhbEluZm8+IG1fYnlWYWxJbmZvczsKICAgICBWZWN0b3I8Q2FsbExpbmtJ
bmZvPiBtX2NhbGxMaW5rSW5mb3M7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5m
bywgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdDYWxsczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkocmV2
aXNpb24gMTU3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmln
aW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlZhbHVlUmVj
b3ZlcnkuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgpAQCAtNjAsNiArNjEsMTIgQEAgc3RydWN0IENvZGVPcmlnaW4gewogICAgIHsKICAgICB9
CiAgICAgCisgICAgQ29kZU9yaWdpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisg
ICAgICAgIDogYnl0ZWNvZGVJbmRleChpbnZhbGlkQnl0ZWNvZGVJbmRleCkKKyAgICAgICAgLCBp
bmxpbmVDYWxsRnJhbWUoYml0d2lzZV9jYXN0PElubGluZUNhbGxGcmFtZSo+KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMSkpKQorICAgIHsKKyAgICB9CisgICAgCiAgICAgZXhwbGljaXQgQ29kZU9y
aWdpbih1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSA9IDApCiAgICAgICAgIDogYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQogICAgICAg
ICAsIGlubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpCkBAIC02OSw2ICs3NiwxMSBAQCBz
dHJ1Y3QgQ29kZU9yaWdpbiB7CiAgICAgCiAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJu
IGJ5dGVjb2RlSW5kZXggIT0gaW52YWxpZEJ5dGVjb2RlSW5kZXg7IH0KICAgICAKKyAgICBib29s
IGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBi
eXRlY29kZUluZGV4ID09IGludmFsaWRCeXRlY29kZUluZGV4ICYmICEhaW5saW5lQ2FsbEZyYW1l
OworICAgIH0KKyAgICAKICAgICAvLyBUaGUgaW5saW5lIGRlcHRoIGlzIHRoZSBkZXB0aCBvZiB0
aGUgaW5saW5lIHN0YWNrLCBzbyAxID0gbm90IGlubGluZWQsCiAgICAgLy8gMiA9IGlubGluZWQg
b25lIGRlZXAsIGV0Yy4KICAgICB1bnNpZ25lZCBpbmxpbmVEZXB0aCgpIGNvbnN0OwpAQCAtODEs
OCArOTMsOCBAQCBzdHJ1Y3QgQ29kZU9yaWdpbiB7CiAgICAgCiAgICAgc3RhdGljIHVuc2lnbmVk
IGlubGluZURlcHRoRm9yQ2FsbEZyYW1lKElubGluZUNhbGxGcmFtZSopOwogICAgIAorICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZU9yaWdp
biYgb3RoZXIpIGNvbnN0OwotICAgIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2RlT3Jp
Z2luJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKICAg
ICAvLyBHZXQgdGhlIGlubGluZSBzdGFjay4gVGhpcyBpcyBzbG93LCBhbmQgaXMgaW50ZW5kZWQg
Zm9yIGRlYnVnZ2luZyBvbmx5LgpAQCAtMTQ1LDYgKzE1NywxMiBAQCBpbmxpbmUgaW50IENvZGVP
cmlnaW46OnN0YWNrT2Zmc2V0KCkgY29uCiAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQ7CiB9CiAKK2lubGluZSB1bnNpZ25lZCBDb2RlT3JpZ2luOjpoYXNoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV1RGOjpJbnRIYXNoPHVuc2lnbmVkPjo6aGFzaChieXRlY29kZUluZGV4
KSArCisgICAgICAgIFdURjo6UHRySGFzaDxJbmxpbmVDYWxsRnJhbWUqPjo6aGFzaChpbmxpbmVD
YWxsRnJhbWUpOworfQorCiBpbmxpbmUgYm9vbCBDb2RlT3JpZ2luOjpvcGVyYXRvcj09KGNvbnN0
IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiBieXRlY29kZUluZGV4ID09
IG90aGVyLmJ5dGVjb2RlSW5kZXgKQEAgLTE1OCw3ICsxNzYsMjcgQEAgaW5saW5lIFNjcmlwdEV4
ZWN1dGFibGUqIENvZGVPcmlnaW46OmNvZAogICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPmV4
ZWN1dGFibGUuZ2V0KCk7CiB9CiAKK3N0cnVjdCBDb2RlT3JpZ2luSGFzaCB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgQ29kZU9yaWdpbiYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgp
OyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ29kZU9yaWdpbiYgYSwgY29uc3QgQ29k
ZU9yaWdpbiYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVm
YXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkNvZGVPcmlnaW4+
IHsKKyAgICB0eXBlZGVmIEpTQzo6Q29kZU9yaWdpbkhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRy
YWl0czxKU0M6OkNvZGVPcmlnaW4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6Q29kZU9y
aWdpbj4geworICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5kaWYgLy8gQ29kZU9yaWdpbl9oCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5j
cHAJKHJldmlzaW9uIDE1NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKEdldEIKICNlbmRpZgogfQogCi1HZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBTdHJpbmdJbXBsKiB1aWQpCitHZXRCeUlkU3RhdHVz
IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBTdHVi
SW5mb01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBTdHJpbmdJbXBsKiB1aWQpCiB7
CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsK
ICAgICAKQEAgLTExMywyOCArMTEzLDIzIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcigKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VE
X1BBUkFNKHVpZCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQot
ICAgIGlmICghcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKKyAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJ
bmRleCkpOworICAgIGlmICghc3R1YkluZm8gfHwgIXN0dWJJbmZvLT5zZWVuKQogICAgICAgICBy
ZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQp
OwogICAgIAotICAgIC8vIEZpcnN0IGNoZWNrIGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4g
d2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIHN1cGVyIGNhcmVmdWwsIG9yCi0gICAgLy8gaWYgaXQn
cyBub3Qgc2V0IGF0IGFsbCwgaW4gd2hpY2ggY2FzZSB3ZSBwdW50LgotICAgIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5k
ZXgpOwotICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9t
TExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgdWlkKTsKLSAgICAKLSAgICBpZiAo
c3R1YkluZm8ucmVzZXRCeUdDKQorICAgIGlmIChzdHViSW5mby0+cmVzZXRCeUdDKQogICAgICAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKIAogICAgIFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQgbGlzdFNpemU7Ci0gICAg
c3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CisgICAgc3dpdGNoIChzdHViSW5mby0+YWNj
ZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmX2xpc3Q6Ci0gICAgICAg
IGxpc3QgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5zdHJ1Y3R1cmVMaXN0OwotICAgICAg
ICBsaXN0U2l6ZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0Lmxpc3RTaXplOworICAgICAg
ICBsaXN0ID0gc3R1YkluZm8tPnUuZ2V0QnlJZFNlbGZMaXN0LnN0cnVjdHVyZUxpc3Q7CisgICAg
ICAgIGxpc3RTaXplID0gc3R1YkluZm8tPnUuZ2V0QnlJZFNlbGZMaXN0Lmxpc3RTaXplOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfcHJvdG9fbGlzdDoKLSAgICAg
ICAgbGlzdCA9IHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvTGlzdC5zdHJ1Y3R1cmVMaXN0OwotICAg
ICAgICBsaXN0U2l6ZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZTsKKyAg
ICAgICAgbGlzdCA9IHN0dWJJbmZvLT51LmdldEJ5SWRQcm90b0xpc3Quc3RydWN0dXJlTGlzdDsK
KyAgICAgICAgbGlzdFNpemUgPSBzdHViSW5mby0+dS5nZXRCeUlkUHJvdG9MaXN0Lmxpc3RTaXpl
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBsaXN0ID0gMDsKQEAgLTE1
MywxMiArMTQ4LDEyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigK
ICAgICAvLyBGaW5hbGx5IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3Ry
YXRlZ3kuCiAgICAgR2V0QnlJZFN0YXR1cyByZXN1bHQ7CiAgICAgcmVzdWx0Lm1fd2FzU2Vlbklu
SklUID0gdHJ1ZTsgLy8gVGhpcyBpcyBpbnRlcmVzdGluZyBmb3IgYnl0ZWNvZGUgZHVtcGluZyBv
bmx5LgotICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgeworICAgIHN3aXRjaCAoc3R1
YkluZm8tPmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKICAgICAgICAgcmV0
dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgdWlkKTsK
ICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6IHsKLSAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8tPnUu
Z2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgdW5zaWduZWQg
YXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKICAgICAg
ICAgcmVzdWx0Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCkBAIC0yMTQs
MjQgKzIwOSwyNCBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAg
ICAgfQogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfcHJvdG86IHsKLSAgICAg
ICAgaWYgKCFzdHViSW5mby51LmdldEJ5SWRQcm90by5pc0RpcmVjdCkKKyAgICAgICAgaWYgKCFz
dHViSW5mby0+dS5nZXRCeUlkUHJvdG8uaXNEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCB0cnVlKTsKICAgICAgICAgcmVzdWx0Lm1fY2hhaW4gPSBh
ZG9wdFJlZihuZXcgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbigKICAgICAgICAgICAgIHByb2ZpbGVk
QmxvY2ssCi0gICAgICAgICAgICBzdHViSW5mby51LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3Ry
dWN0dXJlLmdldCgpLAotICAgICAgICAgICAgc3R1YkluZm8udS5nZXRCeUlkUHJvdG8ucHJvdG90
eXBlU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICBzdHViSW5mby0+dS5nZXRCeUlkUHJv
dG8uYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAgIHN0dWJJbmZvLT51Lmdl
dEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgY29tcHV0ZUZv
ckNoYWluKHJlc3VsdCwgcHJvZmlsZWRCbG9jaywgdWlkKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hhaW46IHsKLSAgICAgICAg
aWYgKCFzdHViSW5mby51LmdldEJ5SWRDaGFpbi5pc0RpcmVjdCkKKyAgICAgICAgaWYgKCFzdHVi
SW5mby0+dS5nZXRCeUlkQ2hhaW4uaXNEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gR2V0QnlJ
ZFN0YXR1cyhNYWtlc0NhbGxzLCB0cnVlKTsKICAgICAgICAgcmVzdWx0Lm1fY2hhaW4gPSBhZG9w
dFJlZihuZXcgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbigKICAgICAgICAgICAgIHByb2ZpbGVkQmxv
Y2ssCi0gICAgICAgICAgICBzdHViSW5mby51LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0
dXJlLmdldCgpLAotICAgICAgICAgICAgc3R1YkluZm8udS5nZXRCeUlkQ2hhaW4uY2hhaW4uZ2V0
KCksCi0gICAgICAgICAgICBzdHViSW5mby51LmdldEJ5SWRDaGFpbi5jb3VudCkpOworICAgICAg
ICAgICAgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCks
CisgICAgICAgICAgICBzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4uY2hhaW4uZ2V0KCksCisgICAg
ICAgICAgICBzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4uY291bnQpKTsKICAgICAgICAgY29tcHV0
ZUZvckNoYWluKHJlc3VsdCwgcHJvZmlsZWRCbG9jaywgdWlkKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5oCShyZXZpc2lvbiAxNTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU3R1Yklu
Zm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTcwLDcgKzcxLDcgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZSkgPT0gKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0
KSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKTsKKyAgICBz
dGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiBt
YXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVpZCk7CiAgICAgc3RhdGlj
IEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihWTSYsIFN0cnVjdHVyZSosIFN0cmluZ0ltcGwqIHVp
ZCk7CiAgICAgCiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCShyZXZpc2lvbiAxNTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogI2VuZGlmCiB9CiAKLVB1dEJ5SWRT
dGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVpZCkKK1B1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJ
bmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVpZCkKIHsK
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwog
ICAgIApAQCAtODksMzIgKzg5LDI5IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcigKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BB
UkFNKHVpZCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAg
IGlmICghcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKLSAgICAgICAg
cmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgdWlk
KTsKLSAgICAKICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0
ZWNvZGVJbmRleCkpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgs
IDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIAotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwotICAg
IGlmICghc3R1YkluZm8uc2VlbikKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBt
YXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICghc3R1YkluZm8gfHwg
IXN0dWJJbmZvLT5zZWVuKQogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxl
ZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQpOwogICAgIAotICAgIGlmIChzdHViSW5mby5yZXNl
dEJ5R0MpCisgICAgaWYgKHN0dWJJbmZvLT5yZXNldEJ5R0MpCiAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogCi0gICAg
c3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CisgICAgc3dpdGNoIChzdHViSW5mby0+YWNj
ZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgogICAgICAgICAvLyBJZiB0aGUgSklU
IHNhdyBpdCBidXQgZGlkbid0IG9wdGltaXplIGl0LCB0aGVuIGFzc3VtZSB0aGF0IHRoaXMgdGFr
ZXMgc2xvdyBwYXRoLgogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRo
LCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfcHV0
X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0KLSAgICAg
ICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0
Q29uY3VycmVudGx5KAorICAgICAgICAgICAgc3R1YkluZm8tPnUucHV0QnlJZFJlcGxhY2UuYmFz
ZU9iamVjdFN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KAogICAgICAgICAgICAgICAgICpwcm9m
aWxlZEJsb2NrLT52bSgpLCB1aWQpOwogICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQp
KSB7CiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKICAgICAgICAgICAgICAgICBT
aW1wbGVSZXBsYWNlLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2Uu
YmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAgICAgICBzdHViSW5mby0+dS5w
dXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAogICAgICAgICAgICAgICAg
IDAsIDAsCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAgICAgfQpAQCAtMTIzLDE4ICsx
MjAsMTggQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAg
ICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2Fz
ZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7Ci0gICAgICAgIEFTU0VSVChz
dHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLT50cmFuc2l0aW9u
V2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAgICAgQVNTRVJUKHN0dWJJ
bmZvLT51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0
Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gCi0gICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVj
dHVyZS0+Z2V0Q29uY3VycmVudGx5KAorICAgICAgICAgICAgc3R1YkluZm8tPnUucHV0QnlJZFRy
YW5zaXRpb24uc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAgICAgICAgICAgICAgICAgKnBy
b2ZpbGVkQmxvY2stPnZtKCksIHVpZCk7CiAgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpIHsKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAg
IFNpbXBsZVRyYW5zaXRpb24sCi0gICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJh
bnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS5nZXQoKSwKLSAgICAgICAgICAgICAgICBzdHViSW5m
by51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS5nZXQoKSwKLSAgICAgICAgICAgICAgICBz
dHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluID8gYWRvcHRSZWYobmV3IEludGVuZGVk
U3RydWN0dXJlQ2hhaW4oCi0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIHN0dWJJ
bmZvLnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUuZ2V0KCksCi0gICAgICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4uZ2V0KCkpKSA6
IDAsCisgICAgICAgICAgICAgICAgc3R1YkluZm8tPnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlv
dXNTdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgc3R1YkluZm8tPnUucHV0QnlJZFRy
YW5zaXRpb24uc3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLT51LnB1
dEJ5SWRUcmFuc2l0aW9uLmNoYWluID8gYWRvcHRSZWYobmV3IEludGVuZGVkU3RydWN0dXJlQ2hh
aW4oCisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZvLT51LnB1dEJ5
SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAgICAg
ICBzdHViSW5mby0+dS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5nZXQoKSkpIDogMCwKICAgICAg
ICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAx
NTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJbnRlbmRlZFN0
cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC05MCw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJU
KChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9
PSAobV9vZmZzZXQgPT0gaW52YWxpZE9mZnNldCkpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMg
UHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZv
cihDb2RlQmxvY2sqLCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmlu
Z0ltcGwqIHVpZCk7CiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0
KTsKICAgICAKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oCShyZXZpc2lvbiAxNTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk0LDE1
ICsyOTQsMTIgQEAgc3RydWN0IFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICBSZWZQdHI8V2F0Y2hw
b2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKIH07CiAKLWlubGluZSB2b2lk
KiBnZXRTdHJ1Y3R1cmVTdHViSW5mb1JldHVybkxvY2F0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHJ1Y3R1cmVTdHViSW5mbykKK2lubGluZSBDb2RlT3JpZ2luIGdldFN0cnVjdHVyZVN0dWJJbmZv
Q29kZU9yaWdpbihTdHJ1Y3R1cmVTdHViSW5mbyYgc3RydWN0dXJlU3R1YkluZm8pCiB7Ci0gICAg
cmV0dXJuIHN0cnVjdHVyZVN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKKyAgICByZXR1cm4gc3RydWN0dXJlU3R1YkluZm8uY29kZU9yaWdpbjsKIH0KIAot
aW5saW5lIHVuc2lnbmVkIGdldFN0cnVjdHVyZVN0dWJJbmZvQnl0ZWNvZGVJbmRleChTdHJ1Y3R1
cmVTdHViSW5mbyogc3RydWN0dXJlU3R1YkluZm8pCi17Ci0gICAgcmV0dXJuIHN0cnVjdHVyZVN0
dWJJbmZvLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7Ci19Cit0eXBlZGVmIEhhc2hNYXA8Q29k
ZU9yaWdpbiwgU3RydWN0dXJlU3R1YkluZm8qPiBTdHViSW5mb01hcDsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1OCw2ICsxMDU4
LDggQEAgcHJpdmF0ZToKICAgICAgICAgLy8gY29kZSBibG9jayBoYWQgZ2F0aGVyZWQuCiAgICAg
ICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyIG1fbGF6eU9wZXJhbmRzOwogICAgICAg
ICAKKyAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7CisgICAgICAgIAogICAgICAgICAv
LyBEaWQgd2Ugc2VlIGFueSByZXR1cm5zPyBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgKHVuY29tbW9u
IGJ1dCBuZWNlc3NhcnkpCiAgICAgICAgIC8vIGNhc2Ugd2hlcmUgYSBwcm9jZWR1cmUgdGhhdCBk
b2VzIG5vdCByZXR1cm4gd2FzIGlubGluZWQuCiAgICAgICAgIGJvb2wgbV9kaWRSZXR1cm47CkBA
IC0yNDM4LDcgKzI0NDAsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKICAgICAgICAgICAgIEdldEJ5SWRTdGF0
dXMgZ2V0QnlJZFN0YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2N1cnJlbnRJbmRleCwg
dWlkKTsKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
IG1faW5saW5lU3RhY2tUb3AtPm1fc3R1YkluZm9zLAorICAgICAgICAgICAgICAgIG1fY3VycmVu
dEluZGV4LCB1aWQpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKAog
ICAgICAgICAgICAgICAgIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rp
b24sIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5SWRTdGF0dXMpOwpAQCAtMjQ1Nyw5ICsy
NDYwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICAgICAgYm9vbCBkaXJlY3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bOF0udS5vcGVyYW5kOwogCiAg
ICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAotICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCwKLSAgICAgICAgICAgICAgICBt
X2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl0pOworICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+bV9z
dHViSW5mb3MsCisgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgsIG1fZ3JhcGguaWRlbnRp
ZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICBib29sIGNhbkNvdW50QXNJ
bmxpbmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NldCgpKSB7
CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOwpAQCAtMzMzNCw2ICsz
MzM2LDEyIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwog
ICAgICAgICBtX2xhenlPcGVyYW5kcy5pbml0aWFsaXplKGxvY2tlciwgbV9wcm9maWxlZEJsb2Nr
LT5sYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXMoKSk7CiAgICAgICAgIG1fZXhpdFByb2ZpbGUuaW5p
dGlhbGl6ZShsb2NrZXIsIHByb2ZpbGVkQmxvY2stPmV4aXRQcm9maWxlKCkpOworICAgICAgICAK
KyAgICAgICAgLy8gV2UgZG8gdGhpcyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrIGJlY2F1c2Ugd2Ug
d2FudCB0byBlbmNvdXJhZ2UgU3RydWN0dXJlU3R1YkluZm8ncworICAgICAgICAvLyB0byBiZSBw
b3RlbnRpYWxseSBhZGRlZCB0byBvcGVyYXRpb25zIGFuZCBiZWNhdXNlIHRoZSBwcm9maWxlZCBi
bG9jayBjb3VsZCBiZSBpbiB0aGUKKyAgICAgICAgLy8gbWlkZGxlIG9mIExMSW50LT5KSVQgdGll
ci11cCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIGJlIGFkZGluZyB0aGUgaW5mbydzIHJpZ2h0IG5v
dy4KKyAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmco
KSkKKyAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm9NYXAobG9ja2VyLCBt
X3N0dWJJbmZvcyk7CiAgICAgfQogICAgIAogICAgIG1fYXJndW1lbnRQb3NpdGlvbnMucmVzaXpl
KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTc2NDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjIyLDExICsyMjIsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtC
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FsbHMuc2l6ZSgpOyArK2kpCiAgICAg
ICAgIGxpbmtCdWZmZXIubGluayhtX2NhbGxzW2ldLm1fY2FsbCwgbV9jYWxsc1tpXS5tX2Z1bmN0
aW9uKTsKIAotICAgIG1fY29kZUJsb2NrLT5zZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyht
X3Byb3BlcnR5QWNjZXNzZXMuc2l6ZSgpICsgbV9pbnMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZvID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZv
KGkpOworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgaW5mbyA9ICptX3Byb3BlcnR5QWNjZXNz
ZXNbaV0ubV9zdHViSW5mbzsKICAgICAgICAgQ29kZUxvY2F0aW9uQ2FsbCBjYWxsUmV0dXJuTG9j
YXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xv
d1BhdGhHZW5lcmF0b3ItPmNhbGwoKSk7Ci0gICAgICAgIGluZm8uY29kZU9yaWdpbiA9IG1fcHJv
cGVydHlBY2Nlc3Nlc1tpXS5tX2NvZGVPcmlnaW47CiAgICAgICAgIGluZm8uY2FsbFJldHVybkxv
Y2F0aW9uID0gY2FsbFJldHVybkxvY2F0aW9uOwogICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2hl
Y2tJbW1Ub0NhbGwgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIobGlua0J1ZmZlci5sb2NhdGlv
bk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3N0cnVjdHVyZUltbSksIGNhbGxSZXR1cm5Mb2Nh
dGlvbik7CiAgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjayA9IGRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRp
b25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zdHJ1Y3R1cmVDaGVjaykpOwpAQCAtMjM5LDMw
ICsyMzcsMTUgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAg
ICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNv
ZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0
eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVsKCkpKTsKICAgICAgICAgaW5m
by5wYXRjaC5kZWx0YUNhbGxUb0RvbmUgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJl
dHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ld
Lm1fZG9uZSkpOwogICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBk
aWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fcHJvcGVydHlTdG9yYWdlTG9hZCkpOwot
ICAgICAgICBpbmZvLnBhdGNoLmJhc2VHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9iYXNl
R1BSOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBt
X3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKLSNlbHNlCi0gICAgICAgIGluZm8ucGF0
Y2gudmFsdWVUYWdHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZVRhZ0dQUjsKLSAg
ICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVl
R1BSOwotI2VuZGlmCi0gICAgICAgIGluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyA9IG1fcHJvcGVy
dHlBY2Nlc3Nlc1tpXS5tX3VzZWRSZWdpc3RlcnM7Ci0gICAgICAgIGluZm8ucGF0Y2gucmVnaXN0
ZXJzRmx1c2hlZCA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3JlZ2lzdGVyTW9kZSA9PSBQcm9w
ZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZDsKICAgICB9CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1faW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFN0cnVjdHVyZVN0
dWJJbmZvJiBpbmZvID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fcHJvcGVydHlB
Y2Nlc3Nlcy5zaXplKCkgKyBpKTsKKyAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSAq
bV9pbnNbaV0ubV9zdHViSW5mbzsKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwganVtcCA9IGxp
bmtCdWZmZXIubG9jYXRpb25PZihtX2luc1tpXS5tX2p1bXApOwogICAgICAgICBDb2RlTG9jYXRp
b25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2luc1tp
XS5tX3Nsb3dQYXRoR2VuZXJhdG9yLT5jYWxsKCkpOwotICAgICAgICBpbmZvLmNvZGVPcmlnaW4g
PSBtX2luc1tpXS5tX2NvZGVPcmlnaW47CiAgICAgICAgIGluZm8uaG90UGF0aEJlZ2luID0ganVt
cDsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBjYWxsUmV0dXJuTG9jYXRpb247
CiAgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZlcmVuY2VCZXR3
ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2lu
c1tpXS5tX3Nsb3dQYXRoR2VuZXJhdG9yLT5sYWJlbCgpKSk7Ci0gICAgICAgIGluZm8ucGF0Y2gu
YmFzZUdQUiA9IG1faW5zW2ldLm1fYmFzZUdQUjsKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQ
UiA9IG1faW5zW2ldLm1fcmVzdWx0R1BSOwotICAgICAgICBpbmZvLnBhdGNoLnVzZWRSZWdpc3Rl
cnMgPSBtX2luc1tpXS5tX3VzZWRSZWdpc3RlcnM7Ci0gICAgICAgIGluZm8ucGF0Y2gucmVnaXN0
ZXJzRmx1c2hlZCA9IGZhbHNlOwogICAgIH0KLSAgICBtX2NvZGVCbG9jay0+c29ydFN0cnVjdHVy
ZVN0dWJJbmZvcygpOwogICAgIAogICAgIG1fY29kZUJsb2NrLT5zZXROdW1iZXJPZkNhbGxMaW5r
SW5mb3MobV9qc0NhbGxzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
anNDYWxscy5zaXplKCk7ICsraSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTU3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwzOSArNzgsMjAg
QEAgc3RydWN0IENhbGxMaW5rUmVjb3JkIHsKIH07CiAKIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1Jl
Y29yZCB7Ci0gICAgZW51bSBSZWdpc3Rlck1vZGUgeyBSZWdpc3RlcnNGbHVzaGVkLCBSZWdpc3Rl
cnNJblVzZSB9OwotICAgIAotI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUHJvcGVydHlBY2Nlc3NS
ZWNvcmQoCi0gICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKKyNpZiBVU0UoSlNWQUxV
RTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkT3JTdG9y
ZSwKLSAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLAotICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSwKLSAgICAgICAgaW50OF90IGJhc2VHUFIsCi0g
ICAgICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCi0gICAgICAgIFJlZ2lzdGVyTW9kZSByZWdpc3Rlck1vZGUgPSBSZWdpc3RlcnNJ
blVzZSkKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQo
Ci0gICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRj
aGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVy
dGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9hZE9yU3RvcmUsCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkT3JTdG9yZSwKKyNlbmRpZgogICAgICAg
ICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpMYWJlbCBkb25lLAotICAgICAgICBpbnQ4X3QgYmFzZUdQUiwKLSAgICAgICAgaW50
OF90IHZhbHVlVGFnR1BSLAotICAgICAgICBpbnQ4X3QgdmFsdWVHUFIsCi0gICAgICAgIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBSZWdpc3Rlck1vZGUgcmVnaXN0
ZXJNb2RlID0gUmVnaXN0ZXJzSW5Vc2UpCi0jZW5kaWYKLSAgICAgICAgOiBtX2NvZGVPcmlnaW4o
Y29kZU9yaWdpbikKLSAgICAgICAgLCBtX3N0cnVjdHVyZUltbShzdHJ1Y3R1cmVJbW0pCisgICAg
ICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKKyAgICAgICAgOiBtX3N0cnVjdHVyZUlt
bShzdHJ1Y3R1cmVJbW0pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVDaGVjayhzdHJ1Y3R1cmVDaGVj
aykKICAgICAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkK
ICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTIxLDE3ICsxMDIsMTAgQEAgc3RydWN0IFByb3BlcnR5
QWNjZXNzUmVjb3JkIHsKICNlbmRpZgogICAgICAgICAsIG1fc2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhHZW5lcmF0b3IpCiAgICAgICAgICwgbV9kb25lKGRvbmUpCi0gICAgICAgICwgbV9iYXNl
R1BSKGJhc2VHUFIpCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgLCBtX3ZhbHVlVGFn
R1BSKHZhbHVlVGFnR1BSKQotI2VuZGlmCi0gICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikK
LSAgICAgICAgLCBtX3VzZWRSZWdpc3RlcnModXNlZFJlZ2lzdGVycykKLSAgICAgICAgLCBtX3Jl
Z2lzdGVyTW9kZShyZWdpc3Rlck1vZGUpCisgICAgICAgICwgbV9zdHViSW5mbyhzdHViSW5mbykK
ICAgICB7CiAgICAgfQogCi0gICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW47CiAgICAgTWFjcm9B
c3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtX3N0cnVjdHVyZUltbTsKICAgICBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBtX3N0cnVjdHVyZUNoZWNrOwogICAgIE1hY3JvQXNzZW1ibGVyOjpD
b252ZXJ0aWJsZUxvYWRMYWJlbCBtX3Byb3BlcnR5U3RvcmFnZUxvYWQ7CkBAIC0xNDMsMzUgKzEx
NywyMiBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogI2VuZGlmCiAgICAgU2xvd1Bh
dGhHZW5lcmF0b3IqIG1fc2xvd1BhdGhHZW5lcmF0b3I7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okxh
YmVsIG1fZG9uZTsKLSAgICBpbnQ4X3QgbV9iYXNlR1BSOwotI2lmIFVTRShKU1ZBTFVFMzJfNjQp
Ci0gICAgaW50OF90IG1fdmFsdWVUYWdHUFI7Ci0jZW5kaWYKLSAgICBpbnQ4X3QgbV92YWx1ZUdQ
UjsKLSAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7Ci0gICAgUmVnaXN0ZXJNb2RlIG1f
cmVnaXN0ZXJNb2RlOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOwogfTsKIAog
c3RydWN0IEluUmVjb3JkIHsKICAgICBJblJlY29yZCgKLSAgICAgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBqdW1wLAotICAgICAgICBTbG93
UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsIGludDhfdCBiYXNlR1BSLCBpbnQ4X3Qg
cmVzdWx0R1BSLAotICAgICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycykKLSAg
ICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKLSAgICAgICAgLCBtX2p1bXAoanVtcCkK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAganVtcCwgU2xvd1BhdGhHZW5l
cmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLAorICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8pCisgICAgICAgIDogbV9qdW1wKGp1bXApCiAgICAgICAgICwgbV9zbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aEdlbmVyYXRvcikKLSAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKLSAg
ICAgICAgLCBtX3Jlc3VsdEdQUihyZXN1bHRHUFIpCi0gICAgICAgICwgbV91c2VkUmVnaXN0ZXJz
KHVzZWRSZWdpc3RlcnMpCisgICAgICAgICwgbV9zdHViSW5mbyhzdHViSW5mbykKICAgICB7CiAg
ICAgfQogICAgIAotICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIE1hY3JvQXNzZW1i
bGVyOjpQYXRjaGFibGVKdW1wIG1fanVtcDsKICAgICBTbG93UGF0aEdlbmVyYXRvciogbV9zbG93
UGF0aEdlbmVyYXRvcjsKLSAgICBpbnQ4X3QgbV9iYXNlR1BSOwotICAgIGludDhfdCBtX3Jlc3Vs
dEdQUjsKLSAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgU3RydWN0dXJlU3R1
YkluZm8qIG1fc3R1YkluZm87CiB9OwogCiAvLyA9PT0gSklUQ29tcGlsZXIgPT09CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHJldmlzaW9uIDE1NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsOCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVVJbnQzCiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BS
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1v
ZGUpCiB7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbV9qaXQuY29kZUJsb2Nr
KCktPmFkZFN0dWJJbmZvKCk7CisgICAgCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBz
dHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0
dXJlQ2hlY2sgPSBtX2ppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0
ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpKTsKICAgICAK
QEAgLTIxMSw3ICsyMTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENv
ZGVPCiAgICAgICAgIGlmICghc2xvd1BhdGhUYXJnZXQuaXNTZXQoKSkgewogICAgICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc3RydWN0dXJlQ2hlY2su
bV9qdW1wLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICAgICAg
SlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwKKyAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBzdHViSW5m
bywKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihKU1ZhbHVlOjpDZWxsVGFn
KSwgYmFzZVBheWxvYWRHUFIsCiAgICAgICAgICAgICAgICAgaWRlbnRpZmllclVJRChpZGVudGlm
aWVyTnVtYmVyKSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yMjAsNyArMjIyLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSwKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3Vs
dFBheWxvYWRHUFIpLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwg
cmVzdWx0UGF5bG9hZEdQUiksIHN0dWJJbmZvLAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTVmFsdWU6OkNlbGxUYWcpLCBiYXNlUGF5bG9hZEdQUiwKICAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICAgICAgfQpAQCAtMjI4
LDMwICsyMzAsNDIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwog
ICAgICAgICBpZiAoIXNsb3dQYXRoVGFyZ2V0LmlzU2V0KCkpIHsKICAgICAgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHN0cnVjdHVyZUNoZWNrLm1fanVt
cCwgdGhpcywgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLAotICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIGJhc2VUYWdHUFJPck5vbmUs
IGJhc2VQYXlsb2FkR1BSLAotICAgICAgICAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmll
ck51bWJlcikpOworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVz
dWx0UGF5bG9hZEdQUiksIHN0dWJJbmZvLCBiYXNlVGFnR1BST3JOb25lLAorICAgICAgICAgICAg
ICAgIGJhc2VQYXlsb2FkR1BSLCBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHN0cnVjdHVyZUNoZWNrLm1fanVtcCk7
CiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLAotICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIGJhc2VUYWdHUFJPck5vbmUsIGJh
c2VQYXlsb2FkR1BSLAotICAgICAgICAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51
bWJlcikpOworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0
UGF5bG9hZEdQUiksIHN0dWJJbmZvLCBiYXNlVGFnR1BST3JOb25lLAorICAgICAgICAgICAgICAg
IGJhc2VQYXlsb2FkR1BSLCBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICAg
ICAgfQogICAgIH0KKyAgICBSZWdpc3RlclNldCBjdXJyZW50bHlVc2VkUmVnaXN0ZXJzID0gdXNl
ZFJlZ2lzdGVycygpOworICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldChiYXNl
UGF5bG9hZEdQUikpOworICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldChyZXN1
bHRUYWdHUFIpKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQocmVzdWx0
UGF5bG9hZEdQUikpOworICAgIAorICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gY29kZU9yaWdp
bjsKKyAgICBzdHViSW5mby0+cGF0Y2guYmFzZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4oYmFz
ZVBheWxvYWRHUFIpOworICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0YXRpY19jYXN0
PGludDhfdD4ocmVzdWx0UGF5bG9hZEdQUik7CisgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlVGFn
R1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihyZXN1bHRUYWdHUFIpOworICAgIHN0dWJJbmZvLT5w
YXRjaC51c2VkUmVnaXN0ZXJzID0gY3VycmVudGx5VXNlZFJlZ2lzdGVyczsKKyAgICBzdHViSW5m
by0+cGF0Y2gucmVnaXN0ZXJzRmx1c2hlZCA9IHNwaWxsTW9kZSAhPSBOZWVkVG9TcGlsbDsKKwog
ICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29y
ZCgKLSAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJl
Q2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCisgICAgICAgICAgICBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICAgICAgdGFn
TG9hZFdpdGhQYXRjaCwgcGF5bG9hZExvYWRXaXRoUGF0Y2gsIHNsb3dQYXRoLmdldCgpLCBkb25l
TGFiZWwsCi0gICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VQYXlsb2FkR1BSKSwgc2Fm
ZUNhc3Q8aW50OF90PihyZXN1bHRUYWdHUFIpLAotICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90
PihyZXN1bHRQYXlsb2FkR1BSKSwgdXNlZFJlZ2lzdGVycygpLAotICAgICAgICAgICAgc3BpbGxN
b2RlID09IE5lZWRUb1NwaWxsID8gUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0luVXNl
IDogUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0ZsdXNoZWQpKTsKKyAgICAgICAgICAg
IHN0dWJJbmZvKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgp
KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHZhbHVlVGFnR1BSLCBHUFJS
ZWcgdmFsdWVQYXlsb2FkR1BSLCBFZGdlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCkKIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBt
X2ppdC5jb2RlQmxvY2soKS0+YWRkU3R1YkluZm8oKTsKKyAgICAKICAgICBKSVRDb21waWxlcjo6
RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hh
YmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2Fk
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRD
b21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2lu
dGVyKSkpOwogCkBAIC0yNjIsNyArMjc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
UHV0QnlJZChDb2RlTwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBwYXlsb2FkU3RvcmVX
aXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZVBheWxv
YWRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKIAogICAgIEpJVENvbXBp
bGVyOjpMYWJlbCBkb25lTGFiZWwgPSBtX2ppdC5sYWJlbCgpOwotICAgIFZfSklUT3BlcmF0aW9u
X0VKSkkgb3B0aW1pemVkQ2FsbDsKKyAgICBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wdGltaXpl
ZENhbGw7CiAgICAgaWYgKG1faml0LnN0cmljdE1vZGVGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9y
aWdpbikpIHsKICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgb3B0
aW1pemVkQ2FsbCA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKQEAgLTI3
NywxNCArMjkxLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8K
ICAgICBPd25QdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlmICghc2xvd1Bh
dGhUYXJnZXQuaXNTZXQoKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAg
ICAgICAgICAgIHN0cnVjdHVyZUNoZWNrLm1fanVtcCwgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9S
ZXN1bHQsIHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIsCi0gICAgICAgICAgICBiYXNlUGF5
bG9hZEdQUiwgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICBz
dHJ1Y3R1cmVDaGVjay5tX2p1bXAsIHRoaXMsIG9wdGltaXplZENhbGwsIE5vUmVzdWx0LCBzdHVi
SW5mbywgdmFsdWVUYWdHUFIsCisgICAgICAgICAgICB2YWx1ZVBheWxvYWRHUFIsIGJhc2VQYXls
b2FkR1BSLCBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKHN0cnVjdHVyZUNoZWNrLm1fanVtcCk7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoc2xvd1BhdGhUYXJnZXQpOwogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVl
VGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIsCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
dGltaXplZENhbGwsIE5vUmVzdWx0LCBzdHViSW5mbywgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9h
ZEdQUiwKICAgICAgICAgICAgIGJhc2VQYXlsb2FkR1BSLCBpZGVudGlmaWVyVUlEKGlkZW50aWZp
ZXJOdW1iZXIpKTsKICAgICB9CiAgICAgUmVnaXN0ZXJTZXQgY3VycmVudGx5VXNlZFJlZ2lzdGVy
cyA9IHVzZWRSZWdpc3RlcnMoKTsKQEAgLTI5MiwxNCArMzA2LDIwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lz
dGVycy5nZXQoYmFzZVBheWxvYWRHUFIpKTsKICAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lz
dGVycy5nZXQodmFsdWVUYWdHUFIpKTsKICAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVy
cy5nZXQodmFsdWVQYXlsb2FkR1BSKSk7CisKKyAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IGNv
ZGVPcmlnaW47CisgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4
X3Q+KGJhc2VQYXlsb2FkR1BSKTsKKyAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBzdGF0
aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlUGF5bG9hZEdQUik7CisgICAgc3R1YkluZm8tPnBhdGNoLnZh
bHVlVGFnR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZVRhZ0dQUik7CisgICAgc3R1Yklu
Zm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMgPSBjdXJyZW50bHlVc2VkUmVnaXN0ZXJzOworICAgIHN0
dWJJbmZvLT5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gZmFsc2U7CisKICAgICBtX2ppdC5hZGRQ
cm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAg
ICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0
eVN0b3JhZ2VMb2FkLAorICAgICAgICAgICAgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVD
aGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpEYXRh
TGFiZWxDb21wYWN0KHRhZ1N0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QocGF5bG9hZFN0b3JlV2l0aFBhdGNoLmxhYmVsKCkp
LAotICAgICAgICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90
PihiYXNlUGF5bG9hZEdQUiksCi0gICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlVGFn
R1BSKSwgc2FmZUNhc3Q8aW50OF90Pih2YWx1ZVBheWxvYWRHUFIpLAotICAgICAgICAgICAgdXNl
ZFJlZ2lzdGVycygpKSk7CisgICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBz
dHViSW5mbykpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTU3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDYgKzIw
OSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlVUludDMKIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxs
TW9kZSkKIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2ppdC5jb2RlQmxv
Y2soKS0+YWRkU3R1YkluZm8oKTsKKyAgICAKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRy
IHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1
Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxl
cjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
UHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKSk7CiAgICAgCkBAIC0y
MjEsMjcgKzIyMywzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVP
CiAgICAgT3duUHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBpZiAoIXNsb3dQ
YXRoVGFyZ2V0LmlzU2V0KCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0g
ICAgICAgICAgICBzdHJ1Y3R1cmVDaGVjay5tX2p1bXAsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSwgcmVzdWx0R1BSLCBiYXNlR1BSLAorICAgICAgICAgICAgc3RydWN0dXJlQ2hlY2su
bV9qdW1wLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdEdQUiwgc3R1Yklu
Zm8sIGJhc2VHUFIsCiAgICAgICAgICAgICBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIp
LCBzcGlsbE1vZGUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc3RydWN0dXJlQ2hlY2subV9q
dW1wKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdEdQUiwgYmFzZUdQUiwKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHRHUFIsIHN0
dWJJbmZvLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVt
YmVyKSwgc3BpbGxNb2RlKTsKICAgICB9CisgICAgUmVnaXN0ZXJTZXQgY3VycmVudGx5VXNlZFJl
Z2lzdGVycyA9IHVzZWRSZWdpc3RlcnMoKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lz
dGVycy5nZXQoYmFzZUdQUikpOworICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdl
dChyZXN1bHRHUFIpKTsKKyAgICAKKyAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IGNvZGVPcmln
aW47CisgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJh
c2VHUFIpOworICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0YXRpY19jYXN0PGludDhf
dD4ocmVzdWx0R1BSKTsKKyAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IGN1cnJl
bnRseVVzZWRSZWdpc3RlcnM7CisgICAgc3R1YkluZm8tPnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQg
PSBzcGlsbE1vZGUgIT0gTmVlZFRvU3BpbGw7CisKICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2Vz
cygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2lu
LCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2Fk
LCBsb2FkV2l0aFBhdGNoLAotICAgICAgICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwg
c2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAot
ICAgICAgICAgICAgdXNlZFJlZ2lzdGVycygpLAotICAgICAgICAgICAgc3BpbGxNb2RlID09IE5l
ZWRUb1NwaWxsID8gUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0luVXNlIDogUHJvcGVy
dHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0ZsdXNoZWQpKTsKKyAgICAgICAgICAgIHN0cnVjdHVy
ZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGxvYWRXaXRo
UGF0Y2gsCisgICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzdHViSW5mbykp
OwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9CiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgR1BSUmVnIHZhbHVlR1BSLCBFZGdlIHZhbHVlVXNlLCBHUFJSZWcgc2Ny
YXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCkKIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkU3R1YkluZm8oKTsKICAgICAKICAgICBK
SVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21w
aWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5j
aFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNl
ZFBvaW50ZXIpKSk7CkBAIC0yNTQsNyArMjY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZChDb2RlTwogCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1f
aml0LmxhYmVsKCk7CiAgICAgCi0gICAgVl9KSVRPcGVyYXRpb25fRUpKSSBvcHRpbWl6ZWRDYWxs
OworICAgIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3B0aW1pemVkQ2FsbDsKICAgICBpZiAobV9q
aXQuc3RyaWN0TW9kZUZvcihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKSkgewogICAgICAgICBp
ZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICBvcHRpbWl6ZWRDYWxsID0gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwpAQCAtMjY5LDI1ICsyODAsMzIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgIE93blB0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGg7CiAgICAgaWYgKCFzbG93UGF0aFRhcmdldC5pc1NldCgpKSB7
CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc3RydWN0dXJl
Q2hlY2subV9qdW1wLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgdmFsdWVHUFIsIGJh
c2VHUFIsCisgICAgICAgICAgICBzdHJ1Y3R1cmVDaGVjay5tX2p1bXAsIHRoaXMsIG9wdGltaXpl
ZENhbGwsIE5vUmVzdWx0LCBzdHViSW5mbywgdmFsdWVHUFIsIGJhc2VHUFIsCiAgICAgICAgICAg
ICBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKHN0cnVjdHVyZUNoZWNrLm1fanVtcCk7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xv
d1BhdGhUYXJnZXQpOwogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBi
YXNlR1BSLAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jl
c3VsdCwgc3R1YkluZm8sIHZhbHVlR1BSLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmll
clVJRChpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfQogICAgIFJlZ2lzdGVyU2V0IGN1cnJlbnRs
eVVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJzKCk7CiAgICAgY3VycmVudGx5VXNlZFJlZ2lz
dGVycy5jbGVhcihzY3JhdGNoR1BSKTsKICAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVy
cy5nZXQoYmFzZUdQUikpOwogICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldCh2
YWx1ZUdQUikpOworICAgIAorICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gY29kZU9yaWdpbjsK
KyAgICBzdHViSW5mby0+cGF0Y2guYmFzZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4oYmFzZUdQ
Uik7CisgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90Pih2
YWx1ZUdQUik7CisgICAgc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMgPSBjdXJyZW50bHlV
c2VkUmVnaXN0ZXJzOworICAgIHN0dWJJbmZvLT5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gZmFs
c2U7CisgICAgCiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5
QWNjZXNzUmVjb3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJl
LCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKKyAgICAgICAgICAgIHN0cnVj
dHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQYXRjaC5sYWJl
bCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKLSAgICAgICAgICAgIHNhZmVDYXN0PGlu
dDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBjdXJyZW50bHlVc2Vk
UmVnaXN0ZXJzKSk7CisgICAgICAgICAgICBzdHViSW5mbykpOwogICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTc2NDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUxLDYgKzk1MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bihOb2RlKiBub2QKICAgICAgICAgICAgIGpzRHluYW1pY0Nhc3Q8SlNTdHJpbmcqPih2YWx1ZU9m
SlNDb25zdGFudChub2RlLT5jaGlsZDEoKS5ub2RlKCkpKTsKICAgICAgICAgaWYgKHN0cmluZyAm
JiBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpCiAgICAgICAgICAgICAmJiBzdHJpbmctPnRyeUdl
dFZhbHVlSW1wbCgpLT5pc0lkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZFN0dWJJbmZvKCk7CisgICAg
ICAgICAgICAKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCkBAIC05NjAsMTIgKzk2Miwx
NiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4oTm9kZSogbm9kCiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIE93blB0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAganVtcC5tX2p1bXAsIHRoaXMsIG9wZXJhdGlvbklu
T3B0aW1pemUsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3Vs
dEdQUiksIGJhc2VHUFIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KHJlc3VsdEdQUiksIHN0dWJJbmZvLCBiYXNlR1BSLAogICAgICAgICAgICAgICAgIHN0cmluZy0+
dHJ5R2V0VmFsdWVJbXBsKCkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9qaXQu
YWRkSW4oSW5SZWNvcmQoCi0gICAgICAgICAgICAgICAgbm9kZS0+Y29kZU9yaWdpbiwganVtcCwg
c2xvd1BhdGguZ2V0KCksIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksCi0gICAgICAgICAgICAg
ICAgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLCB1c2VkUmVnaXN0ZXJzKCkpKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBub2RlLT5jb2RlT3Jp
Z2luOworICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxp
bnQ4X3Q+KGJhc2VHUFIpOworICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0g
c3RhdGljX2Nhc3Q8aW50OF90PihyZXN1bHRHUFIpOworICAgICAgICAgICAgc3R1YkluZm8tPnBh
dGNoLnVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBzdHViSW5m
by0+cGF0Y2gucmVnaXN0ZXJzRmx1c2hlZCA9IGZhbHNlOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBtX2ppdC5hZGRJbihJblJlY29yZChqdW1wLCBzbG93UGF0aC5nZXQoKSwgc3R1YkluZm8p
KTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBiYXNlLnVzZSgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU3
NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjMyLDE0ICsxMjMyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IGNvbnN0IFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFN0cmluZ0ltcGwqIHVp
ZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlk
KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgU3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgU3RyaW5nSW1wbCogdWlkKQog
ICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRy
dXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VEQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKQEAgLTEzNjMsOSArMTM2Myw5IEBAIHB1YmxpYzoKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1Q
dHIocG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhvcGVyYXRpb24pOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VKSkkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgU3RyaW5nSW1wbCogdWlkKQogICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0
ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cih1aWQp
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9u
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FSkpKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJn
MykKQEAgLTE0ODksMTkgKzE0ODksMTkgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihjZWxsKSk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIGNvbnN0IFN0cmluZ0ltcGwqIHVpZCkK
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lD
SSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBjb25zdCBTdHJpbmdJbXBsKiB1
aWQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBUcnVzdGVkSW1tUHRyKHVp
ZCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQotICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpJIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBH
UFJSZWcgYXJnMVBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkK
ICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMy
QklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
c3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBpbnQzMl90IGFyZzFUYWcsIEdQUlJlZyBh
cmcxUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgaW50
MzJfdCBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKICAgICB7
Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RV
TU1ZX0FSRyBhcmcxUGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcpLCBUcnVzdGVkSW1tUHRy
KHVpZCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzdHViSW5mbyksIGFyZzFQYXlsb2FkLCBUcnVzdGVkSW1tMzIoYXJnMVRhZyksIFRy
dXN0ZWRJbW1QdHIodWlkKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
REEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgRlBS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQpAQCAtMTYyMSwxMyArMTYyMSwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMiwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRp
b25fRUpKSSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQ
UlJlZyBhcmcyUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24sIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwg
R1BSUmVnIGFyZzJQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogI2lmIENQVShTSDQp
CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gcHV0IHVpZCBpbiB0aGUgNHRoIGFyZ3VtZW50IHJlZ2lz
dGVyIChyNykgYXMgNjQtYml0IHZhbHVlIGFyZzIgd2lsbCBiZSBwdXQgb24gc3RhY2sgZm9yIHNo
NCBhcmNoaXRlY3VyZS4KLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCksIGFyZzJQYXlsb2FkLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzFQYXlsb2FkLCBh
cmcxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCksIGFyZzJQYXlsb2FkLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpOwogI2Vsc2UKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcy
UGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBUcnVzdGVkSW1tUHRyKHVp
ZCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cihzdHViSW5mbyksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwogI2VuZGlmCiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZp
c2lvbiAxNTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsNiArMjY0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzMpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMiwg
VHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Cisg
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFy
ZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCiAgICAgewogICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKQEAgLTM5MSw2ICs0MDAsNjEgQEAgcHVibGljOgogICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW1QdHIgYXJn
NSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUsIFRydXN0ZWRJbW1Q
dHIgYXJnNikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzYpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMs
IEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tMzIgYXJnNSwgVHJ1c3RlZEltbVB0ciBhcmc2KQorICAg
IHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzUpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNik7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0
ciBhcmc0KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFk
ZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBU
cnVzdGVkSW1tUHRyIGFyZzQpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Mik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzQpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFy
ZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CkBA
IC0xMDY1LDYgKzExMjksMTQgQEAgcHVibGljOgogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KIAorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBh
cmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgbW92
ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOyAvLyBJbiBjYXNlIGFyZzIgaXMgYXJndW1l
bnRHUFIxLgorICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAg
ICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMykKICAg
ICB7CiAgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKQEAgLTExMjQs
NiArMTE5NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3RlZEltbVB0ciBhcmc1KQorICAg
IHsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAg
ICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKwogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0
ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJn
NSkKICAgICB7CiAgICAgICAgIHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsK
QEAgLTEzMTMsNiArMTM5MiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisgICAgeworICAgICAgICBz
ZXR1cFR3b1N0dWJBcmdzR1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIzPihhcmcyLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOworICAgICAgICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSNCk7CisgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEs
IEdQUlJlZyBkZXN0QikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9u
IDE1NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDg1LDIwICs0ODUsMjAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKCkKICNlbmRpZgogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHViQ29tcGls
YXRpb25JbmZvOjpjb3B5VG9TdHViSW5mbyhTdHJ1Y3R1cmVTdHViSW5mbyYgaW5mbywgTGlua0J1
ZmZlciAmbGlua0J1ZmZlcikKK0FMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxh
dGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKExpbmtCdWZmZXIgJmxpbmtCdWZmZXIpCiB7CiAgICAg
QVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKTsKLSAgICBpbmZvLmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpOwot
ICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGNhbGxS
ZXR1cm5Mb2NhdGlvbik7CisgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKGJ5
dGVjb2RlSW5kZXgpOworICAgIHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2YoY2FsbFJldHVybkxvY2F0aW9uKTsKIAotICAgIGluZm8ucGF0Y2guZGVs
dGFDaGVja0ltbVRvQ2FsbCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQ
dHIobGlua0J1ZmZlci5sb2NhdGlvbk9mKHN0cnVjdHVyZVRvQ29tcGFyZSksIGluZm8uY2FsbFJl
dHVybkxvY2F0aW9uKTsKLSAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2sgPSBN
YWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlQ2hlY2spKTsKKyAgICBzdHVi
SW5mby0+cGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIobGlua0J1ZmZlci5sb2NhdGlvbk9mKHN0cnVjdHVyZVRvQ29tcGFy
ZSksIHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24pOworICAgIHN0dWJJbmZvLT5wYXRjaC5k
ZWx0YUNhbGxUb1N0cnVjdENoZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9u
T2Yoc3RydWN0dXJlQ2hlY2spKTsKICAgICAKLSAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xv
d0Nhc2UgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY29sZFBhdGhCZWdpbikpOwot
ICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGRvbmUpKTsKLSAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBN
YWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOworICAg
IHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YoY29sZFBhdGhCZWdpbikpOworICAgIHN0dWJJbmZvLT5wYXRjaC5k
ZWx0YUNhbGxUb0RvbmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRy
KHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihkb25l
KSk7CisgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBNYWNyb0Fz
c2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9j
YXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAgICAg
Ci0gICAgaW5mby5wYXRjaC5iYXNlR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgc3R1YkluZm8t
PnBhdGNoLmJhc2VHUFIgPSBHUFJJbmZvOjpyZWdUMDsKIAogICAgIFJlZ2lzdGVyU2V0IHVzZWRS
ZWdpc3RlcnM7CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDApOwpAQCAtNTA2
LDM3ICs1MDYsMzcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQog
I2lmIFVTRShKU1ZBTFVFNjQpIC8vIEpTVkFMVUUgY2FzZXMKICAgICBzd2l0Y2ggKG1fdHlwZSkg
ewogICAgIGNhc2UgR2V0QnlJZDoKLSAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRP
clN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExh
YmVsKSk7Ci0gICAgICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2Vt
Ymxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRp
b24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbCkpOworICAgICAg
ICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBQdXRCeUlkOgotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9h
ZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50
TGFiZWwpKTsKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QxOwor
ICAgICAgICBzdHViSW5mby0+cGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSA9IE1hY3JvQXNz
ZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2Nh
dGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERpc3BsYWNlbWVudExhYmVsKSk7CisgICAg
ICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QxOwogICAgICAgICB1
c2VkUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICNlbHNlIC8vIEpTVkFMVUUgY2FzZXMKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2Ug
R2V0QnlJZDoKLSAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlID0g
TWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsMikpOwot
ICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9B
c3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
biwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsMSkpOwotICAgICAg
ICBpbmZvLnBhdGNoLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgIGluZm8ucGF0
Y2gudmFsdWVUYWdHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNo
LmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJl
dHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9j
YXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNo
LmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwxKSk7CisgICAgICAgIHN0dWJJbmZvLT5w
YXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QwOworICAgICAgICBzdHViSW5mby0+cGF0Y2gu
dmFsdWVUYWdHUFIgPSBHUFJJbmZvOjpyZWdUMTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQo
R1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5SWQ6Ci0gICAg
ICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVy
OjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKLSAgICAgICAgaW5mby5w
YXRjaC5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZm
ZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIu
bG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbDEpKTsKLSAgICAgICAgaW5mby5wYXRjaC52
YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QyOwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVlVGFnR1BS
ID0gR1BSSW5mbzo6cmVnVDM7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1Rh
Z0xvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihz
dHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlz
cGxhY2VtZW50TGFiZWwyKSk7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1Bh
eWxvYWRMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQ
dHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1
dERpc3BsYWNlbWVudExhYmVsMSkpOworICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIg
PSBHUFJJbmZvOjpyZWdUMjsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlVGFnR1BSID0g
R1BSSW5mbzo6cmVnVDM7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEdQUkluZm86OnJlZ1Qy
KTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAjZW5kaWYgLy8gSlNWQUxVRSBjYXNlcwogICAgIAotICAgIGluZm8ucGF0
Y2gudXNlZFJlZ2lzdGVycyA9IHVzZWRSZWdpc3RlcnM7Ci0gICAgaW5mby5wYXRjaC5yZWdpc3Rl
cnNGbHVzaGVkID0gdHJ1ZTsKKyAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IHVz
ZWRSZWdpc3RlcnM7CisgICAgc3R1YkluZm8tPnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSB0cnVl
OwogfQogCiBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0
aW9uRWZmb3J0IGVmZm9ydCkKQEAgLTczMSw5ICs3MzEsOCBAQCBDb21waWxhdGlvblJlc3VsdCBK
SVQ6OnByaXZhdGVDb21waWxlKEpJCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGl0ZXIt
PmZyb20sIEZ1bmN0aW9uUHRyKGl0ZXItPnRvKSk7CiAgICAgfQogCi0gICAgbV9jb2RlQmxvY2st
PnNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlv
bkluZm8uc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFj
Y2Vzc0NvbXBpbGF0aW9uSW5mby5zaXplKCk7ICsraSkKLSAgICAgICAgbV9wcm9wZXJ0eUFjY2Vz
c0NvbXBpbGF0aW9uSW5mb1tpXS5jb3B5VG9TdHViSW5mbyhtX2NvZGVCbG9jay0+c3RydWN0dXJl
U3R1YkluZm8oaSksIHBhdGNoQnVmZmVyKTsKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBp
bGF0aW9uSW5mb1tpXS5jb3B5VG9TdHViSW5mbyhwYXRjaEJ1ZmZlcik7CiAgICAgbV9jb2RlQmxv
Y2stPnNldE51bWJlck9mQnlWYWxJbmZvcyhtX2J5VmFsQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYnlWYWxDb21waWxhdGlvbkluZm8uc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgQ29kZUxvY2F0aW9uSnVtcCBiYWRUeXBlSnVtcCA9IENvZGVM
b2NhdGlvbkp1bXAocGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX2J5VmFsQ29tcGlsYXRpb25JbmZv
W2ldLmJhZFR5cGVKdW1wKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9u
IDE1NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE3Myw2ICsxNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbDMyIHB1dERpc3BsYWNlbWVudExhYmVsMTsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkRhdGFMYWJlbDMyIHB1dERpc3BsYWNlbWVudExhYmVsMjsKICNlbmRpZgorICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm87CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgICAgIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbygpCkBAIC0yMzYsMTAgKzIzNywx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBzbG93Q2FzZUluZm8oTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGNvbGRQYXRoQmVnaW4sIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGwpCisgICAgICAgIHZvaWQgc2xvd0Nhc2VJbmZvKE1hY3JvQXNz
ZW1ibGVyOjpMYWJlbCBjb2xkUGF0aEJlZ2luLCBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsLCBT
dHJ1Y3R1cmVTdHViSW5mbyogaW5mbykKICAgICAgICAgewogICAgICAgICAgICAgY2FsbFJldHVy
bkxvY2F0aW9uID0gY2FsbDsKICAgICAgICAgICAgIHRoaXMtPmNvbGRQYXRoQmVnaW4gPSBjb2xk
UGF0aEJlZ2luOworICAgICAgICAgICAgc3R1YkluZm8gPSBpbmZvOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBzbG93Q2FzZUluZm8oTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCkKQEAgLTI0
Nyw3ICsyNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGNhbGxSZXR1cm5Mb2Nh
dGlvbiA9IGNhbGw7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGNvcHlUb1N0dWJJbmZvKFN0
cnVjdHVyZVN0dWJJbmZvJiBpbmZvLCBMaW5rQnVmZmVyICZwYXRjaEJ1ZmZlcik7CisgICAgICAg
IHZvaWQgY29weVRvU3R1YkluZm8oTGlua0J1ZmZlciAmcGF0Y2hCdWZmZXIpOwogICAgIH07CiAK
ICAgICBzdHJ1Y3QgQnlWYWxDb21waWxhdGlvbkluZm8gewpAQCAtNzc4LDkgKzc4MCw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VDLCBpbnQsIEpTQ2VsbCopOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKLCBpbnQsIEdQUlJlZyk7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRUpJLCBpbnQsIEdQUlJlZywgU3Ry
aW5nSW1wbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFdp
dGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FU3NpSkksIGludCwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBHUFJSZWcsIFN0cmluZ0ltcGwqKTsKICNlbHNlCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VKSSwg
aW50LCBHUFJSZWcsIEdQUlJlZywgU3RyaW5nSW1wbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FU3Np
SkksIGludCwgU3RydWN0dXJlU3R1YkluZm8qLCBHUFJSZWcsIEdQUlJlZywgU3RyaW5nSW1wbCop
OwogI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUpJZGMsIGludCwgR1BSUmVnLCBjb25zdCBJZGVudGlmaWVyKik7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpK
LCBpbnQsIEdQUlJlZywgR1BSUmVnKTsKQEAgLTgxMSw5ICs4MTMsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICNlbmRpZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VKSWRKSiwgUmVnaXN0ZXJJRCwgY29uc3QgSWRlbnRpZmllciosIFJlZ2lz
dGVySUQsIFJlZ2lzdGVySUQpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSSwgUmVnaXN0ZXJJ
RCwgUmVnaXN0ZXJJRCwgU3RyaW5nSW1wbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkksIFN0cnVjdHVyZVN0dWJJbmZv
KiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgU3RyaW5nSW1wbCopOwogI2Vsc2UKLSAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpJLCBS
ZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBs
Kik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRVNzaUpKSSwgU3RydWN0dXJlU3R1YkluZm8qLCBSZWdpc3RlcklELCBSZWdpc3RlcklE
LCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CiAjZW5kaWYKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKLCBS
ZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSlpKLCBSZWdpc3RlcklELCBp
bnQzMl90LCBSZWdpc3RlcklEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCShyZXZpc2lvbiAxNTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzA4LDkgKzMwOCw5IEBAIEFMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpJIG9wZXJhdGlv
biwgUmVnaXN0ZXJJRCByZWdPcDEsIFJlZ2lzdGVySUQgcmVnT3AyLCBTdHJpbmdJbXBsKiB1aWQp
CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihW
X0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBSZWdpc3RlcklEIHJlZ09wMSwgUmVnaXN0ZXJJRCByZWdPcDIsIFN0cmluZ0ltcGwqIHVp
ZCkKIHsKLSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUocmVnT3AxLCByZWdPcDIsIFRy
dXN0ZWRJbW1QdHIodWlkKSk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIoc3R1YkluZm8pLCByZWdPcDEsIHJlZ09wMiwgVHJ1c3RlZEltbVB0cih1aWQpKTsK
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQog
CkBAIC0zMjAsOSArMzIwLDkgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBK
SVQ6OgogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CiB9CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0
aW9uKEpJVDo6V2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIGlu
dCBkc3QsIEdQUlJlZyBhcmcxLCBTdHJpbmdJbXBsKiB1aWQpCitBTFdBWVNfSU5MSU5FIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKSVQ6OldpdGhQcm9maWxlVGFnLCBK
X0pJVE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBpbnQgZHN0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBTdHJpbmdJbXBsKiB1aWQpCiB7Ci0gICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBU
cnVzdGVkSW1tUHRyKHVpZCkpOwogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG9wZXJhdGlvbiwgZHN0KTsKIH0KIApAQCAt
NDYwLDkgKzQ2MCw5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoK
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQo
b3BlcmF0aW9uLCBkc3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6Y2FsbE9wZXJhdGlvbihKSVQ6OldpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9F
Skkgb3BlcmF0aW9uLCBpbnQgZHN0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2Fk
LCBTdHJpbmdJbXBsKiB1aWQpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJ
VDo6Y2FsbE9wZXJhdGlvbihKSVQ6OldpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FU3Np
Skkgb3BlcmF0aW9uLCBpbnQgZHN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJl
ZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKIHsKLSAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxv
YWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgYXJnMVRhZywg
VHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShvcGVyYXRpb24sIGRzdCk7CiB9CiAKQEAg
LTUyMCwxMyArNTIwLDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklU
OjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwog
fQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FSkpJIG9wZXJhdGlvbiwgUmVnaXN0ZXJJRCByZWdPcDFUYWcsIFJl
Z2lzdGVySUQgcmVnT3AxUGF5bG9hZCwgUmVnaXN0ZXJJRCByZWdPcDJUYWcsIFJlZ2lzdGVySUQg
cmVnT3AyUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVy
YXRpb24sIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUmVnaXN0ZXJJRCByZWdPcDFUYWcs
IFJlZ2lzdGVySUQgcmVnT3AxUGF5bG9hZCwgUmVnaXN0ZXJJRCByZWdPcDJUYWcsIFJlZ2lzdGVy
SUQgcmVnT3AyUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQogewogI2lmIENQVShTSDQpCiAgICAg
Ly8gV2UgaGF2ZSB0byBwdXQgdWlkIGluIHRoZSA0dGggYXJndW1lbnQgcmVnaXN0ZXIgKHI3KSBh
cyA2NC1iaXQgdmFsdWUgcmVnT3AyIHdpbGwgYmUgcHV0IG9uIHN0YWNrIGZvciBzaDQgYXJjaGl0
ZWN1cmUuCi0gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKHJlZ09wMVBheWxvYWQsIHJl
Z09wMVRhZywgVHJ1c3RlZEltbVB0cih1aWQpLCByZWdPcDJQYXlsb2FkLCByZWdPcDJUYWcpOwor
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwg
cmVnT3AxUGF5bG9hZCwgcmVnT3AxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCksIHJlZ09wMlBheWxv
YWQsIHJlZ09wMlRhZyk7CiAjZWxzZQotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShF
QUJJXzMyQklUX0RVTU1ZX0FSRyByZWdPcDFQYXlsb2FkLCByZWdPcDFUYWcsIHJlZ09wMlBheWxv
YWQsIHJlZ09wMlRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIHJlZ09wMVBheWxvYWQsIHJlZ09w
MVRhZywgcmVnT3AyUGF5bG9hZCwgcmVnT3AyVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwogI2Vu
ZGlmCiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMTU3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIGludDMyX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3QKICAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50Owog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCkK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKQEAgLTEyNCw1MSArMTI0LDQ2IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VW
YWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKIH0KIAotSl9GVU5DVElPTl9XUkFQUEVSX1dJ
VEhfUkVUVVJOX0FERFJFU1NfRUpJKG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QpOwotRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0V2l0aFJldHVy
bkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBs
KiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1w
bCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlk
KTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+
Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vz
c1R5cGUpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7
CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOwogCi0gICAgaWYgKGFjY2Vzc1R5cGUg
PT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCi0gICAgICAg
IGJ1aWxkR2V0QnlJRExpc3QoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8p
OworICAgIGlmIChhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKSkKKyAgICAgICAgYnVpbGRHZXRCeUlETGlzdChleGVjLCBiYXNlVmFsdWUs
IGlkZW50LCBzbG90LCAqc3R1YkluZm8pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQogCi1KX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkko
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CiAgICAgSWRlbnRpZmllciBpZGVudCA9IHVpZC0+aXNFbXB0eVVuaXF1ZSgpID8gSWRlbnRpZmll
cjo6ZnJvbShQcml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVpZCk7Ci0gICAgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZv
KHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAog
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUu
Z2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSA9PSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkgewotICAgICAgICBpZiAo
c3R1YkluZm8uc2VlbikKLSAgICAgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1
ZSwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvKTsKKyAgICBpZiAoYWNjZXNzVHlwZSA9PSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpIHsKKyAgICAgICAgaWYgKHN0
dWJJbmZvLT5zZWVuKQorICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVl
LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3R1
YkluZm8uc2VlbiA9IHRydWU7CisgICAgICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiAg
ICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1KX0ZVTkNU
SU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FQ0kob3BlcmF0aW9uSW5PcHRpbWl6ZSk7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemVXaXRoUmV0
dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5KQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOwpAQCAtMTc4LDI0ICsxNzMsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25JbgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVj
LT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlw
ZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4o
c3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsK
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICBib29sIHJlc3VsdCA9IGFzT2JqZWN0
KGJhc2UpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIAotICAgIFJF
TEVBU0VfQVNTRVJUKGFjY2Vzc1R5cGUgPT0gc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgUkVM
RUFTRV9BU1NFUlQoYWNjZXNzVHlwZSA9PSBzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAgICAgCi0g
ICAgaWYgKHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hJbihleGVjLCBiYXNlLCBpZGVu
dCwgcmVzdWx0LCBzbG90LCBzdHViSW5mbyk7CisgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQorICAg
ICAgICByZXBhdGNoSW4oZXhlYywgYmFzZSwgaWRlbnQsIHJlc3VsdCwgc2xvdCwgKnN0dWJJbmZv
KTsKICAgICBlbHNlCi0gICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHVi
SW5mby0+c2VlbiA9IHRydWU7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4ocmVzdWx0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW4oRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIFN0cmluZ0ltcGwqIGtleSkKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5KQogewogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwpAQCAtMjM1LDcgKzIyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ2EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxHZXR0ZXIoZXhl
YywgYmFzZSwgZ2V0dGVyU2V0dGVyKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTI0
NSw3ICsyMzksNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljCiAg
ICAgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRlbnQsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQp
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwpAQCAtMjU1LDcgKzI0OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkTm9uU3QKICAgICBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnB1dChleGVjLCBpZGVu
dCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQogCi12b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0
cmluZ0ltcGwqIHVpZCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1
aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yNjUsNyArMjU5LDcgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlYwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3ROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQp
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwpAQCAtMjc1LDE1ICsyNjksMTMgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlYwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpLCBzbG90KTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJF
U1NfRUpKSShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOwotdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1
aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlk
KTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+
Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vz
c1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KTsKQEAgLTI5MSwyNCArMjgzLDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkU3RyaWMKICAgICAKICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xv
dCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4o
c3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgaWYgKHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJh
c2VWYWx1ZSwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBOb3REaXJlY3QpOworICAgIGlmIChzdHVi
SW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVu
dCwgc2xvdCwgKnN0dWJJbmZvLCBOb3REaXJlY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3R1Yklu
Zm8uc2VlbiA9IHRydWU7CisgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KIAotVl9G
VU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpKSShvcGVyYXRpb25QdXRCeUlk
Tm9uU3RyaWN0T3B0aW1pemUpOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRO
b25TdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5n
SW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
ZXhlYyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0
dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
ID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTMxNiwyNCAr
MzA2LDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKICAgICAK
ICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAg
aWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNz
VHlwZSkpCisgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHN0dWJJ
bmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQs
IHNsb3QsIHN0dWJJbmZvLCBOb3REaXJlY3QpOworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAg
ICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJ
bmZvLCBOb3REaXJlY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7
CisgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVS
X1dJVEhfUkVUVVJOX0FERFJFU1NfRUpKSShvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0
aW1pemUpOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RP
cHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlk
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRk
cmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlw
ZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTT2JqZWN0KiBi
YXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CkBAIC0z
NDEsMjQgKzMyOSwyMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVj
CiAgICAgCiAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50LCB2YWx1
ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgaWYgKHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4
ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCBzdHViSW5mbywgRGlyZWN0KTsKKyAgICBpZiAo
c3R1YkluZm8tPnNlZW4pCisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmplY3Qs
IGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiAgICAgZWxzZQotICAgICAgICBzdHVi
SW5mby5zZWVuID0gdHJ1ZTsKKyAgICAgICAgc3R1YkluZm8tPnNlZW4gPSB0cnVlOwogfQogCi1W
X0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkpJKG9wZXJhdGlvblB1dEJ5
SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZSk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1p
emUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0lt
cGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZt
LCB1aWQpOwotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9j
aygpLT5nZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5
cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+
YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpKTsKQEAgLTM2NiwyNCArMzUyLDIyIEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKICAgICAKICAgICBiYXNlT2JqZWN0LT5wdXREaXJl
Y3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNz
VHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAg
ICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNj
ZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc3R1YkluZm8uc2VlbikK
LSAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsIHN0
dWJJbmZvLCBEaXJlY3QpOworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRj
aFB1dEJ5SUQoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0
KTsKICAgICBlbHNlCi0gICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHVi
SW5mby0+c2VlbiA9IHRydWU7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9B
RERSRVNTX0VKSkkob3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdCk7Ci12b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNz
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxk
TGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5n
SW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQo
dm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJs
b2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSk7CkBAIC0zOTEsMjEgKzM3NSwxOSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZFN0cmljCiAgICAgCiAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgdmFs
dWUsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xv
dCwgc3R1YkluZm8sIE5vdERpcmVjdCk7CisgICAgYnVpbGRQdXRCeUlkTGlzdChleGVjLCBiYXNl
VmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERpcmVjdCk7CiB9CiAKLVZfRlVOQ1RJ
T05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkkob3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdEJ1aWxkTGlzdCk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1w
bCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVy
bkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC00MTMsMjEgKzM5
NSwxOSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0CiAgICAgCiAg
ICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlm
IChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5
cGUpKQorICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJ
bmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGJ1aWxkUHV0QnlJ
ZExpc3QoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8sIE5vdERpcmVjdCk7
CisgICAgYnVpbGRQdXRCeUlkTGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1
YkluZm8sIE5vdERpcmVjdCk7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9B
RERSRVNTX0VKSkkob3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCk7Ci12b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdFdpdGhS
ZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAg
IElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmpl
Y3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKQEAgLTQzNSwyMSAr
NDE1LDE5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKICAgICAK
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90
KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxB
Y2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCBzdHVi
SW5mbywgRGlyZWN0KTsKKyAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmplY3QsIGlk
ZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9X
SVRIX1JFVFVSTl9BRERSRVNTX0VKSkkob3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1
aWxkTGlzdCk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0
cmljdEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1w
bCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZv
KHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0
PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSkpOwpAQCAtNDU3LDEwICs0MzUsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlYwogICAgIAogICAgIGJhc2VPYmplY3QgLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
aWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNzVHlw
ZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmplY3Qs
IGlkZW50LCBzbG90LCBzdHViSW5mbywgRGlyZWN0KTsKKyAgICBidWlsZFB1dEJ5SWRMaXN0KGV4
ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNTc2NDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNzAsNiArNzAsNyBAQCBleHRlcm4gIkMiIHsKICAgICBQYzogSW5zdHJ1Y3Rpb24qIGkuZS4g
Ynl0ZWNvZGUgUEMKICAgICBSOiBSZWdpc3RlcgogICAgIFM6IHNpemVfdAorICAgIFNzaTogU3Ry
dWN0dXJlU3R1YkluZm8qCiAgICAgU3Q6IFN0cnVjdHVyZSoKICAgICBWOiB2b2lkCiAgICAgVm06
IFZNKgpAQCAtOTAsNyArOTEsNiBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gKCpKCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJh
dGlvbl9FSSkoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3Bl
cmF0aW9uX0VKQSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKLXR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKSSkoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKSWRjKShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpzc1opKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgaW50
MzJfdCk7CkBAIC0xMDAsNiArMTAwLDggQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSgogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRP
cGVyYXRpb25fRVBTKShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwg
SW5zdHJ1Y3Rpb24qKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpf
SklUT3BlcmF0aW9uX0VTUykoRXhlY1N0YXRlKiwgc2l6ZV90LCBzaXplX3QpOwordHlwZWRlZiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUNJKShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFN0cmluZ0ltcGwqKTsKK3R5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lKSSko
RXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1w
bCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRp
b25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVpJY2ZaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBJ
bmxpbmVDYWxsRnJhbWUqLCBpbnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJf
dCk7CkBAIC0xNDAsNyArMTQyLDYgQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJ
VE9wZXJhdAogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSiko
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04g
KCpWX0pJVE9wZXJhdGlvbl9FSkNJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxs
KiwgU3RyaW5nSW1wbCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJh
dGlvbl9FSklkSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKLXR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9O
ICgqVl9KSVRPcGVyYXRpb25fRUpKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZf
SklUT3BlcmF0aW9uX0VKSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJ
VE9wZXJhdGlvbl9FSlBQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCosIHZvaWQq
KTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUpaSikoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKQEAgLTE0
OSw2ICsxNTAsNyBAQCB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0CiB0
eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VPWkopKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJ
VF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9u
Kik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4
ZWNTdGF0ZSosIHZvaWQqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQg
SklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBs
Kik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX1cpKFdhdGNo
cG9pbnRTZXQqKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25f
RVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpW
X0pJVE9wZXJhdGlvbl9FVm0pKEV4ZWNTdGF0ZSosIFZNKik7CkBAIC0xODAsMjYgKzE4MiwyNiBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVk1IYW5kbGVFeGNlCiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3RhY2tDaGVjayhFeGVjU3RhdGUqLCBDb2RlQmxvY2sqKSBXVEZfSU5U
RVJOQUw7CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soRXhl
Y1N0YXRlKikgV1RGX0lOVEVSTkFMOwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bnN0cnVjdEFyaXR5Q2hlY2soRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRlKiwgSlNDZWxsKiwgU3RyaW5nSW1wbCopOwotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbihFeGVjU3RhdGUqLCBKU0NlbGwq
LCBTdHJpbmdJbXBsKik7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5SWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0QnlJZEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFN0cmluZ0ltcGwqKTsKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1
YkluZm8qLCBKU0NlbGwqLCBTdHJpbmdJbXBsKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdlbmVyaWNJbihFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1
ZSk7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxDdXN0b21HZXR0
ZXIoRXhlY1N0YXRlKiwgSlNDZWxsKiwgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMsIFN0cmlu
Z0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNhbGxHZXR0ZXIoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFM
Owotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
U3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3ROb25TdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1w
bCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGly
ZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
LXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1p
emUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0lt
cGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5v
blN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwot
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3Qo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZFN0cmljdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmlj
dChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5B
TDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlz
aFB1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0LCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAx
NTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjEsOSArNTIxLDExIEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3QKIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOwogICAgIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGUs
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VlJlZywgcmVnVDEsIHJlZ1QwLCBpZGVu
dC0+aW1wbCgpKTsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2NvZGVCbG9j
ay0+YWRkU3R1YkluZm8oKTsKKyAgICAKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKFdp
dGhQcm9maWxlLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIHN0dWJJbmZv
LCByZWdUMSwgcmVnVDAsIGlkZW50LT5pbXBsKCkpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0Nv
bXBpbGF0aW9uSW5mb1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRleCsrXS5zbG93Q2Fz
ZUluZm8oY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0
aW9uSW5mb1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRleCsrXS5zbG93Q2FzZUluZm8o
Y29sZFBhdGhCZWdpbiwgY2FsbCwgc3R1YkluZm8pOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTU3Nyw3ICs1Nzks
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0CiAgICAgCiAgICAg
TGFiZWwgY29sZFBhdGhCZWdpbih0aGlzKTsKICAgICAKLSAgICBWX0pJVE9wZXJhdGlvbl9FSkpJ
IG9wdGltaXplZENhbGw7CisgICAgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcHRpbWl6ZWRDYWxs
OwogICAgIGlmIChtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgaWYgKGRp
cmVjdCkKICAgICAgICAgICAgIG9wdGltaXplZENhbGwgPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
U3RyaWN0T3B0aW1pemU7CkBAIC01OTAsMTAgKzU5MiwxMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKEluc3RydWN0CiAgICAgICAgICAgICBvcHRpbWl6ZWRDYWxsID0gb3BlcmF0
aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogICAgIH0KICAgICAKLSAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKG9wdGltaXplZENhbGwsIHJlZ1QzLCByZWdUMiwgcmVnVDEsIHJlZ1Qw
LCBpZGVudC0+aW1wbCgpKTsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2Nv
ZGVCbG9jay0+YWRkU3R1YkluZm8oKTsKKyAgICAKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0
aW9uKG9wdGltaXplZENhbGwsIHN0dWJJbmZvLCByZWdUMywgcmVnVDIsIHJlZ1QxLCByZWdUMCwg
aWRlbnQtPmltcGwoKSk7CiAKICAgICAvLyBUcmFjayB0aGUgbG9jYXRpb24gb2YgdGhlIGNhbGw7
IHRoaXMgd2lsbCBiZSB1c2VkIHRvIHJlY292ZXIgcGF0Y2ggaW5mb3JtYXRpb24uCi0gICAgbV9w
cm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25J
bmRleCsrXS5zbG93Q2FzZUluZm8oY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgbV9wcm9wZXJ0
eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRleCsr
XS5zbG93Q2FzZUluZm8oY29sZFBhdGhCZWdpbiwgY2FsbCwgc3R1YkluZm8pOwogfQogCiAvLyBD
b21waWxlIGEgc3RvcmUgaW50byBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92
ZXJ3cml0ZSBiYXNlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE1NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjQsOSAr
NTY0LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3QKIAogICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogICAgIAotICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0
VlJlZywgcmVnVDAsIGlkZW50LT5pbXBsKCkpOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbyA9IG1fY29kZUJsb2NrLT5hZGRTdHViSW5mbygpOworICAgIAorICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVz
dWx0VlJlZywgc3R1YkluZm8sIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKIAotICAgIG1fcHJvcGVy
dHlBY2Nlc3NDb21waWxhdGlvbkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgr
K10uc2xvd0Nhc2VJbmZvKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIG1fcHJvcGVydHlBY2Nl
c3NDb21waWxhdGlvbkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgrK10uc2xv
d0Nhc2VJbmZvKGNvbGRQYXRoQmVnaW4sIGNhbGwsIHN0dWJJbmZvKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02
MTcsNyArNjE5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdAog
CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbih0aGlzKTsKICAgICAKLSAgICBWX0pJVE9wZXJhdGlv
bl9FSkpJIG9wdGltaXplZENhbGw7CisgICAgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcHRpbWl6
ZWRDYWxsOwogICAgIGlmIChtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAg
aWYgKGRpcmVjdCkKICAgICAgICAgICAgIG9wdGltaXplZENhbGwgPSBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0U3RyaWN0T3B0aW1pemU7CkBAIC02MzAsMTAgKzYzMiwxMiBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0CiAgICAgICAgICAgICBvcHRpbWl6ZWRDYWxsID0g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogICAgIH0KICAgICAKLSAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wdGltaXplZENhbGwsIHJlZ1QxLCByZWdUMCwgaWRlbnQt
PmltcGwoKSk7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbV9jb2RlQmxvY2st
PmFkZFN0dWJJbmZvKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wdGltaXpl
ZENhbGwsIHN0dWJJbmZvLCByZWdUMSwgcmVnVDAsIGlkZW50LT5pbXBsKCkpOwogCiAgICAgLy8g
VHJhY2sgdGhlIGxvY2F0aW9uIG9mIHRoZSBjYWxsOyB0aGlzIHdpbGwgYmUgdXNlZCB0byByZWNv
dmVyIHBhdGNoIGluZm9ybWF0aW9uLgotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbklu
Zm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgrK10uc2xvd0Nhc2VJbmZvKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm9bbV9w
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgrK10uc2xvd0Nhc2VJbmZvKGNvbGRQYXRoQmVn
aW4sIGNhbGwsIHN0dWJJbmZvKTsKIH0KIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2Jq
ZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgdGhlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE1NzY0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMCw3ICs2
MTAsNyBAQCB2b2lkIGJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAgICAg
IHJlcGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24sIG9wZXJhdGlvbkdldEJ5SWQpOwogfQogCi1zdGF0aWMgVl9KSVRPcGVyYXRpb25fRUpKSSBh
cHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZz
bG90LCBQdXRLaW5kIHB1dEtpbmQpCitzdGF0aWMgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBhcHBy
b3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90
LCBQdXRLaW5kIHB1dEtpbmQpCiB7CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAg
ICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQpAQCAtNjIyLDcgKzYyMiw3IEBAIHN0YXRpYyBW
X0pJVE9wZXJhdGlvbl9FSkpJIGFwcHJvcHJpYXRlR2UKICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZE5vblN0cmljdDsKIH0KIAotc3RhdGljIFZfSklUT3BlcmF0aW9uX0VKSkkgYXBwcm9wcmlh
dGVMaXN0QnVpbGRpbmdQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90
LCBQdXRLaW5kIHB1dEtpbmQpCitzdGF0aWMgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBhcHByb3By
aWF0ZUxpc3RCdWlsZGluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNs
b3QsIFB1dEtpbmQgcHV0S2luZCkKIHsKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewog
ICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC0xMzg4LDggKzEzODgsOCBAQCB2b2lk
IHJlc2V0R2V0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoCiAKIHZvaWQgcmVzZXRQdXRCeUlE
KFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIHsKLSAgICBWX0pJVE9wZXJhdGlvbl9FSkpJIHVub3B0aW1pemVkRnVuY3Rpb24gPSBiaXR3
aXNlX2Nhc3Q8Vl9KSVRPcGVyYXRpb25fRUpKST4oTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFy
Z2V0KHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbikuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Ci0g
ICAgVl9KSVRPcGVyYXRpb25fRUpKSSBvcHRpbWl6ZWRGdW5jdGlvbjsKKyAgICBWX0pJVE9wZXJh
dGlvbl9FU3NpSkpJIHVub3B0aW1pemVkRnVuY3Rpb24gPSBiaXR3aXNlX2Nhc3Q8Vl9KSVRPcGVy
YXRpb25fRVNzaUpKST4oTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbikuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgVl9KSVRPcGVyYXRp
b25fRVNzaUpKSSBvcHRpbWl6ZWRGdW5jdGlvbjsKICAgICBpZiAodW5vcHRpbWl6ZWRGdW5jdGlv
biA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3Bl
cmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdCkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24g
PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CiAgICAgZWxzZSBpZiAodW5vcHRpbWl6
ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0IHx8IHVub3B0aW1pemVkRnVu
Y3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdCkKSW5kZXg6IFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE3IEBACisyMDEzLTEwLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CisKKyAgICAgICAgQSBDb2RlQmxvY2sncyBTdHJ1Y3R1cmVTdHViSW5mb3Mgc2hvdWxkbid0IGJl
IGluIGEgVmVjdG9yIHRoYXQgd2Ugc2VhcmNoIHVzaW5nIGNvZGUgb3JpZ2lucyBhbmQgbWFjaGlu
ZSBjb2RlIFBDcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIyOTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hw
cm9qOgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHd0Zi9CYWdUb0hhc2hNYXAuaDogQWRkZWQuCisgICAgICAgIChXVEY6OnRvSGFzaE1hcCk6Cisg
ICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorCiAyMDEzLTEwLTE4ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNwYWNlcyBiZXR3ZWVu
IHRlbXBsYXRlIGFuZ2xlIGJyYWNrZXRzCkluZGV4OiBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxp
c3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZp
c2lvbiAxNTc2NDYpCisrKyBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTksNiArOSw3IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0
Zi9BdG9taWNzLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVkUG9vbC5oIFwKICAg
ICBTb3VyY2UvV1RGL3d0Zi9CYWcuaCBcCisgICAgU291cmNlL1dURi93dGYvQmFnVG9IYXNoTWFw
LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0JpdEFycmF5LmggXAogICAgIFNvdXJjZS9XVEYvd3Rm
L0JpdFZlY3Rvci5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5oIFwKSW5kZXg6
IFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagkocmV2aXNpb24gMTU3NjQ2KQorKysgU291cmNl
L1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEy
Myw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQXV0b2RyYWluZWRQb29sLmgi
IC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEFWTFRyZWUuaCIgLz4NCiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQmFnLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cd3RmXEJhZ1RvSGFzaE1hcC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHd0ZlxCaXRBcnJheS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxC
aXRtYXAuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQml0VmVjdG9yLmgi
IC8+DQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxNTc2NDYpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAJCTBGOUQzMzYyMTY1REJBNzMwMDVB
RDM4NyAvKiBQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3Bw
ICovOyB9OwogCQkwRjlEMzM2MzE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVFMTY1REJB
NzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovOyB9OwogCQkwRkIxNEUxOTE4MEZBMjE4MDA5
QjZCNEQgLyogQmFnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkIxNEUxODE4MEZBMjE4MDA5QjZCNEQgLyogQmFnLmggKi87IH07CisJCTBGQjE0RTFC
MTgxMEUxREMwMDlCNkI0RCAvKiBCYWdUb0hhc2hNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjE0RTFBMTgxMEUxREEwMDlCNkI0RCAvKiBCYWdU
b0hhc2hNYXAuaCAqLzsgfTsKIAkJMEZDNDQ4ODMxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nlc3NJ
RC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNDQ4
ODIxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oICovOyB9OwogCQkwRkM0RURFNjE2OTYx
NDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmlu
dGVyLmggKi87IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MUFD
NDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CkBAIC0yODksNiArMjkwLDcgQEAKIAkJMEY5RDMzNUQxNjVEQkE3
MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByaW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY5RDMzNUUxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGQjE0RTE4MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmFnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
QjE0RTFBMTgxMEUxREEwMDlCNkI0RCAvKiBCYWdUb0hhc2hNYXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QmFnVG9IYXNoTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzQ0ODgyMTZG
RTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJvY2Vzc0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzRFREU1
MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29tbWFQcmludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTYwOCw2ICs2MTAsNyBAQAogCQkJCTE0Njk0MTlCMTZFQUIxMEEwMDI0RTE0
NiAvKiBBdXRvZHJhaW5lZFBvb2xNYWMubW0gKi8sCiAJCQkJQThBNDcyNUUxNTFBODI1QTAwNDEy
M0ZGIC8qIEFWTFRyZWUuaCAqLywKIAkJCQkwRkIxNEUxODE4MEZBMjE4MDA5QjZCNEQgLyogQmFn
LmggKi8sCisJCQkJMEZCMTRFMUExODEwRTFEQTAwOUI2QjREIC8qIEJhZ1RvSGFzaE1hcC5oICov
LAogCQkJCTRGMDMyMUJCMTU2QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oICovLAogCQkJCUE4
QTQ3MjVGMTUxQTgyNUEwMDQxMjNGRiAvKiBCaXRtYXAuaCAqLywKIAkJCQlBOEE0NzI2MDE1MUE4
MjVBMDA0MTIzRkYgLyogQml0VmVjdG9yLmNwcCAqLywKQEAgLTk5Niw2ICs5OTksNyBAQAogCQkJ
CUE4QTQ3M0ZBMTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczRkMxNTFBODI1QjAwNDEyM0ZGIC8qIE93blB0ci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczRkQxNTFBODI1QjAwNDEyM0ZGIC8qIE93blB0ckNvbW1vbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEZCMTRFMUIxODEwRTFEQzAwOUI2QjREIC8qIEJhZ1RvSGFzaE1hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRkUxNTFBODI1QjAwNDEyM0ZGIC8qIFBhY2tlZElu
dFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRkYxNTFBODI1QjAwNDEyM0ZGIC8q
IFBhZ2VBbGxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQwMTE1MUE4MjVCMDA0
MTIzRkYgLyogUGFnZUFsbG9jYXRpb25BbGlnbmVkLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL0JhZ1RvSGFzaE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0JhZ1RvSGFzaE1hcC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvQmFnVG9IYXNo
TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQmFnVG9IYXNoTWFwX2gKKyNkZWZpbmUgQmFnVG9IYXNoTWFwX2gKKworI2luY2x1ZGUgPHd0
Zi9CYWcuaD4KKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwg
dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgS2V5R2V0dGVyRnVuY3Rvcj4KK3ZvaWQgdG9IYXNo
TWFwKEJhZzxFbGVtZW50VHlwZT4mIGJhZywgS2V5R2V0dGVyRnVuY3RvciYgZ2V0S2V5LCBIYXNo
TWFwPEtleVR5cGUsIEVsZW1lbnRUeXBlKj4mIHJlc3VsdCkKK3sKKyAgICBmb3IgKHR5cGVuYW1l
IEJhZzxFbGVtZW50VHlwZT46Oml0ZXJhdG9yIGl0ZXIgPSBiYWcuYmVnaW4oKTsgISFpdGVyOyAr
K2l0ZXIpIHsKKyAgICAgICAgRWxlbWVudFR5cGUqIGVsZW1lbnQgPSAqaXRlcjsKKyAgICAgICAg
S2V5VHlwZSBrZXkgPSBnZXRLZXkoKmVsZW1lbnQpOworICAgICAgICByZXN1bHQuYWRkKGtleSwg
ZWxlbWVudCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjp0
b0hhc2hNYXA7CisKKyNlbmRpZiAvLyBCYWdUb0hhc2hNYXBfaAorCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMTU3NjQ2KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIEFz
c2VydGlvbnMuaAogICAgIEF0b21pY3MuaAogICAgIEJhZy5oCisgICAgQmF0VG9IYXNoTWFwLmgK
ICAgICBCaXRBcnJheS5oCiAgICAgQml0VmVjdG9yLmgKICAgICBCaXRtYXAuaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214628</attachid>
            <date>2013-10-18 18:40:38 -0700</date>
            <delta_ts>2013-10-18 18:42:22 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>119346</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBA
CisyMDEzLTEwLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QSBDb2RlQmxvY2sncyBTdHJ1Y3R1cmVTdHViSW5mb3Mgc2hvdWxkbid0IGJlIGluIGEgVmVjdG9y
IHRoYXQgd2Ugc2VhcmNoIHVzaW5nIGNvZGUgb3JpZ2lucyBhbmQgbWFjaGluZSBjb2RlIFBDcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTQwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBU
aGlzIGFjY29tcGxpc2hlcyBhIG51bWJlciBvZiBzaW1wbGlmaWNhdGlvbnMuIFN0cnVjdHVyZVN0
dWJJbmZvIGlzIG5vdyBub24tbW92aW5nLAorICAgICAgICB3aGVyZWFzIHByZXZpb3VzbHkgaXQg
d2FzIGluIGEgVmVjdG9yLCBzbyBpdCBtb3ZlZC4gVGhpcyBhbGxvd3MgeW91IHRvIHVzZSBwb2lu
dGVycyB0bworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mby4gVGhpcyBhbHNvIGVsaW1pbmF0ZXMg
dGhlIHVzZSBvZiByZXR1cm4gUEMgYXMgYSB3YXkgb2YgZmluZGluZyB0aGUKKyAgICAgICAgU3Ry
dWN0dXJlU3R1YkluZm8ncy4gSXQgcmVtb3ZlcyBzb21lIG9mIHRoZSBuZWVkIGZvciB0aGUgY29t
cGlsZS10aW1lIHByb3BlcnR5IGFjY2VzcworICAgICAgICByZWNvcmRzOyBmb3IgZXhhbXBsZSB0
aGUgREZHIG5vIGxvbmdlciBoYXMgdG8gc2F2ZSBpbmZvcm1hdGlvbiBhYm91dCByZWdpc3RlcnMg
aW4gYQorICAgICAgICBwcm9wZXJ0eSBhY2Nlc3MgcmVjb3JkIG9ubHkgdG8gbGF0ZXIgc2F2ZSBp
dCB0byB0aGUgc3R1YiBpbmZvLgorICAgICAgICAKKyAgICAgICAgVGhlIG1haW4gdGhpbmcgaXMg
YWNjb21wbGlzaGVzIGlzIHRoYXQgaXQgbWFrZXMgaXQgZWFzaWVyIHRvIGFkZCBTdHJ1Y3R1cmVT
dHViSW5mbydzCisgICAgICAgIGF0IGFueSBzdGFnZSBvZiBjb21waWxhdGlvbi4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJp
bnRHZXRCeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjphZGRTdHViSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiZWdpbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZW5kKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpyYXJl
Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9y
aWdpbi5oOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjpDb2RlT3JpZ2luKToKKyAgICAgICAg
KEpTQzo6Q29kZU9yaWdpbjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlND
OjpDb2RlT3JpZ2luOjpoYXNoKToKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbkhhc2g6Omhhc2gp
OgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luSGFzaDo6ZXF1YWwpOgorICAgICAgICAqIGJ5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpnZXRTdHJ1
Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4pOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxp
bmVTdGFja0VudHJ5KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoSlNDOjpERkc6OkluUmVjb3JkOjpJblJlY29yZCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
UHV0QnlJZCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6Y29w
eVRvU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5m
bzo6c2xvd0Nhc2VJbmZvKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3By
aWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUxp
c3RCdWlsZGluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6
CisKIDIwMTMtMTAtMTggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTcHJlYWQgb3BlcmF0b3Igc2hvdWxkIGJlIHBlcmZvcm1pbmcgZGlyZWN0ICJwdXRzIiBhbmQg
bm90IHRyaWdnZXJpbmcgc2V0dGVycwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE1NzY1OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1
Miw3IEBACiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9y
SW5saW5lcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0JhZ1RvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5n
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC0zMzEsNyAr
MzMyLDcgQEAgc3RhdGljIHZvaWQgZHVtcENoYWluKFByaW50U3RyZWFtJiBvdXQsIAogfQogI2Vu
ZGlmCiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbikKK3ZvaWQgQ29kZUJsb2NrOjpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMs
IGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKIHsKICAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgbG9jYXRpb247CiAKQEAg
LTM1MCw4ICszNTEsOCBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMo
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKG51bWJlck9mU3RydWN0dXJlU3R1
YkluZm9zKCkpIHsKLSAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZ2V0U3R1
YkluZm8obG9jYXRpb24pOworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IG1h
cC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7CisgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8uc2VlbikgewogICAg
ICAgICAgICAgb3V0LnByaW50ZigiIGppdCgiKTsKICAgICAgICAgICAgIApAQCAtNTIwLDExICs1
MjEsMTcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbQogICAgICAg
ICBvdXQucHJpbnRmKCI7IGFjdGl2YXRpb24gaW4gciVkIiwgYWN0aXZhdGlvblJlZ2lzdGVyKCku
b2Zmc2V0KCkpOwogICAgIG91dC5wcmludGYoIlxuIik7CiAgICAgCisgICAgU3R1YkluZm9NYXAg
c3R1YkluZm9zOworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKyAgICAgICAgZ2V0U3R1YkluZm9NYXAobG9ja2VyLCBzdHViSW5mb3MpOworICAgIH0K
KyAgICAKICAgICBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwogICAgIGNvbnN0IEluc3RydWN0aW9uKiBlbmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsK
ICAgICBmb3IgKGNvbnN0IEluc3RydWN0aW9uKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsraXQp
Ci0gICAgICAgIGR1bXBCeXRlY29kZShvdXQsIGV4ZWMsIGJlZ2luLCBpdCk7Ci0KKyAgICAgICAg
ZHVtcEJ5dGVjb2RlKG91dCwgZXhlYywgYmVnaW4sIGl0LCBzdHViSW5mb3MpOworICAgIAogICAg
IGlmIChudW1iZXJPZklkZW50aWZpZXJzKCkpIHsKICAgICAgICAgb3V0LnByaW50ZigiXG5JZGVu
dGlmaWVyczpcbiIpOwogICAgICAgICBzaXplX3QgaSA9IDA7CkBAIC01NTIsMTEgKzU1OSw2IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAgICAgICAgfSB3aGls
ZSAoaSA8IGNvdW50KTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmICghbV9zdHJ1
Y3R1cmVTdHViSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICBvdXQucHJpbnRmKCJcblN0cnVjdHVy
ZXM6XG4iKTsKLSNlbmRpZgotCiAgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmludGYoIlxuRXhj
ZXB0aW9uIEhhbmRsZXJzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwpAQCAtNjU3LDcg
KzY1OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wUmFyZUNhc2VQcm9maWxlKFByaW4KIH0KICNl
bmRpZgogCi12b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0KQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKIHsKICAgICBpbnQgbG9jYXRpb24gPSBp
dCAtIGJlZ2luOwogICAgIGJvb2wgaGFzUHJpbnRlZFByb2ZpbGluZyA9IGZhbHNlOwpAQCAtOTQ3
LDcgKzk0OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAg
ICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgICAgICBjYXNlIG9wX2dldF9zdHJp
bmdfbGVuZ3RoOiB7CiAgICAgICAgICAgICBwcmludEdldEJ5SWRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCk7Ci0gICAgICAgICAgICBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGV4ZWMs
IGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgZXhl
YywgbG9jYXRpb24sIG1hcCk7CiAgICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBp
dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtMTQyMiw3ICsxNDI0LDYgQEAgc3RhdGljIEhhc2hTZXQ8Q29kZUJsb2NrKj4gbGl2ZUNvZGVC
bG9jawogCiAjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8pIFwKICAgICBtYWNy
byhpbnN0cnVjdGlvbnMpIFwKLSAgICBtYWNybyhzdHJ1Y3R1cmVTdHViSW5mb3MpIFwKICAgICBt
YWNybyhjYWxsTGlua0luZm9zKSBcCiAgICAgbWFjcm8obGlua2VkQ2FsbGVyTGlzdCkgXAogICAg
IG1hY3JvKGlkZW50aWZpZXJzKSBcCkBAIC0xOTQ1LDggKzE5NDYsOCBAQCBDb2RlQmxvY2s6On5D
b2RlQmxvY2soKQogICAgIC8vIG1faW5jb21pbmdDYWxscyBsaW5rZWQgbGlzdHMgdGhyb3VnaCB0
aGUgZXhlY3V0aW9uIG9mIHRoZSB+Q2FsbExpbmtJbmZvCiAgICAgLy8gZGVzdHJ1Y3RvcnMuCiAK
LSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6ZSgpLCBpID0g
MDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaV0uZGVyZWYo
KTsKKyAgICBmb3IgKEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3N0
dWJJbmZvcy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikKKyAgICAgICAgKCppdGVyKS0+ZGVyZWYo
KTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJ
Q1MKQEAgLTIxMDEsOCArMjEwMiw4IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0
aW9ucyhTbG8KIAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzSklUKGppdFR5
cGUoKSkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3RydWN0dXJlU3R1
YkluZm9zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8gPSBtX3N0cnVjdHVyZVN0dWJJbmZvc1tpXTsKKyAgICAgICAgZm9yIChCYWc8U3RydWN0
dXJlU3R1YkluZm8+OjppdGVyYXRvciBpdGVyID0gbV9zdHViSW5mb3MuYmVnaW4oKTsgISFpdGVy
OyArK2l0ZXIpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICoq
aXRlcjsKICAgICAgICAgICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgICAg
ICAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICAg
ICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CkBAIC0yMzU4LDgg
KzIzNTksOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAg
ICAgICAgICAgICAgJiYgIUhlYXA6OmlzTWFya2VkKGNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNh
bGxlZS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvKGkpLmxhc3RTZWVuQ2Fs
bGVlLmNsZWFyKCk7CiAgICAgICAgIH0KLSAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3Ry
dWN0dXJlU3R1YkluZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAg
ICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IG1fc3RydWN0dXJlU3R1YkluZm9zW2ld
OworICAgICAgICBmb3IgKEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIGl0ZXIgPSBt
X3N0dWJJbmZvcy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgeworICAgICAgICAgICAgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKippdGVyOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNlcygpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwpAQCAtMjM3MSw2ICsyMzcyLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKIH0KIAogI2lmIEVOQUJMRShKSVQpCitTdHJ1Y3R1cmVTdHViSW5mbyog
Q29kZUJsb2NrOjphZGRTdHViSW5mbygpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICByZXR1cm4gbV9zdHViSW5mb3MuYWRkKCk7Cit9CisKK3ZvaWQgQ29k
ZUJsb2NrOjpnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3R1Yklu
Zm9NYXAmIHJlc3VsdCkKK3sKKyAgICB0b0hhc2hNYXAobV9zdHViSW5mb3MsIGdldFN0cnVjdHVy
ZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKK30KKwogdm9pZCBDb2RlQmxvY2s6OnJlc2V0
U3R1YihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKHN0dWJJbmZvLmFj
Y2Vzc1R5cGUgPT0gYWNjZXNzX3Vuc2V0KQpAQCAtMjU5Myw3ICsyNjA1LDYgQEAgdm9pZCBDb2Rl
QmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjbwogdm9pZCBDb2RlQmxvY2s6OnNocmlua1Rv
Rml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKIHsKICNpZiBFTkFCTEUoSklUKQotICAgIG1fc3Ry
dWN0dXJlU3R1YkluZm9zLnNocmlua1RvRml0KCk7CiAgICAgbV9jYWxsTGlua0luZm9zLnNocmlu
a1RvRml0KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0zMTExLDE2
ICszMTIyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNldE9wdGltaXphdGlvblRocmVzaG9sZAogCiAj
ZW5kaWYKICAgICAKLXN0YXRpYyBib29sIHN0cnVjdHVyZVN0dWJJbmZvTGVzc1RoYW4oY29uc3Qg
U3RydWN0dXJlU3R1YkluZm8mIGEsIGNvbnN0IFN0cnVjdHVyZVN0dWJJbmZvJiBiKQotewotICAg
IHJldHVybiBhLmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpIDwgYi5jYWxs
UmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6
OnNvcnRTdHJ1Y3R1cmVTdHViSW5mb3MoKQotewotICAgIHN0ZDo6c29ydChtX3N0cnVjdHVyZVN0
dWJJbmZvcy5iZWdpbigpLCBtX3N0cnVjdHVyZVN0dWJJbmZvcy5lbmQoKSwgc3RydWN0dXJlU3R1
YkluZm9MZXNzVGhhbik7Ci19Ci0KIHVpbnQzMl90IENvZGVCbG9jazo6YWRqdXN0ZWRFeGl0Q291
bnRUaHJlc2hvbGQodWludDMyX3QgZGVzaXJlZFRocmVzaG9sZCkKIHsKICAgICBBU1NFUlQoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw2ICs3Myw3IEBACiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAiVmlydHVh
bFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgPHd0Zi9CYWcu
aD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgpAQCAtMTcwLDE4ICsxNzEsMTMg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYg
Y29sdW1uKTsKIAogI2lmIEVOQUJMRShKSVQpCi0KLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgZ2V0
U3R1YkluZm8oUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgIHsKLSAgICAgICAg
cmV0dXJuICooYmluYXJ5U2VhcmNoPFN0cnVjdHVyZVN0dWJJbmZvLCB2b2lkKj4obV9zdHJ1Y3R1
cmVTdHViSW5mb3MsIG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgcmV0dXJuQWRkcmVzcy52
YWx1ZSgpLCBnZXRTdHJ1Y3R1cmVTdHViSW5mb1JldHVybkxvY2F0aW9uKSk7Ci0gICAgfQotCi0g
ICAgU3RydWN0dXJlU3R1YkluZm8mIGdldFN0dWJJbmZvKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
Ci0gICAgewotICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8U3RydWN0dXJlU3R1YkluZm8s
IHVuc2lnbmVkPihtX3N0cnVjdHVyZVN0dWJJbmZvcywgbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6
ZSgpLCBieXRlY29kZUluZGV4LCBnZXRTdHJ1Y3R1cmVTdHViSW5mb0J5dGVjb2RlSW5kZXgpKTsK
LSAgICB9CisgICAgU3RydWN0dXJlU3R1YkluZm8qIGFkZFN0dWJJbmZvKCk7CisgICAgQmFnPFN0
cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX3N0dWJJbmZvcy5i
ZWdpbigpOyB9CisgICAgQmFnPFN0cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0b3IgZW5kKCkgeyBy
ZXR1cm4gbV9zdHViSW5mb3MuZW5kKCk7IH0KIAogICAgIHZvaWQgcmVzZXRTdHViKFN0cnVjdHVy
ZVN0dWJJbmZvJik7CisgICAgCisgICAgdm9pZCBnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCk7CiAKICAgICBCeVZhbEluZm8mIGdl
dEJ5VmFsSW5mbyh1bnNpZ25lZCBieXRlY29kZUluZGV4KQogICAgIHsKQEAgLTM3NywxMSArMzcz
LDYgQEAgcHVibGljOgogICAgIFN0cmluZyBuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVy
KTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJ
bmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9Ci0g
ICAgdm9pZCBzb3J0U3RydWN0dXJlU3R1YkluZm9zKCk7Ci0gICAgc2l6ZV90IG51bWJlck9mU3Ry
dWN0dXJlU3R1YkluZm9zKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6
ZSgpOyB9Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKGludCBpbmRl
eCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaW5kZXhdOyB9Ci0KICAgICB2b2lkIHNl
dE51bWJlck9mQnlWYWxJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX2J5VmFsSW5mb3MuZ3JvdyhzaXpl
KTsgfQogICAgIHNpemVfdCBudW1iZXJPZkJ5VmFsSW5mb3MoKSBjb25zdCB7IHJldHVybiBtX2J5
VmFsSW5mb3Muc2l6ZSgpOyB9CiAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8oc2l6ZV90IGluZGV4
KSB7IHJldHVybiBtX2J5VmFsSW5mb3NbaW5kZXhdOyB9CkBAIC00NDUsOCArNDM2LDggQEAgcHVi
bGljOgogICAgIFJhcmVDYXNlUHJvZmlsZSogcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRyeUJpbmFyeVNl
YXJjaDxSYXJlQ2FzZVByb2ZpbGUsIGludD4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmFyZUNhc2VQcm9maWxlcywgbV9yYXJlQ2FzZVBy
b2ZpbGVzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fcmFyZUNhc2VQcm9maWxlcywgbV9yYXJlQ2FzZVByb2ZpbGVz
LnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICBnZXRSYXJlQ2FzZVByb2ZpbGVC
eXRlY29kZU9mZnNldCk7CiAgICAgfQogCiAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShp
bnQgYnl0ZWNvZGVPZmZzZXQpCkBAIC05MzUsMTQgKzkyNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSgp
LCBjb25zdGFudHNbaV0uZ2V0KCkpOwogICAgIH0KIAotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJ
bnN0cnVjdGlvbiomKTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYsIEV4ZWNT
dGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29u
c3QgU3R1YkluZm9NYXAmIG1hcCA9IFN0dWJJbmZvTWFwKCkpOwogCiAgICAgQ1N0cmluZyByZWdp
c3Rlck5hbWUoaW50IHIpIGNvbnN0OwogICAgIHZvaWQgcHJpbnRVbmFyeU9wKFByaW50U3RyZWFt
JiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBj
aGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEJpbmFyeU9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRl
KiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7CiAg
ICAgdm9pZCBwcmludENvbmRpdGlvbmFsSnVtcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGNv
bnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgaW50IGxvY2F0aW9uLCBjb25z
dCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYsIEV4ZWNT
dGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7Ci0gICAgdm9pZCBwcmlu
dEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlv
bik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYsIEV4ZWNT
dGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmKTsKICAgICBlbnVtIENhY2hl
RHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwogICAgIHZvaWQgcHJpbnRD
YWxsT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3Ry
dWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVk
UHJvZmlsaW5nKTsKICAgICB2b2lkIHByaW50UHV0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0
YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7
CkBAIC0xMDMxLDcgKzEwMjIsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2pp
dENvZGU7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNr
OwogI2lmIEVOQUJMRShKSVQpCi0gICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVj
dHVyZVN0dWJJbmZvczsKKyAgICBCYWc8U3RydWN0dXJlU3R1YkluZm8+IG1fc3R1YkluZm9zOwog
ICAgIFZlY3RvcjxCeVZhbEluZm8+IG1fYnlWYWxJbmZvczsKICAgICBWZWN0b3I8Q2FsbExpbmtJ
bmZvPiBtX2NhbGxMaW5rSW5mb3M7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5m
bywgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPj4gbV9pbmNvbWluZ0NhbGxzOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZp
c2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVmFsdWVSZWNv
dmVyeS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC02MCw2ICs2MSwxMiBAQCBzdHJ1Y3QgQ29kZU9yaWdpbiB7CiAgICAgewogICAgIH0K
ICAgICAKKyAgICBDb2RlT3JpZ2luKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAg
ICAgICAgOiBieXRlY29kZUluZGV4KGludmFsaWRCeXRlY29kZUluZGV4KQorICAgICAgICAsIGlu
bGluZUNhbGxGcmFtZShiaXR3aXNlX2Nhc3Q8SW5saW5lQ2FsbEZyYW1lKj4oc3RhdGljX2Nhc3Q8
dWludHB0cl90PigxKSkpCisgICAgeworICAgIH0KKyAgICAKICAgICBleHBsaWNpdCBDb2RlT3Jp
Z2luKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lID0gMCkKICAgICAgICAgOiBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCiAgICAgICAg
ICwgaW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSkKQEAgLTY5LDYgKzc2LDExIEBAIHN0
cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4g
Ynl0ZWNvZGVJbmRleCAhPSBpbnZhbGlkQnl0ZWNvZGVJbmRleDsgfQogICAgIAorICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJ5
dGVjb2RlSW5kZXggPT0gaW52YWxpZEJ5dGVjb2RlSW5kZXggJiYgISFpbmxpbmVDYWxsRnJhbWU7
CisgICAgfQorICAgIAogICAgIC8vIFRoZSBpbmxpbmUgZGVwdGggaXMgdGhlIGRlcHRoIG9mIHRo
ZSBpbmxpbmUgc3RhY2ssIHNvIDEgPSBub3QgaW5saW5lZCwKICAgICAvLyAyID0gaW5saW5lZCBv
bmUgZGVlcCwgZXRjLgogICAgIHVuc2lnbmVkIGlubGluZURlcHRoKCkgY29uc3Q7CkBAIC04MSw4
ICs5Myw4IEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICBzdGF0aWMgdW5zaWduZWQg
aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoSW5saW5lQ2FsbEZyYW1lKik7CiAgICAgCisgICAgdW5z
aWduZWQgaGFzaCgpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlT3JpZ2lu
JiBvdGhlcikgY29uc3Q7Ci0gICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmln
aW4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAogICAg
IC8vIEdldCB0aGUgaW5saW5lIHN0YWNrLiBUaGlzIGlzIHNsb3csIGFuZCBpcyBpbnRlbmRlZCBm
b3IgZGVidWdnaW5nIG9ubHkuCkBAIC0xNDUsNiArMTU3LDEyIEBAIGlubGluZSBpbnQgQ29kZU9y
aWdpbjo6c3RhY2tPZmZzZXQoKSBjb24KICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldDsKIH0KIAoraW5saW5lIHVuc2lnbmVkIENvZGVPcmlnaW46Omhhc2goKSBjb25zdAor
eworICAgIHJldHVybiBXVEY6OkludEhhc2g8dW5zaWduZWQ+OjpoYXNoKGJ5dGVjb2RlSW5kZXgp
ICsKKyAgICAgICAgV1RGOjpQdHJIYXNoPElubGluZUNhbGxGcmFtZSo+OjpoYXNoKGlubGluZUNh
bGxGcmFtZSk7Cit9CisKIGlubGluZSBib29sIENvZGVPcmlnaW46Om9wZXJhdG9yPT0oY29uc3Qg
Q29kZU9yaWdpbiYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJ5dGVjb2RlSW5kZXggPT0g
b3RoZXIuYnl0ZWNvZGVJbmRleApAQCAtMTU4LDcgKzE3NiwyNyBAQCBpbmxpbmUgU2NyaXB0RXhl
Y3V0YWJsZSogQ29kZU9yaWdpbjo6Y29kCiAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZS0+ZXhl
Y3V0YWJsZS5nZXQoKTsKIH0KIAorc3RydWN0IENvZGVPcmlnaW5IYXNoIHsKKyAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBDb2RlT3JpZ2luJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7
IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDb2RlT3JpZ2luJiBhLCBjb25zdCBDb2Rl
T3JpZ2luJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZh
dWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6Q29kZU9yaWdpbj4g
eworICAgIHR5cGVkZWYgSlNDOjpDb2RlT3JpZ2luSGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJh
aXRzPEpTQzo6Q29kZU9yaWdpbj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpDb2RlT3Jp
Z2luPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBDb2RlT3JpZ2luX2gKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yQ2hhaW4oR2V0QgogI2VuZGlmCiB9CiAKLUdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVpZCkKK0dldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJ
bmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVpZCkKIHsK
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwog
ICAgIApAQCAtMTEzLDI4ICsxMTMsMjMgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURf
UEFSQU0odWlkKTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0g
ICAgaWYgKCFwcm9maWxlZEJsb2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQorICAgIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUlu
ZGV4KSk7CisgICAgaWYgKCFzdHViSW5mbyB8fCAhc3R1YkluZm8tPnNlZW4pCiAgICAgICAgIHJl
dHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHVpZCk7
CiAgICAgCi0gICAgLy8gRmlyc3QgY2hlY2sgaWYgaXQgbWFrZXMgZWl0aGVyIGNhbGxzLCBpbiB3
aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUgc3VwZXIgY2FyZWZ1bCwgb3IKLSAgICAvLyBpZiBpdCdz
IG5vdCBzZXQgYXQgYWxsLCBpbiB3aGljaCBjYXNlIHdlIHB1bnQuCi0gICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRl
eCk7Ci0gICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21M
TEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQpOwotICAgIAotICAgIGlmIChz
dHViSW5mby5yZXNldEJ5R0MpCisgICAgaWYgKHN0dWJJbmZvLT5yZXNldEJ5R0MpCiAgICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIHRydWUpOwogCiAgICAgUG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBsaXN0OwogICAgIGludCBsaXN0U2l6ZTsKLSAgICBz
d2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKKyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGZfbGlzdDoKLSAgICAgICAg
bGlzdCA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0LnN0cnVjdHVyZUxpc3Q7Ci0gICAgICAg
IGxpc3RTaXplID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3QubGlzdFNpemU7CisgICAgICAg
IGxpc3QgPSBzdHViSW5mby0+dS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsKKyAgICAg
ICAgbGlzdFNpemUgPSBzdHViSW5mby0+dS5nZXRCeUlkU2VsZkxpc3QubGlzdFNpemU7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90b19saXN0OgotICAgICAg
ICBsaXN0ID0gc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3Q7Ci0gICAg
ICAgIGxpc3RTaXplID0gc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0Lmxpc3RTaXplOworICAg
ICAgICBsaXN0ID0gc3R1YkluZm8tPnUuZ2V0QnlJZFByb3RvTGlzdC5zdHJ1Y3R1cmVMaXN0Owor
ICAgICAgICBsaXN0U2l6ZSA9IHN0dWJJbmZvLT51LmdldEJ5SWRQcm90b0xpc3QubGlzdFNpemU7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGxpc3QgPSAwOwpAQCAtMTUz
LDEyICsxNDgsMTIgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgIC8vIEZpbmFsbHkgZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZlIGFuIGFjY2VzcyBzdHJh
dGVneS4KICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKICAgICByZXN1bHQubV93YXNTZWVuSW5K
SVQgPSB0cnVlOyAvLyBUaGlzIGlzIGludGVyZXN0aW5nIGZvciBieXRlY29kZSBkdW1waW5nIG9u
bHkuCi0gICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CisgICAgc3dpdGNoIChzdHVi
SW5mby0+YWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgogICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQpOwog
ICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjogewotICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVj
dHVyZS5nZXQoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby0+dS5n
ZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzSWdub3JlZDsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwogICAgICAg
ICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKQEAgLTIxNCwy
NCArMjA5LDI0IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAg
ICB9CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90bzogewotICAgICAg
ICBpZiAoIXN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvLmlzRGlyZWN0KQorICAgICAgICBpZiAoIXN0
dWJJbmZvLT51LmdldEJ5SWRQcm90by5pc0RpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBHZXRC
eUlkU3RhdHVzKE1ha2VzQ2FsbHMsIHRydWUpOwogICAgICAgICByZXN1bHQubV9jaGFpbiA9IGFk
b3B0UmVmKG5ldyBJbnRlbmRlZFN0cnVjdHVyZUNoYWluKAogICAgICAgICAgICAgcHJvZmlsZWRC
bG9jaywKLSAgICAgICAgICAgIHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCksCi0gICAgICAgICAgICBzdHViSW5mby51LmdldEJ5SWRQcm90by5wcm90b3R5
cGVTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgIHN0dWJJbmZvLT51LmdldEJ5SWRQcm90
by5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgc3R1YkluZm8tPnUuZ2V0
QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBjb21wdXRlRm9y
Q2hhaW4ocmVzdWx0LCBwcm9maWxlZEJsb2NrLCB1aWQpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjogewotICAgICAgICBp
ZiAoIXN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmlzRGlyZWN0KQorICAgICAgICBpZiAoIXN0dWJJ
bmZvLT51LmdldEJ5SWRDaGFpbi5pc0RpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKE1ha2VzQ2FsbHMsIHRydWUpOwogICAgICAgICByZXN1bHQubV9jaGFpbiA9IGFkb3B0
UmVmKG5ldyBJbnRlbmRlZFN0cnVjdHVyZUNoYWluKAogICAgICAgICAgICAgcHJvZmlsZWRCbG9j
aywKLSAgICAgICAgICAgIHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1
cmUuZ2V0KCksCi0gICAgICAgICAgICBzdHViSW5mby51LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQo
KSwKLSAgICAgICAgICAgIHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmNvdW50KSk7CisgICAgICAg
ICAgICBzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSwK
KyAgICAgICAgICAgIHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQoKSwKKyAgICAg
ICAgICAgIHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jb3VudCkpOwogICAgICAgICBjb21wdXRl
Rm9yQ2hhaW4ocmVzdWx0LCBwcm9maWxlZEJsb2NrLCB1aWQpOwogICAgICAgICBicmVhazsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmgJKHJldmlzaW9uIDE1NzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5m
by5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzAsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxlKSA9PSAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQp
KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2Rl
QmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0
YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgU3R1YkluZm9NYXAmIG1h
cCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKTsKICAgICBzdGF0aWMg
R2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKFZNJiwgU3RydWN0dXJlKiwgU3RyaW5nSW1wbCogdWlk
KTsKICAgICAKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5j
cHAJKHJldmlzaW9uIDE1NzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAjZW5kaWYKIH0KIAotUHV0QnlJZFN0
YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKQorUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3R1Yklu
Zm9NYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKQogewog
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAg
ICAgCkBAIC04OSwzMiArODksMjkgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKAogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFS
QU0odWlkKTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAg
aWYgKCFwcm9maWxlZEJsb2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQotICAgICAgICBy
ZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQp
OwotICAgIAogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRl
Y29kZUluZGV4KSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwg
MCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgCi0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRleCk7Ci0gICAg
aWYgKCFzdHViSW5mby5zZWVuKQorICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1h
cC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgaWYgKCFzdHViSW5mbyB8fCAh
c3R1YkluZm8tPnNlZW4pCiAgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHVpZCk7CiAgICAgCi0gICAgaWYgKHN0dWJJbmZvLnJlc2V0
QnlHQykKKyAgICBpZiAoc3R1YkluZm8tPnJlc2V0QnlHQykKICAgICAgICAgcmV0dXJuIFB1dEJ5
SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAKLSAgICBz
d2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKKyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6CiAgICAgICAgIC8vIElmIHRoZSBKSVQg
c2F3IGl0IGJ1dCBkaWRuJ3Qgb3B0aW1pemUgaXQsIHRoZW4gYXNzdW1lIHRoYXQgdGhpcyB0YWtl
cyBzbG93IHBhdGguCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgs
IDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRf
YnlfaWRfcmVwbGFjZTogewogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPQotICAgICAg
ICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXRD
b25jdXJyZW50bHkoCisgICAgICAgICAgICBzdHViSW5mby0+dS5wdXRCeUlkUmVwbGFjZS5iYXNl
T2JqZWN0U3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAgICAgICAgICAgICAgICAgKnByb2Zp
bGVkQmxvY2stPnZtKCksIHVpZCk7CiAgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkp
IHsKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNp
bXBsZVJlcGxhY2UsCi0gICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5i
YXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLT51LnB1
dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksCiAgICAgICAgICAgICAgICAg
MCwgMCwKICAgICAgICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9CkBAIC0xMjMsMTggKzEy
MCwxOCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAg
IAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNl
IGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKLSAgICAgICAgQVNTRVJUKHN0
dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBBU1NFUlQoc3R1Yklu
Zm8tPnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRj
aHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSAKLSAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0
dXJlLT5nZXRDb25jdXJyZW50bHkoCisgICAgICAgICAgICBzdHViSW5mby0+dS5wdXRCeUlkVHJh
bnNpdGlvbi5zdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSgKICAgICAgICAgICAgICAgICAqcHJv
ZmlsZWRCbG9jay0+dm0oKSwgdWlkKTsKICAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0
KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAg
U2ltcGxlVHJhbnNpdGlvbiwKLSAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRUcmFu
c2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLmdldCgpLAotICAgICAgICAgICAgICAgIHN0dWJJbmZv
LnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLmdldCgpLAotICAgICAgICAgICAgICAgIHN0
dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4gPyBhZG9wdFJlZihuZXcgSW50ZW5kZWRT
dHJ1Y3R1cmVDaGFpbigKLSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgc3R1Yklu
Zm8udS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS5nZXQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5nZXQoKSkpIDog
MCwKKyAgICAgICAgICAgICAgICBzdHViSW5mby0+dS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91
c1N0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAgICAgICBzdHViSW5mby0+dS5wdXRCeUlkVHJh
bnNpdGlvbi5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgc3R1YkluZm8tPnUucHV0
QnlJZFRyYW5zaXRpb24uY2hhaW4gPyBhZG9wdFJlZihuZXcgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFp
bigKKyAgICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8tPnUucHV0QnlJ
ZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLT51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluLmdldCgpKSkgOiAwLAogICAgICAg
ICAgICAgICAgIG9mZnNldCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDE1
NzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludGVuZGVkU3Ry
dWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQo
KG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09
IChtX29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBQ
dXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCwgU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9y
KENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5n
SW1wbCogdWlkKTsKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3Qp
OwogICAgIAogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgJKHJldmlzaW9uIDE1NzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOTQsMTUg
KzI5NCwxMiBAQCBzdHJ1Y3QgU3RydWN0dXJlU3R1YkluZm8gewogICAgIFJlZlB0cjxXYXRjaHBv
aW50c09uU3RydWN0dXJlU3R1YkluZm8+IHdhdGNocG9pbnRzOwogfTsKIAotaW5saW5lIHZvaWQq
IGdldFN0cnVjdHVyZVN0dWJJbmZvUmV0dXJuTG9jYXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0
cnVjdHVyZVN0dWJJbmZvKQoraW5saW5lIENvZGVPcmlnaW4gZ2V0U3RydWN0dXJlU3R1YkluZm9D
b2RlT3JpZ2luKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHJ1Y3R1cmVTdHViSW5mbykKIHsKLSAgICBy
ZXR1cm4gc3RydWN0dXJlU3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRk
cmVzcygpOworICAgIHJldHVybiBzdHJ1Y3R1cmVTdHViSW5mby5jb2RlT3JpZ2luOwogfQogCi1p
bmxpbmUgdW5zaWduZWQgZ2V0U3RydWN0dXJlU3R1YkluZm9CeXRlY29kZUluZGV4KFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHJ1Y3R1cmVTdHViSW5mbykKLXsKLSAgICByZXR1cm4gc3RydWN0dXJlU3R1
YkluZm8tPmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKLX0KK3R5cGVkZWYgSGFzaE1hcDxDb2Rl
T3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyo+IFN0dWJJbmZvTWFwOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHJldmlzaW9uIDE1NzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU4LDYgKzEwNTgs
OCBAQCBwcml2YXRlOgogICAgICAgICAvLyBjb2RlIGJsb2NrIGhhZCBnYXRoZXJlZC4KICAgICAg
ICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIgbV9sYXp5T3BlcmFuZHM7CiAgICAgICAg
IAorICAgICAgICBTdHViSW5mb01hcCBtX3N0dWJJbmZvczsKKyAgICAgICAgCiAgICAgICAgIC8v
IERpZCB3ZSBzZWUgYW55IHJldHVybnM/IFdlIG5lZWQgdG8gaGFuZGxlIHRoZSAodW5jb21tb24g
YnV0IG5lY2Vzc2FyeSkKICAgICAgICAgLy8gY2FzZSB3aGVyZSBhIHByb2NlZHVyZSB0aGF0IGRv
ZXMgbm90IHJldHVybiB3YXMgaW5saW5lZC4KICAgICAgICAgYm9vbCBtX2RpZFJldHVybjsKQEAg
LTI0MzksNyArMjQ0MSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIAogICAgICAgICAgICAgU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5p
ZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwogICAgICAgICAgICAgR2V0QnlJZFN0YXR1
cyBnZXRCeUlkU3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4LCB1
aWQpOworICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywg
bV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsCisgICAgICAgICAgICAgICAgbV9jdXJyZW50
SW5kZXgsIHVpZCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoCiAg
ICAgICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlv
biwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlJZFN0YXR1cyk7CkBAIC0yNDU4LDkgKzI0
NjEsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICBib29sIGRpcmVjdCA9IGN1cnJlbnRJbnN0cnVjdGlvbls4XS51Lm9wZXJhbmQ7CiAKICAg
ICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJZFN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLAotICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4LAotICAgICAgICAgICAgICAgIG1f
Z3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CisgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX3N0
dWJJbmZvcywKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCwgbV9ncmFwaC5pZGVudGlm
aWVycygpW2lkZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIGJvb2wgY2FuQ291bnRBc0lu
bGluZWQgPSB0cnVlOwogICAgICAgICAgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2V0KCkpIHsK
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CkBAIC0zMzM1LDYgKzMz
MzcsMTIgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgICAg
ICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAg
ICAgICAgIG1fbGF6eU9wZXJhbmRzLmluaXRpYWxpemUobG9ja2VyLCBtX3Byb2ZpbGVkQmxvY2st
PmxhenlPcGVyYW5kVmFsdWVQcm9maWxlcygpKTsKICAgICAgICAgbV9leGl0UHJvZmlsZS5pbml0
aWFsaXplKGxvY2tlciwgcHJvZmlsZWRCbG9jay0+ZXhpdFByb2ZpbGUoKSk7CisgICAgICAgIAor
ICAgICAgICAvLyBXZSBkbyB0aGlzIHdoaWxlIGhvbGRpbmcgdGhlIGxvY2sgYmVjYXVzZSB3ZSB3
YW50IHRvIGVuY291cmFnZSBTdHJ1Y3R1cmVTdHViSW5mbydzCisgICAgICAgIC8vIHRvIGJlIHBv
dGVudGlhbGx5IGFkZGVkIHRvIG9wZXJhdGlvbnMgYW5kIGJlY2F1c2UgdGhlIHByb2ZpbGVkIGJs
b2NrIGNvdWxkIGJlIGluIHRoZQorICAgICAgICAvLyBtaWRkbGUgb2YgTExJbnQtPkpJVCB0aWVy
LXVwIGluIHdoaWNoIGNhc2Ugd2Ugd291bGQgYmUgYWRkaW5nIHRoZSBpbmZvJ3MgcmlnaHQgbm93
LgorICAgICAgICBpZiAobV9wcm9maWxlZEJsb2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygp
KQorICAgICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mb01hcChsb2NrZXIsIG1f
c3R1YkluZm9zKTsKICAgICB9CiAgICAgCiAgICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE1NzY1OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjIsMTEgKzIyMiw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYWxscy5zaXplKCk7ICsraSkKICAgICAg
ICAgbGlua0J1ZmZlci5saW5rKG1fY2FsbHNbaV0ubV9jYWxsLCBtX2NhbGxzW2ldLm1fZnVuY3Rp
b24pOwogCi0gICAgbV9jb2RlQmxvY2stPnNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKG1f
cHJvcGVydHlBY2Nlc3Nlcy5zaXplKCkgKyBtX2lucy5zaXplKCkpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3Byb3BlcnR5QWNjZXNzZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
U3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8o
aSk7CisgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZvID0gKm1fcHJvcGVydHlBY2Nlc3Nl
c1tpXS5tX3N0dWJJbmZvOwogICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2Nh
dGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93
UGF0aEdlbmVyYXRvci0+Y2FsbCgpKTsKLSAgICAgICAgaW5mby5jb2RlT3JpZ2luID0gbV9wcm9w
ZXJ0eUFjY2Vzc2VzW2ldLm1fY29kZU9yaWdpbjsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9j
YXRpb24gPSBjYWxsUmV0dXJuTG9jYXRpb247CiAgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDaGVj
a0ltbVRvQ2FsbCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihsaW5rQnVmZmVyLmxvY2F0aW9u
T2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc3RydWN0dXJlSW1tKSwgY2FsbFJldHVybkxvY2F0
aW9uKTsKICAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1N0cnVjdENoZWNrID0gZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlv
bk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3N0cnVjdHVyZUNoZWNrKSk7CkBAIC0yMzksMzAg
KzIzNywxNSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAg
ICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5
QWNjZXNzZXNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkpOwogICAgICAgICBpbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0
dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0u
bV9kb25lKSk7CiAgICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IGRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9j
YXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7Ci0g
ICAgICAgIGluZm8ucGF0Y2guYmFzZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2Jhc2VH
UFI7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IG1f
cHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwotI2Vsc2UKLSAgICAgICAgaW5mby5wYXRj
aC52YWx1ZVRhZ0dQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlVGFnR1BSOwotICAg
ICAgICBpbmZvLnBhdGNoLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVH
UFI7Ci0jZW5kaWYKLSAgICAgICAgaW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzID0gbV9wcm9wZXJ0
eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lzdGVyczsKLSAgICAgICAgaW5mby5wYXRjaC5yZWdpc3Rl
cnNGbHVzaGVkID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fcmVnaXN0ZXJNb2RlID09IFByb3Bl
cnR5QWNjZXNzUmVjb3JkOjpSZWdpc3RlcnNGbHVzaGVkOwogICAgIH0KICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9pbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgU3RydWN0dXJlU3R1
YkluZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9wcm9wZXJ0eUFj
Y2Vzc2VzLnNpemUoKSArIGkpOworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgaW5mbyA9ICpt
X2luc1tpXS5tX3N0dWJJbmZvOwogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBqdW1wID0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKG1faW5zW2ldLm1fanVtcCk7CiAgICAgICAgIENvZGVMb2NhdGlv
bkNhbGwgY2FsbFJldHVybkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1faW5zW2ld
Lm1fc2xvd1BhdGhHZW5lcmF0b3ItPmNhbGwoKSk7Ci0gICAgICAgIGluZm8uY29kZU9yaWdpbiA9
IG1faW5zW2ldLm1fY29kZU9yaWdpbjsKICAgICAgICAgaW5mby5ob3RQYXRoQmVnaW4gPSBqdW1w
OwogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGxSZXR1cm5Mb2NhdGlvbjsK
ICAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlID0gZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1faW5z
W2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVsKCkpKTsKLSAgICAgICAgaW5mby5wYXRjaC5i
YXNlR1BSID0gbV9pbnNbaV0ubV9iYXNlR1BSOwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVlR1BS
ID0gbV9pbnNbaV0ubV9yZXN1bHRHUFI7Ci0gICAgICAgIGluZm8ucGF0Y2gudXNlZFJlZ2lzdGVy
cyA9IG1faW5zW2ldLm1fdXNlZFJlZ2lzdGVyczsKLSAgICAgICAgaW5mby5wYXRjaC5yZWdpc3Rl
cnNGbHVzaGVkID0gZmFsc2U7CiAgICAgfQotICAgIG1fY29kZUJsb2NrLT5zb3J0U3RydWN0dXJl
U3R1YkluZm9zKCk7CiAgICAgCiAgICAgbV9jb2RlQmxvY2stPnNldE51bWJlck9mQ2FsbExpbmtJ
bmZvcyhtX2pzQ2FsbHMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9q
c0NhbGxzLnNpemUoKTsgKytpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDM5ICs3OCwyMCBA
QCBzdHJ1Y3QgQ2FsbExpbmtSZWNvcmQgewogfTsKIAogc3RydWN0IFByb3BlcnR5QWNjZXNzUmVj
b3JkIHsKLSAgICBlbnVtIFJlZ2lzdGVyTW9kZSB7IFJlZ2lzdGVyc0ZsdXNoZWQsIFJlZ2lzdGVy
c0luVXNlIH07Ci0gICAgCi0jaWYgVVNFKEpTVkFMVUU2NCkKICAgICBQcm9wZXJ0eUFjY2Vzc1Jl
Y29yZCgKLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZUltbSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
b252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAorI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGxvYWRPclN0b3Jl
LAotICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCi0gICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lLAotICAgICAgICBpbnQ4X3QgYmFzZUdQUiwKLSAg
ICAgICAgaW50OF90IHZhbHVlR1BSLAotICAgICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKLSAgICAgICAgUmVnaXN0ZXJNb2RlIHJlZ2lzdGVyTW9kZSA9IFJlZ2lzdGVyc0lu
VXNlKQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgK
LSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RGF0YUxhYmVsUHRyIHN0cnVjdHVyZUltbSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNo
YWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0
aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsQ29tcGFjdCB0YWdMb2FkT3JTdG9yZSwKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbENvbXBhY3QgcGF5bG9hZExvYWRPclN0b3JlLAorI2VuZGlmCiAgICAgICAg
IFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aEdlbmVyYXRvciwKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIGRvbmUsCi0gICAgICAgIGludDhfdCBiYXNlR1BSLAotICAgICAgICBpbnQ4
X3QgdmFsdWVUYWdHUFIsCi0gICAgICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIFJlZ2lzdGVyTW9kZSByZWdpc3Rl
ck1vZGUgPSBSZWdpc3RlcnNJblVzZSkKLSNlbmRpZgotICAgICAgICA6IG1fY29kZU9yaWdpbihj
b2RlT3JpZ2luKQotICAgICAgICAsIG1fc3RydWN0dXJlSW1tKHN0cnVjdHVyZUltbSkKKyAgICAg
ICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQorICAgICAgICA6IG1fc3RydWN0dXJlSW1t
KHN0cnVjdHVyZUltbSkKICAgICAgICAgLCBtX3N0cnVjdHVyZUNoZWNrKHN0cnVjdHVyZUNoZWNr
KQogICAgICAgICAsIG1fcHJvcGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2FkKQog
I2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xMjEsMTcgKzEwMiwxMCBAQCBzdHJ1Y3QgUHJvcGVydHlB
Y2Nlc3NSZWNvcmQgewogI2VuZGlmCiAgICAgICAgICwgbV9zbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aEdlbmVyYXRvcikKICAgICAgICAgLCBtX2RvbmUoZG9uZSkKLSAgICAgICAgLCBtX2Jhc2VH
UFIoYmFzZUdQUikKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAsIG1fdmFsdWVUYWdH
UFIodmFsdWVUYWdHUFIpCi0jZW5kaWYKLSAgICAgICAgLCBtX3ZhbHVlR1BSKHZhbHVlR1BSKQot
ICAgICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQotICAgICAgICAsIG1fcmVn
aXN0ZXJNb2RlKHJlZ2lzdGVyTW9kZSkKKyAgICAgICAgLCBtX3N0dWJJbmZvKHN0dWJJbmZvKQog
ICAgIHsKICAgICB9CiAKLSAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdpbjsKICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsUHRyIG1fc3RydWN0dXJlSW1tOwogICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG1fc3RydWN0dXJlQ2hlY2s7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkNv
bnZlcnRpYmxlTG9hZExhYmVsIG1fcHJvcGVydHlTdG9yYWdlTG9hZDsKQEAgLTE0MywzNSArMTE3
LDIyIEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAjZW5kaWYKICAgICBTbG93UGF0
aEdlbmVyYXRvciogbV9zbG93UGF0aEdlbmVyYXRvcjsKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbV9kb25lOwotICAgIGludDhfdCBtX2Jhc2VHUFI7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICBpbnQ4X3QgbV92YWx1ZVRhZ0dQUjsKLSNlbmRpZgotICAgIGludDhfdCBtX3ZhbHVlR1BS
OwotICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKLSAgICBSZWdpc3Rlck1vZGUgbV9y
ZWdpc3Rlck1vZGU7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87CiB9OwogCiBz
dHJ1Y3QgSW5SZWNvcmQgewogICAgIEluUmVjb3JkKAotICAgICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGp1bXAsCi0gICAgICAgIFNsb3dQ
YXRoR2VuZXJhdG9yKiBzbG93UGF0aEdlbmVyYXRvciwgaW50OF90IGJhc2VHUFIsIGludDhfdCBy
ZXN1bHRHUFIsCi0gICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQotICAg
ICAgICA6IG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQotICAgICAgICAsIG1fanVtcChqdW1wKQor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBqdW1wLCBTbG93UGF0aEdlbmVy
YXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCisgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbykKKyAgICAgICAgOiBtX2p1bXAoanVtcCkKICAgICAgICAgLCBtX3Nsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoR2VuZXJhdG9yKQotICAgICAgICAsIG1fYmFzZUdQUihiYXNlR1BSKQotICAg
ICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQUikKLSAgICAgICAgLCBtX3VzZWRSZWdpc3RlcnMo
dXNlZFJlZ2lzdGVycykKKyAgICAgICAgLCBtX3N0dWJJbmZvKHN0dWJJbmZvKQogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW47CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlBhdGNoYWJsZUp1bXAgbV9qdW1wOwogICAgIFNsb3dQYXRoR2VuZXJhdG9yKiBtX3Nsb3dQ
YXRoR2VuZXJhdG9yOwotICAgIGludDhfdCBtX2Jhc2VHUFI7Ci0gICAgaW50OF90IG1fcmVzdWx0
R1BSOwotICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKKyAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyogbV9zdHViSW5mbzsKIH07CiAKIC8vID09PSBKSVRDb21waWxlciA9PT0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5Nyw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlVUludDMKIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
VGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIs
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSkKIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2ppdC5jb2RlQmxvY2so
KS0+YWRkU3R1YkluZm8oKTsKKyAgICAKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0
cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1
cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6
Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6VHJ1c3Rl
ZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSkpOwogICAgIApA
QCAtMjExLDcgKzIxMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29k
ZU8KICAgICAgICAgaWYgKCFzbG93UGF0aFRhcmdldC5pc1NldCgpKSB7CiAgICAgICAgICAgICBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVDaGVjay5t
X2p1bXAsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLAorICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIHN0dWJJbmZv
LAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KEpTVmFsdWU6OkNlbGxUYWcp
LCBiYXNlUGF5bG9hZEdQUiwKICAgICAgICAgICAgICAgICBpZGVudGlmaWVyVUlEKGlkZW50aWZp
ZXJOdW1iZXIpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTIyMCw3ICsyMjIsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplLAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0
UGF5bG9hZEdQUiksCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCBy
ZXN1bHRQYXlsb2FkR1BSKSwgc3R1YkluZm8sCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNWYWx1ZTo6Q2VsbFRhZyksIGJhc2VQYXlsb2FkR1BSLAogICAgICAgICAgICAg
ICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwogICAgICAgICB9CkBAIC0yMjgs
MzAgKzIzMCw0MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAg
ICAgICAgIGlmICghc2xvd1BhdGhUYXJnZXQuaXNTZXQoKSkgewogICAgICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc3RydWN0dXJlQ2hlY2subV9qdW1w
LCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgYmFzZVRhZ0dQUk9yTm9uZSwg
YmFzZVBheWxvYWRHUFIsCi0gICAgICAgICAgICAgICAgaWRlbnRpZmllclVJRChpZGVudGlmaWVy
TnVtYmVyKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1
bHRQYXlsb2FkR1BSKSwgc3R1YkluZm8sIGJhc2VUYWdHUFJPck5vbmUsCisgICAgICAgICAgICAg
ICAgYmFzZVBheWxvYWRHUFIsIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNl
czsKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc3RydWN0dXJlQ2hlY2subV9qdW1wKTsK
ICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgICAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgYmFzZVRhZ0dQUk9yTm9uZSwgYmFz
ZVBheWxvYWRHUFIsCi0gICAgICAgICAgICAgICAgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVt
YmVyKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQ
YXlsb2FkR1BSKSwgc3R1YkluZm8sIGJhc2VUYWdHUFJPck5vbmUsCisgICAgICAgICAgICAgICAg
YmFzZVBheWxvYWRHUFIsIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwogICAgICAg
ICB9CiAgICAgfQorICAgIFJlZ2lzdGVyU2V0IGN1cnJlbnRseVVzZWRSZWdpc3RlcnMgPSB1c2Vk
UmVnaXN0ZXJzKCk7CisgICAgQVNTRVJUKGN1cnJlbnRseVVzZWRSZWdpc3RlcnMuZ2V0KGJhc2VQ
YXlsb2FkR1BSKSk7CisgICAgQVNTRVJUKGN1cnJlbnRseVVzZWRSZWdpc3RlcnMuZ2V0KHJlc3Vs
dFRhZ0dQUikpOworICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldChyZXN1bHRQ
YXlsb2FkR1BSKSk7CisgICAgCisgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
OworICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihiYXNl
UGF5bG9hZEdQUik7CisgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8
aW50OF90PihyZXN1bHRQYXlsb2FkR1BSKTsKKyAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVUYWdH
UFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJlc3VsdFRhZ0dQUik7CisgICAgc3R1YkluZm8tPnBh
dGNoLnVzZWRSZWdpc3RlcnMgPSBjdXJyZW50bHlVc2VkUmVnaXN0ZXJzOworICAgIHN0dWJJbmZv
LT5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gc3BpbGxNb2RlICE9IE5lZWRUb1NwaWxsOworCiAg
ICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3Jk
KAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVD
aGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKKyAgICAgICAgICAgIHN0cnVjdHVyZVRvQ29tcGFy
ZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICB0YWdM
b2FkV2l0aFBhdGNoLCBwYXlsb2FkTG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksIGRvbmVM
YWJlbCwKLSAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLCBzYWZl
Q2FzdDxpbnQ4X3Q+KHJlc3VsdFRhZ0dQUiksCi0gICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+
KHJlc3VsdFBheWxvYWRHUFIpLCB1c2VkUmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBzcGlsbE1v
ZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzSW5Vc2Ug
OiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOworICAgICAgICAgICAg
c3R1YkluZm8pKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aC5yZWxlYXNlKCkp
OwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdmFsdWVUYWdHUFIsIEdQUlJl
ZyB2YWx1ZVBheWxvYWRHUFIsIEVkZ2UgdmFsdWVVc2UsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kIHB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dQYXRoVGFyZ2V0KQogeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1f
aml0LmNvZGVCbG9jaygpLT5hZGRTdHViSW5mbygpOworICAgIAogICAgIEpJVENvbXBpbGVyOjpE
YXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVyOjpQYXRjaGFi
bGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBheWxvYWRH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENv
bXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50
ZXIpKSk7CiAKQEAgLTI2Miw3ICsyNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQ
dXRCeUlkKENvZGVPCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHBheWxvYWRTdG9yZVdp
dGhQYXRjaCA9IG1faml0LnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlUGF5bG9h
ZEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogCiAgICAgSklUQ29tcGls
ZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7Ci0gICAgVl9KSVRPcGVyYXRpb25f
RUpKSSBvcHRpbWl6ZWRDYWxsOworICAgIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3B0aW1pemVk
Q2FsbDsKICAgICBpZiAobV9qaXQuc3RyaWN0TW9kZUZvcihtX2N1cnJlbnROb2RlLT5jb2RlT3Jp
Z2luKSkgewogICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICBvcHRp
bWl6ZWRDYWxsID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwpAQCAtMjc3
LDE0ICsyOTEsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwog
ICAgIE93blB0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CiAgICAgaWYgKCFzbG93UGF0
aFRhcmdldC5pc1NldCgpKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAg
ICAgICAgICAgc3RydWN0dXJlQ2hlY2subV9qdW1wLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jl
c3VsdCwgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwKLSAgICAgICAgICAgIGJhc2VQYXls
b2FkR1BSLCBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgIHN0
cnVjdHVyZUNoZWNrLm1fanVtcCwgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHN0dWJJ
bmZvLCB2YWx1ZVRhZ0dQUiwKKyAgICAgICAgICAgIHZhbHVlUGF5bG9hZEdQUiwgYmFzZVBheWxv
YWRHUFIsIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQoc3RydWN0dXJlQ2hlY2subV9qdW1wKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChzbG93UGF0aFRhcmdldCk7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgdmFsdWVU
YWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0
aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHN0dWJJbmZvLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2Fk
R1BSLAogICAgICAgICAgICAgYmFzZVBheWxvYWRHUFIsIGlkZW50aWZpZXJVSUQoaWRlbnRpZmll
ck51bWJlcikpOwogICAgIH0KICAgICBSZWdpc3RlclNldCBjdXJyZW50bHlVc2VkUmVnaXN0ZXJz
ID0gdXNlZFJlZ2lzdGVycygpOwpAQCAtMjkyLDE0ICszMDYsMjAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0
ZXJzLmdldChiYXNlUGF5bG9hZEdQUikpOwogICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0
ZXJzLmdldCh2YWx1ZVRhZ0dQUikpOwogICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJz
LmdldCh2YWx1ZVBheWxvYWRHUFIpKTsKKworICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gY29k
ZU9yaWdpbjsKKyAgICBzdHViSW5mby0+cGF0Y2guYmFzZUdQUiA9IHN0YXRpY19jYXN0PGludDhf
dD4oYmFzZVBheWxvYWRHUFIpOworICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0YXRp
Y19jYXN0PGludDhfdD4odmFsdWVQYXlsb2FkR1BSKTsKKyAgICBzdHViSW5mby0+cGF0Y2gudmFs
dWVUYWdHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlVGFnR1BSKTsKKyAgICBzdHViSW5m
by0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IGN1cnJlbnRseVVzZWRSZWdpc3RlcnM7CisgICAgc3R1
YkluZm8tPnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSBmYWxzZTsKKwogICAgIG1faml0LmFkZFBy
b3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKLSAgICAgICAgICAg
IGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5
U3RvcmFnZUxvYWQsCisgICAgICAgICAgICBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNo
ZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFM
YWJlbENvbXBhY3QodGFnU3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksCiAgICAgICAgICAgICBKSVRD
b21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChwYXlsb2FkU3RvcmVXaXRoUGF0Y2gubGFiZWwoKSks
Ci0gICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+
KGJhc2VQYXlsb2FkR1BSKSwKLSAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4odmFsdWVUYWdH
UFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlUGF5bG9hZEdQUiksCi0gICAgICAgICAgICB1c2Vk
UmVnaXN0ZXJzKCkpKTsKKyAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHN0
dWJJbmZvKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNiArMjA5
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVVSW50MwogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxN
b2RlKQogeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1faml0LmNvZGVCbG9j
aygpLT5hZGRTdHViSW5mbygpOworICAgIAogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIg
c3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVyOjpQYXRjaGFibGVKdW1wIHN0cnVj
dHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpKTsKICAgICAKQEAgLTIy
MSwyNyArMjIzLDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8K
ICAgICBPd25QdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlmICghc2xvd1Bh
dGhUYXJnZXQuaXNTZXQoKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAg
ICAgICAgICAgIHN0cnVjdHVyZUNoZWNrLm1fanVtcCwgdGhpcywgb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplLCByZXN1bHRHUFIsIGJhc2VHUFIsCisgICAgICAgICAgICBzdHJ1Y3R1cmVDaGVjay5t
X2p1bXAsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0R1BSLCBzdHViSW5m
bywgYmFzZUdQUiwKICAgICAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlciks
IHNwaWxsTW9kZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0
IHNsb3dDYXNlczsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzdHJ1Y3R1cmVDaGVjay5tX2p1
bXApOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0R1BSLCBiYXNlR1BSLAorICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdEdQUiwgc3R1
YkluZm8sIGJhc2VHUFIsCiAgICAgICAgICAgICBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1i
ZXIpLCBzcGlsbE1vZGUpOwogICAgIH0KKyAgICBSZWdpc3RlclNldCBjdXJyZW50bHlVc2VkUmVn
aXN0ZXJzID0gdXNlZFJlZ2lzdGVycygpOworICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0
ZXJzLmdldChiYXNlR1BSKSk7CisgICAgQVNTRVJUKGN1cnJlbnRseVVzZWRSZWdpc3RlcnMuZ2V0
KHJlc3VsdEdQUikpOworICAgIAorICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gY29kZU9yaWdp
bjsKKyAgICBzdHViSW5mby0+cGF0Y2guYmFzZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4oYmFz
ZUdQUik7CisgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90
PihyZXN1bHRHUFIpOworICAgIHN0dWJJbmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJzID0gY3VycmVu
dGx5VXNlZFJlZ2lzdGVyczsKKyAgICBzdHViSW5mby0+cGF0Y2gucmVnaXN0ZXJzRmx1c2hlZCA9
IHNwaWxsTW9kZSAhPSBOZWVkVG9TcGlsbDsKKwogICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNz
KAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKLSAgICAgICAgICAgIGNvZGVPcmlnaW4s
IHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQs
IGxvYWRXaXRoUGF0Y2gsCi0gICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBz
YWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdEdQUiksCi0g
ICAgICAgICAgICB1c2VkUmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBzcGlsbE1vZGUgPT0gTmVl
ZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzSW5Vc2UgOiBQcm9wZXJ0
eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOworICAgICAgICAgICAgc3RydWN0dXJl
VG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgbG9hZFdpdGhQ
YXRjaCwKKyAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHN0dWJJbmZvKSk7
CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsKIH0KIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQ
UlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIsIEVkZ2UgdmFsdWVVc2UsIEdQUlJlZyBzY3Jh
dGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kIHB1dEtpbmQsIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0KQogeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRTdHViSW5mbygpOwogICAgIAogICAgIEpJ
VENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBp
bGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNo
UHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2Vk
UG9pbnRlcikpKTsKQEAgLTI1NCw3ICsyNjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRQdXRCeUlkKENvZGVPCiAKICAgICBKSVRDb21waWxlcjo6TGFiZWwgZG9uZUxhYmVsID0gbV9q
aXQubGFiZWwoKTsKICAgICAKLSAgICBWX0pJVE9wZXJhdGlvbl9FSkpJIG9wdGltaXplZENhbGw7
CisgICAgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcHRpbWl6ZWRDYWxsOwogICAgIGlmIChtX2pp
dC5zdHJpY3RNb2RlRm9yKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pKSB7CiAgICAgICAgIGlm
IChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgICAgIG9wdGltaXplZENhbGwgPSBvcGVyYXRp
b25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7CkBAIC0yNjksMjUgKzI4MCwzMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPCiAgICAgT3duUHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBpZiAoIXNsb3dQYXRoVGFyZ2V0LmlzU2V0KCkpIHsK
ICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzdHJ1Y3R1cmVD
aGVjay5tX2p1bXAsIHRoaXMsIG9wdGltaXplZENhbGwsIE5vUmVzdWx0LCB2YWx1ZUdQUiwgYmFz
ZUdQUiwKKyAgICAgICAgICAgIHN0cnVjdHVyZUNoZWNrLm1fanVtcCwgdGhpcywgb3B0aW1pemVk
Q2FsbCwgTm9SZXN1bHQsIHN0dWJJbmZvLCB2YWx1ZUdQUiwgYmFzZUdQUiwKICAgICAgICAgICAg
IGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoc3RydWN0dXJlQ2hlY2subV9qdW1wKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93
UGF0aFRhcmdldCk7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgdmFsdWVHUFIsIGJh
c2VHUFIsCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wdGltaXplZENhbGwsIE5vUmVz
dWx0LCBzdHViSW5mbywgdmFsdWVHUFIsIGJhc2VHUFIsCiAgICAgICAgICAgICBpZGVudGlmaWVy
VUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9CiAgICAgUmVnaXN0ZXJTZXQgY3VycmVudGx5
VXNlZFJlZ2lzdGVycyA9IHVzZWRSZWdpc3RlcnMoKTsKICAgICBjdXJyZW50bHlVc2VkUmVnaXN0
ZXJzLmNsZWFyKHNjcmF0Y2hHUFIpOwogICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJz
LmdldChiYXNlR1BSKSk7CiAgICAgQVNTRVJUKGN1cnJlbnRseVVzZWRSZWdpc3RlcnMuZ2V0KHZh
bHVlR1BSKSk7CisgICAgCisgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luOwor
ICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihiYXNlR1BS
KTsKKyAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZh
bHVlR1BSKTsKKyAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IGN1cnJlbnRseVVz
ZWRSZWdpc3RlcnM7CisgICAgc3R1YkluZm8tPnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSBmYWxz
ZTsKKyAgICAKICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlB
Y2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAorICAgICAgICAgICAgc3RydWN0
dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVs
KCkpLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLAotICAgICAgICAgICAgc2FmZUNhc3Q8aW50
OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90Pih2YWx1ZUdQUiksIGN1cnJlbnRseVVzZWRS
ZWdpc3RlcnMpKTsKKyAgICAgICAgICAgIHN0dWJJbmZvKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1NzY1OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NTEsNiArOTUxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlu
KE5vZGUqIG5vZAogICAgICAgICAgICAganNEeW5hbWljQ2FzdDxKU1N0cmluZyo+KHZhbHVlT2ZK
U0NvbnN0YW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOwogICAgICAgICBpZiAoc3RyaW5nICYm
IHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCkKICAgICAgICAgICAgICYmIHN0cmluZy0+dHJ5R2V0
VmFsdWVJbXBsKCktPmlzSWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkU3R1YkluZm8oKTsKKyAgICAg
ICAgICAgIAogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKQEAgLTk2MCwxMiArOTYyLDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbihOb2RlKiBub2QKICAgICAgICAgICAg
IAogICAgICAgICAgICAgT3duUHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKICAgICAgICAgICAgICAgICBqdW1wLm1fanVtcCwgdGhpcywgb3BlcmF0aW9uSW5P
cHRpbWl6ZSwKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVzdWx0
R1BSKSwgYmFzZUdQUiwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVzdWx0R1BSKSwgc3R1YkluZm8sIGJhc2VHUFIsCiAgICAgICAgICAgICAgICAgc3RyaW5nLT50
cnlHZXRWYWx1ZUltcGwoKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2ppdC5h
ZGRJbihJblJlY29yZCgKLSAgICAgICAgICAgICAgICBub2RlLT5jb2RlT3JpZ2luLCBqdW1wLCBz
bG93UGF0aC5nZXQoKSwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwKLSAgICAgICAgICAgICAg
ICBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdEdQUiksIHVzZWRSZWdpc3RlcnMoKSkpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IG5vZGUtPmNvZGVPcmln
aW47CisgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZUdQUiA9IHN0YXRpY19jYXN0PGlu
dDhfdD4oYmFzZUdQUik7CisgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBz
dGF0aWNfY2FzdDxpbnQ4X3Q+KHJlc3VsdEdQUik7CisgICAgICAgICAgICBzdHViSW5mby0+cGF0
Y2gudXNlZFJlZ2lzdGVycyA9IHVzZWRSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIHN0dWJJbmZv
LT5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIG1faml0LmFkZEluKEluUmVjb3JkKGp1bXAsIHNsb3dQYXRoLmdldCgpLCBzdHViSW5mbykp
OwogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGJhc2UudXNlKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTc2
NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMzIsMTQgKzEyMzIsMTQgQEAgcHVibGljOgogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihjZWxsKSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FQ0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwg
Y29uc3QgU3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgU3RyaW5nSW1wbCogdWlk
KQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQp
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxLCBTdHJpbmdJbXBsKiB1aWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBTdHJpbmdJbXBsKiB1aWQpCiAg
ICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1
c3RlZEltbVB0cih1aWQpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRURBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyKQpAQCAtMTM2Myw5ICsxMzYzLDkgQEAgcHVibGljOgogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0
cihwb2ludGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRUpKSSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
U3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24sIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBTdHJpbmdJbXBsKiB1aWQpCiAgICAgewotICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3Rl
ZEltbVB0cih1aWQpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHVpZCkp
OwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24p
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VKSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmcz
KQpAQCAtMTQ4OSwxOSArMTQ4OSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGNlbGwpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgY29uc3QgU3RyaW5nSW1wbCogdWlkKQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJ
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFN0cmluZ0ltcGwqIHVp
ZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlk
KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQ
UlJlZyBhcmcxUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQog
ICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJC
SVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihz
dHViSW5mbyksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGludDMyX3QgYXJnMVRhZywgR1BSUmVnIGFy
ZzFQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBpbnQz
Ml90IGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQogICAgIHsK
LSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVN
TVlfQVJHIGFyZzFQYXlsb2FkLCBUcnVzdGVkSW1tMzIoYXJnMVRhZyksIFRydXN0ZWRJbW1QdHIo
dWlkKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBheWxvYWQsIFRydXN0ZWRJbW0zMihhcmcxVGFnKSwgVHJ1
c3RlZEltbVB0cih1aWQpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VE
QSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBGUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCkBAIC0xNjIxLDEzICsxNjIxLDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlf
QVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsK
ICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlv
bl9FSkpJIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BS
UmVnIGFyZzJQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBH
UFJSZWcgYXJnMlBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAjaWYgQ1BVKFNINCkK
ICAgICAgICAgLy8gV2UgaGF2ZSB0byBwdXQgdWlkIGluIHRoZSA0dGggYXJndW1lbnQgcmVnaXN0
ZXIgKHI3KSBhcyA2NC1iaXQgdmFsdWUgYXJnMiB3aWxsIGJlIHB1dCBvbiBzdGFjayBmb3Igc2g0
IGFyY2hpdGVjdXJlLgotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMVBheWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSwgYXJnMlBheWxvYWQsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBheWxvYWQsIGFy
ZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSwgYXJnMlBheWxvYWQsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSk7CiAjZWxzZQotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQ
YXlsb2FkLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIFRydXN0ZWRJbW1QdHIodWlk
KSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKHN0dWJJbmZvKSwgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAjZW5kaWYKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHJldmlz
aW9uIDE1NzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsMTUgQEAgcHVibGljOgogICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMyk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBU
cnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Mik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICB9CisKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJn
MSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMykKICAgICB7CiAgICAgICAg
IHJlc2V0Q2FsbEFyZ3VtZW50cygpOwpAQCAtMzkxLDYgKzQwMCw2MSBAQCBwdWJsaWM6CiAgICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3RlZEltbVB0ciBhcmc1
KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcg
YXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSwgVHJ1c3RlZEltbVB0
ciBhcmc2KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFk
ZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnNik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
R1BSUmVnIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1LCBUcnVzdGVkSW1tUHRyIGFyZzYpCisgICAg
eworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnNSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc2KTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRy
IGFyZzQpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRy
dXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnNCk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJn
MywgR1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKQEAg
LTEwNjUsNiArMTEyOSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgfQogCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFy
ZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAgICBtb3Zl
KGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7IC8vIEluIGNhc2UgYXJnMiBpcyBhcmd1bWVu
dEdQUjEuCisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAg
ICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKwog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczKQogICAg
IHsKICAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwpAQCAtMTEyNCw2
ICsxMTk2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMiwg
R1BSUmVnIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCisgICAg
eworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAg
IHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3Rl
ZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1
KQogICAgIHsKICAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwpA
QCAtMTMxMyw2ICsxMzkyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIpOwogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcg
YXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHNl
dHVwVHdvU3R1YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjM+KGFyZzIsIGFyZzMpOworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CisgICAgICAgIG1vdmUoYXJnNCwgR1BSSW5mbzo6YXJndW1lbnRHUFI0KTsKKyAgICAg
ICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwg
R1BSUmVnIGRlc3RCKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24g
MTU3NjU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00ODcsMjAgKzQ4NywyMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogI2VuZGlmCiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxh
dGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZvLCBMaW5rQnVm
ZmVyICZsaW5rQnVmZmVyKQorQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0
aW9uSW5mbzo6Y29weVRvU3R1YkluZm8oTGlua0J1ZmZlciAmbGlua0J1ZmZlcikKIHsKICAgICBB
U1NFUlQoYnl0ZWNvZGVJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpOwotICAgIGluZm8uY29kZU9yaWdpbiA9IENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCk7Ci0g
ICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY2FsbFJl
dHVybkxvY2F0aW9uKTsKKyAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IENvZGVPcmlnaW4oYnl0
ZWNvZGVJbmRleCk7CisgICAgc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZihjYWxsUmV0dXJuTG9jYXRpb24pOwogCi0gICAgaW5mby5wYXRjaC5kZWx0
YUNoZWNrSW1tVG9DYWxsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlVG9Db21wYXJlKSwgaW5mby5jYWxsUmV0
dXJuTG9jYXRpb24pOwotICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjayA9IE1h
Y3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9j
YXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihzdHJ1Y3R1cmVDaGVjaykpOworICAgIHN0dWJJ
bmZvLT5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlVG9Db21wYXJl
KSwgc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbik7CisgICAgc3R1YkluZm8tPnBhdGNoLmRl
bHRhQ2FsbFRvU3RydWN0Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihzdHJ1Y3R1cmVDaGVjaykpOwogICAgIAotICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93
Q2FzZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxs
UmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihjb2xkUGF0aEJlZ2luKSk7Ci0g
ICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0
aW9uT2YoZG9uZSkpOwotICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IE1h
Y3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9j
YXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CisgICAg
c3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlm
ZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihjb2xkUGF0aEJlZ2luKSk7CisgICAgc3R1YkluZm8tPnBhdGNoLmRl
bHRhQ2FsbFRvRG9uZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIo
c3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRvbmUp
KTsKKyAgICBzdHViSW5mby0+cGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IE1hY3JvQXNz
ZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2Nh
dGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQpKTsKICAgICAK
LSAgICBpbmZvLnBhdGNoLmJhc2VHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICBzdHViSW5mby0+
cGF0Y2guYmFzZUdQUiA9IEdQUkluZm86OnJlZ1QwOwogCiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJl
Z2lzdGVyczsKICAgICB1c2VkUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZWdUMCk7CkBAIC01MDgs
MzcgKzUwOCwzNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHViQ29tcGlsYXRpCiAj
aWYgVVNFKEpTVkFMVUU2NCkgLy8gSlNWQUxVRSBjYXNlcwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBHZXRCeUlkOgotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9y
U3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFi
ZWwpKTsKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QwOworICAg
ICAgICBzdHViSW5mby0+cGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1i
bGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlv
biwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7CisgICAgICAg
IHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QwOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFB1dEJ5SWQ6Ci0gICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9Mb2Fk
T3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaW5mby5j
YWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRM
YWJlbCkpOwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDE7Cisg
ICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlID0gTWFjcm9Bc3Nl
bWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKKyAgICAg
ICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDE7CiAgICAgICAgIHVz
ZWRSZWdpc3RlcnMuc2V0KEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
I2Vsc2UgLy8gSlNWQUxVRSBjYXNlcwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBH
ZXRCeUlkOgotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUgPSBN
YWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwyKSk7Ci0g
ICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBNYWNyb0Fz
c2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwxKSk7Ci0gICAgICAg
IGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKLSAgICAgICAgaW5mby5wYXRj
aC52YWx1ZVRhZ0dQUiA9IEdQUkluZm86OnJlZ1QxOworICAgICAgICBzdHViSW5mby0+cGF0Y2gu
ZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0
d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsMikpOworICAgICAgICBzdHViSW5mby0+cGF0Y2gu
ZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIu
bG9jYXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbDEpKTsKKyAgICAgICAgc3R1YkluZm8tPnBh
dGNoLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52
YWx1ZVRhZ0dQUiA9IEdQUkluZm86OnJlZ1QxOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChH
UFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHV0QnlJZDoKLSAgICAg
ICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6
OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1
ZmZlci5sb2NhdGlvbk9mKHB1dERpc3BsYWNlbWVudExhYmVsMikpOwotICAgICAgICBpbmZvLnBh
dGNoLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKHB1dERpc3BsYWNlbWVudExhYmVsMSkpOwotICAgICAgICBpbmZvLnBhdGNoLnZh
bHVlR1BSID0gR1BSSW5mbzo6cmVnVDI7Ci0gICAgICAgIGluZm8ucGF0Y2gudmFsdWVUYWdHUFIg
PSBHUFJJbmZvOjpyZWdUMzsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvVGFn
TG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0
dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNw
bGFjZW1lbnRMYWJlbDIpKTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvUGF5
bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0
RGlzcGxhY2VtZW50TGFiZWwxKSk7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9
IEdQUkluZm86OnJlZ1QyOworICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVUYWdHUFIgPSBH
UFJJbmZvOjpyZWdUMzsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDIp
OwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICNlbmRpZiAvLyBKU1ZBTFVFIGNhc2VzCiAgICAgCi0gICAgaW5mby5wYXRj
aC51c2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVyczsKLSAgICBpbmZvLnBhdGNoLnJlZ2lzdGVy
c0ZsdXNoZWQgPSB0cnVlOworICAgIHN0dWJJbmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJzID0gdXNl
ZFJlZ2lzdGVyczsKKyAgICBzdHViSW5mby0+cGF0Y2gucmVnaXN0ZXJzRmx1c2hlZCA9IHRydWU7
CiB9CiAKIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSklUQ29tcGlsYXRp
b25FZmZvcnQgZWZmb3J0KQpAQCAtNzMzLDkgKzczMyw4IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJ
VDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoaXRlci0+
ZnJvbSwgRnVuY3Rpb25QdHIoaXRlci0+dG8pKTsKICAgICB9CiAKLSAgICBtX2NvZGVCbG9jay0+
c2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MobV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9u
SW5mby5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb3BlcnR5QWNj
ZXNzQ29tcGlsYXRpb25JbmZvLnNpemUoKTsgKytpKQotICAgICAgICBtX3Byb3BlcnR5QWNjZXNz
Q29tcGlsYXRpb25JbmZvW2ldLmNvcHlUb1N0dWJJbmZvKG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVT
dHViSW5mbyhpKSwgcGF0Y2hCdWZmZXIpOworICAgICAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGls
YXRpb25JbmZvW2ldLmNvcHlUb1N0dWJJbmZvKHBhdGNoQnVmZmVyKTsKICAgICBtX2NvZGVCbG9j
ay0+c2V0TnVtYmVyT2ZCeVZhbEluZm9zKG1fYnlWYWxDb21waWxhdGlvbkluZm8uc2l6ZSgpKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5zaXpl
KCk7ICsraSkgewogICAgICAgICBDb2RlTG9jYXRpb25KdW1wIGJhZFR5cGVKdW1wID0gQ29kZUxv
Y2F0aW9uSnVtcChwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fYnlWYWxDb21waWxhdGlvbkluZm9b
aV0uYmFkVHlwZUp1bXApKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24g
MTU3NjU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTczLDYgKzE3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RGF0YUxhYmVsMzIgcHV0RGlzcGxhY2VtZW50TGFiZWwxOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsMzIgcHV0RGlzcGxhY2VtZW50TGFiZWwyOwogI2VuZGlmCisgICAg
ICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbzsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKCkKQEAgLTIzNiwxMCArMjM3LDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IHNsb3dDYXNlSW5mbyhNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgY29sZFBhdGhCZWdpbiwgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbCkKKyAgICAgICAgdm9pZCBzbG93Q2FzZUluZm8oTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIGNvbGRQYXRoQmVnaW4sIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwsIFN0
cnVjdHVyZVN0dWJJbmZvKiBpbmZvKQogICAgICAgICB7CiAgICAgICAgICAgICBjYWxsUmV0dXJu
TG9jYXRpb24gPSBjYWxsOwogICAgICAgICAgICAgdGhpcy0+Y29sZFBhdGhCZWdpbiA9IGNvbGRQ
YXRoQmVnaW47CisgICAgICAgICAgICBzdHViSW5mbyA9IGluZm87CiAgICAgICAgIH0KIAogICAg
ICAgICB2b2lkIHNsb3dDYXNlSW5mbyhNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsKQpAQCAtMjQ3
LDcgKzI0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgY2FsbFJldHVybkxvY2F0
aW9uID0gY2FsbDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgY29weVRvU3R1YkluZm8oU3Ry
dWN0dXJlU3R1YkluZm8mIGluZm8sIExpbmtCdWZmZXIgJnBhdGNoQnVmZmVyKTsKKyAgICAgICAg
dm9pZCBjb3B5VG9TdHViSW5mbyhMaW5rQnVmZmVyICZwYXRjaEJ1ZmZlcik7CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBCeVZhbENvbXBpbGF0aW9uSW5mbyB7CkBAIC03ODUsOSArNzg3LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUMsIGludCwgSlNDZWxsKik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUosIGludCwgR1BSUmVnKTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FSkksIGludCwgR1BSUmVnLCBTdHJp
bmdJbXBsKik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oV2l0
aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VTc2lKSSwgaW50LCBTdHJ1Y3R1cmVTdHViSW5m
byosIEdQUlJlZywgU3RyaW5nSW1wbCopOwogI2Vsc2UKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRUpJLCBp
bnQsIEdQUlJlZywgR1BSUmVnLCBTdHJpbmdJbXBsKik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VTc2lK
SSwgaW50LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZywgR1BSUmVnLCBTdHJpbmdJbXBsKik7
CiAjZW5kaWYKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FSklkYywgaW50LCBHUFJSZWcsIGNvbnN0IElkZW50aWZpZXIqKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkos
IGludCwgR1BSUmVnLCBHUFJSZWcpOwpAQCAtODE4LDkgKzgyMCw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRUpJZEpKLCBSZWdpc3RlcklELCBjb25zdCBJZGVudGlmaWVyKiwgUmVnaXN0
ZXJJRCwgUmVnaXN0ZXJJRCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpJLCBSZWdpc3RlcklE
LCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSwgU3RydWN0dXJlU3R1YkluZm8q
LCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CiAjZWxzZQotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkksIFJl
Z2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFN0cmluZ0ltcGwq
KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FU3NpSkpJLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQs
IFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFN0cmluZ0ltcGwqKTsKICNlbmRpZgogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkosIFJl
Z2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKWkosIFJlZ2lzdGVySUQsIGlu
dDMyX3QsIFJlZ2lzdGVySUQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgJKHJldmlzaW9uIDE1NzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDgsOSArMzA4LDkgQEAgQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkkgb3BlcmF0aW9u
LCBSZWdpc3RlcklEIHJlZ09wMSwgUmVnaXN0ZXJJRCByZWdPcDIsIFN0cmluZ0ltcGwqIHVpZCkK
K0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIFJlZ2lzdGVySUQgcmVnT3AxLCBSZWdpc3RlcklEIHJlZ09wMiwgU3RyaW5nSW1wbCogdWlk
KQogewotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShyZWdPcDEsIHJlZ09wMiwgVHJ1
c3RlZEltbVB0cih1aWQpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzdHViSW5mbyksIHJlZ09wMSwgcmVnT3AyLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwog
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAK
QEAgLTMyMCw5ICszMjAsOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJ
VDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsK
IH0KIAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRp
b24oSklUOjpXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgaW50
IGRzdCwgR1BSUmVnIGFyZzEsIFN0cmluZ0ltcGwqIHVpZCkKK0FMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpJVDo6V2l0aFByb2ZpbGVUYWcsIEpf
SklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIGludCBkc3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIFN0cmluZ0ltcGwqIHVpZCkKIHsKLSAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRy
dXN0ZWRJbW1QdHIodWlkKSk7CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUob3BlcmF0aW9uLCBkc3QpOwogfQogCkBAIC00
NjAsOSArNDYwLDkgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6Ogog
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChv
cGVyYXRpb24sIGRzdCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjpjYWxsT3BlcmF0aW9uKEpJVDo6V2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VK
SSBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQs
IFN0cmluZ0ltcGwqIHVpZCkKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklU
OjpjYWxsT3BlcmF0aW9uKEpJVDo6V2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VTc2lK
SSBvcGVyYXRpb24sIGludCBkc3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVn
IGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQogewotICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9h
ZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBU
cnVzdGVkSW1tUHRyKHVpZCkpOwogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG9wZXJhdGlvbiwgZHN0KTsKIH0KIApAQCAt
NTIwLDEzICs1MjAsMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OgogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9
CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VKSkkgb3BlcmF0aW9uLCBSZWdpc3RlcklEIHJlZ09wMVRhZywgUmVn
aXN0ZXJJRCByZWdPcDFQYXlsb2FkLCBSZWdpc3RlcklEIHJlZ09wMlRhZywgUmVnaXN0ZXJJRCBy
ZWdPcDJQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJh
dGlvbiwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBSZWdpc3RlcklEIHJlZ09wMVRhZywg
UmVnaXN0ZXJJRCByZWdPcDFQYXlsb2FkLCBSZWdpc3RlcklEIHJlZ09wMlRhZywgUmVnaXN0ZXJJ
RCByZWdPcDJQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAjaWYgQ1BVKFNINCkKICAgICAv
LyBXZSBoYXZlIHRvIHB1dCB1aWQgaW4gdGhlIDR0aCBhcmd1bWVudCByZWdpc3RlciAocjcpIGFz
IDY0LWJpdCB2YWx1ZSByZWdPcDIgd2lsbCBiZSBwdXQgb24gc3RhY2sgZm9yIHNoNCBhcmNoaXRl
Y3VyZS4KLSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUocmVnT3AxUGF5bG9hZCwgcmVn
T3AxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCksIHJlZ09wMlBheWxvYWQsIHJlZ09wMlRhZyk7Cisg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBy
ZWdPcDFQYXlsb2FkLCByZWdPcDFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSwgcmVnT3AyUGF5bG9h
ZCwgcmVnT3AyVGFnKTsKICNlbHNlCi0gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVB
QklfMzJCSVRfRFVNTVlfQVJHIHJlZ09wMVBheWxvYWQsIHJlZ09wMVRhZywgcmVnT3AyUGF5bG9h
ZCwgcmVnT3AyVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgcmVnT3AxUGF5bG9hZCwgcmVnT3Ax
VGFnLCByZWdPcDJQYXlsb2FkLCByZWdPcDJUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAjZW5k
aWYKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgaW50MzJfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogICAgIHJldHVybiBtaXNzaW5nQXJnQ291bnQ7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1wbCogdWlkKQog
ewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwpAQCAtMTI0LDUxICsxMjQsNDYgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZh
bHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOwogfQogCi1KX0ZVTkNUSU9OX1dSQVBQRVJfV0lU
SF9SRVRVUk5fQUREUkVTU19FSkkob3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdCk7Ci1FbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3RXaXRoUmV0dXJu
QWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwq
IHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQorRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBs
KiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OwotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5n
ZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSk7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsK
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
YmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CiAKLSAgICBpZiAoYWNjZXNzVHlwZSA9
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKLSAgICAgICAg
YnVpbGRHZXRCeUlETGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCBzdHViSW5mbyk7
CisgICAgaWYgKGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8t
PmFjY2Vzc1R5cGUpKQorICAgICAgICBidWlsZEdldEJ5SURMaXN0KGV4ZWMsIGJhc2VWYWx1ZSwg
aWRlbnQsIHNsb3QsICpzdHViSW5mbyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CiAKLUpfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSShv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
ICAgICBJZGVudGlmaWVyIGlkZW50ID0gdWlkLT5pc0VtcHR5VW5pcXVlKCkgPyBJZGVudGlmaWVy
Ojpmcm9tKFByaXZhdGVOYW1lKHVpZCkpIDogSWRlbnRpZmllcih2bSwgdWlkKTsKLSAgICBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8o
cmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5n
ZXQoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlID09IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKSB7Ci0gICAgICAgIGlmIChz
dHViSW5mby5zZWVuKQotICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVl
LCBpZGVudCwgc2xvdCwgc3R1YkluZm8pOworICAgIGlmIChhY2Nlc3NUeXBlID09IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkgeworICAgICAgICBpZiAoc3R1
YkluZm8tPnNlZW4pCisgICAgICAgICAgICByZXBhdGNoR2V0QnlJRChleGVjLCBiYXNlVmFsdWUs
IGlkZW50LCBzbG90LCAqc3R1YkluZm8pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHVi
SW5mby5zZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKICAg
ICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUpfRlVOQ1RJ
T05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VDSShvcGVyYXRpb25Jbk9wdGltaXplKTsK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZVdpdGhSZXR1
cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBTdHJpbmdJbXBsKiBrZXks
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgSlNDZWxsKiBiYXNlLCBTdHJpbmdJbXBsKiBrZXkpCiB7CiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
ZXhlYyk7CkBAIC0xNzgsMjQgKzE3MywyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkluCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgfQogICAgIAotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMt
PmNvZGVCbG9jaygpLT5nZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBl
KTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCBrZXkpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UpOwogICAgIGJvb2wgcmVzdWx0ID0gYXNPYmplY3Qo
YmFzZSktPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7CiAgICAgCi0gICAgUkVM
RUFTRV9BU1NFUlQoYWNjZXNzVHlwZSA9PSBzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChhY2Nlc3NUeXBlID09IHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKICAgICAKLSAg
ICBpZiAoc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmVwYXRjaEluKGV4ZWMsIGJhc2UsIGlkZW50
LCByZXN1bHQsIHNsb3QsIHN0dWJJbmZvKTsKKyAgICBpZiAoc3R1YkluZm8tPnNlZW4pCisgICAg
ICAgIHJlcGF0Y2hJbihleGVjLCBiYXNlLCBpZGVudCwgcmVzdWx0LCBzbG90LCAqc3R1YkluZm8p
OwogICAgIGVsc2UKLSAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7CisgICAgICAgIHN0dWJJ
bmZvLT5zZWVuID0gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25JbihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5KQorRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbihFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiBiYXNlLCBTdHJpbmdJbXBsKiBrZXkpCiB7CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CkBAIC0yMzUsNyArMjI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25DYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEdldHRlcihleGVj
LCBiYXNlLCBnZXR0ZXJTZXR0ZXIpKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwpAQCAtMjQ1
LDcgKzIzOSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKICAg
ICBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnB1dChleGVjLCBpZGVudCwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CkBAIC0yNTUsNyArMjQ5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWROb25TdAogICAgIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkucHV0KGV4ZWMsIGlkZW50
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CiAKLXZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3Ry
aW5nSW1wbCogdWlkKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RT
dHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVp
ZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTI2NSw3ICsyNTksNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiAgICAgYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRCYXNlKSktPnB1dERpcmVjdChleGVjLT52bSgpLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CkBAIC0yNzUsMTUgKzI2OSwxMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjCiAgICAgYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSktPnB1dERpcmVjdChleGVjLT52bSgpLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSksIHNsb3QpOwogfQogCi1WX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVT
U19FSkpJKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk7Ci12b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVp
ZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OwotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5n
ZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2Up
OwpAQCAtMjkxLDI0ICsyODMsMjIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWRTdHJpYwogICAgIAogICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90
KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxB
Y2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBpZiAoc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFz
ZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8sIE5vdERpcmVjdCk7CisgICAgaWYgKHN0dWJJ
bmZvLT5zZWVuKQorICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIGlkZW50
LCBzbG90LCAqc3R1YkluZm8sIE5vdERpcmVjdCk7CiAgICAgZWxzZQotICAgICAgICBzdHViSW5m
by5zZWVuID0gdHJ1ZTsKKyAgICAgICAgc3R1YkluZm8tPnNlZW4gPSB0cnVlOwogfQogCi1WX0ZV
TkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkpJKG9wZXJhdGlvblB1dEJ5SWRO
b25TdHJpY3RPcHRpbWl6ZSk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5v
blN0cmljdE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJ
bXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwotICAgIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRTdHViSW5mbyhyZXR1
cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUg
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwpAQCAtMzE2LDI0ICsz
MDYsMjIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAogICAgIAog
ICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBp
ZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NU
eXBlKSkKKyAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHVi
SW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc3R1Yklu
Zm8uc2VlbikKLSAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwg
c2xvdCwgc3R1YkluZm8sIE5vdERpcmVjdCk7CisgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQorICAg
ICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1Yklu
Zm8sIE5vdERpcmVjdCk7CiAgICAgZWxzZQotICAgICAgICBzdHViSW5mby5zZWVuID0gdHJ1ZTsK
KyAgICAgICAgc3R1YkluZm8tPnNlZW4gPSB0cnVlOwogfQogCi1WX0ZVTkNUSU9OX1dSQVBQRVJf
V0lUSF9SRVRVUk5fQUREUkVTU19FSkpJKG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRp
bWl6ZSk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9w
dGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
ICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwotICAgIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRTdHViSW5mbyhyZXR1cm5BZGRy
ZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBl
PihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNPYmplY3QqIGJh
c2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKQEAgLTM0
MSwyNCArMzI5LDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMK
ICAgICAKICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZhbHVl
LCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NU
eXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBpZiAoc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhl
YywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBEaXJlY3QpOworICAgIGlmIChz
dHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZU9iamVjdCwg
aWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKICAgICBlbHNlCi0gICAgICAgIHN0dWJJ
bmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiB9CiAKLVZf
RlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkkob3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdE5vblN0cmljdE9wdGltaXplKTsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6
ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1w
bCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0s
IHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2Nr
KCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5h
Y2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZSkpOwpAQCAtMzY2LDI0ICszNTIsMjIgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlYwogICAgIAogICAgIGJhc2VPYmplY3QtPnB1dERpcmVj
dChleGVjLT52bSgpLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NU
eXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAg
IGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChzdHViSW5mby5zZWVuKQot
ICAgICAgICByZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgc3R1
YkluZm8sIERpcmVjdCk7CisgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQorICAgICAgICByZXBhdGNo
UHV0QnlJRChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3Qp
OwogICAgIGVsc2UKLSAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7CisgICAgICAgIHN0dWJJ
bmZvLT5zZWVuID0gdHJ1ZTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FE
RFJFU1NfRUpKSShvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KTsKLXZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0V2l0aFJldHVybkFkZHJlc3Mo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRM
aXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJ
bXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2
bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxv
Y2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8t
PmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlKTsKQEAgLTM5MSwyMSArMzc1LDE5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkU3RyaWMKICAgICAKICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1
ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgYnVpbGRQdXRCeUlkTGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90
LCBzdHViSW5mbywgTm90RGlyZWN0KTsKKyAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VW
YWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgTm90RGlyZWN0KTsKIH0KIAotVl9GVU5DVElP
Tl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpKSShvcGVyYXRpb25QdXRCeUlkTm9uU3Ry
aWN0QnVpbGRMaXN0KTsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3Ry
aWN0QnVpbGRMaXN0V2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBs
KiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJu
QWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTQxMywyMSArMzk1
LDE5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKICAgICAKICAg
ICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYg
KGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlw
ZSkpCisgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1Yklu
Zm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYnVpbGRQdXRCeUlk
TGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCBzdHViSW5mbywgTm90RGlyZWN0KTsK
KyAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHVi
SW5mbywgTm90RGlyZWN0KTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FE
RFJFU1NfRUpKSShvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KTsKLXZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0V2l0aFJl
dHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0U3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCiAgICAg
SWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8u
YWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogICAgIAogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU09iamVjdCogYmFzZU9iamVj
dCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOwpAQCAtNDM1LDIxICs0
MTUsMTkgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlYwogICAgIAog
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBpZGVudCwgdmFsdWUsIHNsb3Qp
OwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0
dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsIHN0dWJJ
bmZvLCBEaXJlY3QpOworICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhlYywgYmFzZU9iamVjdCwgaWRl
bnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJ
VEhfUkVUVVJOX0FERFJFU1NfRUpKSShvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVp
bGRMaXN0KTsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3Ry
aWN0QnVpbGRMaXN0V2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBs
KiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8o
cmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpT
T2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSk7CkBAIC00NTcsMTAgKzQzNSwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjCiAgICAgCiAgICAgYmFzZU9iamVjdCAtPnB1dERpcmVjdChleGVjLT52bSgpLCBp
ZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAgIGlmIChhY2Nlc3NUeXBl
ICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhlYywgYmFzZU9iamVjdCwg
aWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBEaXJlY3QpOworICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhl
YywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKIH0KIAogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVTdG9yYWdlQW5kRmluaXNoUHV0KEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE1NzY1OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw2ICs3MCw3IEBAIGV4dGVybiAiQyIgewogICAgIFBjOiBJbnN0cnVjdGlvbiogaS5lLiBi
eXRlY29kZSBQQwogICAgIFI6IFJlZ2lzdGVyCiAgICAgUzogc2l6ZV90CisgICAgU3NpOiBTdHJ1
Y3R1cmVTdHViSW5mbyoKICAgICBTdDogU3RydWN0dXJlKgogICAgIFY6IHZvaWQKICAgICBWbTog
Vk0qCkBAIC05MCw3ICs5MSw2IEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiAoKkoKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0
aW9uX0VJKShFeGVjU3RhdGUqLCBTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVy
YXRpb25fRUpBKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNBcnJheSopOwotdHlwZWRl
ZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpJKShFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpJZGMpKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSnNzWikoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBpbnQz
Ml90KTsKQEAgLTEwMCw2ICsxMDAsOCBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gKCpKCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9w
ZXJhdGlvbl9FUFMpKEV4ZWNTdGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJ
bnN0cnVjdGlvbiopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9K
SVRPcGVyYXRpb25fRVNTKShFeGVjU3RhdGUqLCBzaXplX3QsIHNpemVfdCk7Cit0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FU3NpQ0kpKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiwgU3RyaW5nSW1wbCopOwordHlwZWRl
ZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUpJKShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBs
Kik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlv
bl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FWkljZlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIElu
bGluZUNhbGxGcmFtZSosIGludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90
KTsKQEAgLTE0MCw3ICsxNDIsNiBAQCB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklU
T3BlcmF0CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKKShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAo
KlZfSklUT3BlcmF0aW9uX0VKQ0kpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwq
LCBTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0
aW9uX0VKSWRKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwotdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04g
KCpWX0pJVE9wZXJhdGlvbl9FSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9K
SVRPcGVyYXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklU
T3BlcmF0aW9uX0VKUFApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCB2b2lkKiwgdm9pZCop
OwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSlpKKShFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwpAQCAtMTQ5
LDYgKzE1MCw3IEBAIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXQKIHR5
cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRU9aSikoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24q
KTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVBaSikoRXhl
Y1N0YXRlKiwgdm9pZCosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKK3R5cGVkZWYgdm9pZCBK
SVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwq
KTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fVykoV2F0Y2hw
b2ludFNldCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9F
WikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZf
SklUT3BlcmF0aW9uX0VWbSkoRXhlY1N0YXRlKiwgVk0qKTsKQEAgLTE4MCwyNiArMTgyLDI2IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25WTUhhbmRsZUV4Y2UKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25TdGFja0NoZWNrKEV4ZWNTdGF0ZSosIENvZGVCbG9jayopIFdURl9JTlRF
Uk5BTDsKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhFeGVj
U3RhdGUqKSBXVEZfSU5URVJOQUw7CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29u
c3RydWN0QXJpdHlDaGVjayhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqLCBKU0NlbGwqLCBTdHJpbmdJbXBsKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSosIEpTQ2VsbCos
IFN0cmluZ0ltcGwqKTsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
QnlJZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBTdHJp
bmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jbk9wdGltaXplKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiwgU3RyaW5nSW1wbCopOworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEpTQ2VsbCosIFN0cmluZ0ltcGwqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2VuZXJpY0luKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVl
KTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEN1c3RvbUdldHRl
cihFeGVjU3RhdGUqLCBKU0NlbGwqLCBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYywgU3RyaW5n
SW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ2FsbEdldHRlcihFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7
Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBT
dHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVS
TkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBs
KikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3RTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwot
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6
ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1w
bCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9u
U3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkU3RyaWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5B
TDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0
YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRl
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRl
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0
YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3Qo
RXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVTdG9yYWdlQW5kRmluaXNo
UHV0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQsIEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWwoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTU3
NjU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIzLDkgKzUyMywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0CiAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKICAgICAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlLCBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIHJlZ1QxLCByZWdUMCwgaWRlbnQt
PmltcGwoKSk7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbV9jb2RlQmxvY2st
PmFkZFN0dWJJbmZvKCk7CisgICAgCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihXaXRo
UHJvZmlsZSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBzdHViSW5mbywg
cmVnVDEsIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21w
aWxhdGlvbkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgrK10uc2xvd0Nhc2VJ
bmZvKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlv
bkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgrK10uc2xvd0Nhc2VJbmZvKGNv
bGRQYXRoQmVnaW4sIGNhbGwsIHN0dWJJbmZvKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC01NzksNyArNTgxLDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdAogICAgIAogICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7CiAgICAgCi0gICAgVl9KSVRPcGVyYXRpb25fRUpKSSBv
cHRpbWl6ZWRDYWxsOworICAgIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3B0aW1pemVkQ2FsbDsK
ICAgICBpZiAobV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlmIChkaXJl
Y3QpCiAgICAgICAgICAgICBvcHRpbWl6ZWRDYWxsID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0
cmljdE9wdGltaXplOwpAQCAtNTkyLDEwICs1OTQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3B1dF9ieV9pZChJbnN0cnVjdAogICAgICAgICAgICAgb3B0aW1pemVkQ2FsbCA9IG9wZXJhdGlv
blB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKICAgICB9CiAgICAgCi0gICAgQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbihvcHRpbWl6ZWRDYWxsLCByZWdUMywgcmVnVDIsIHJlZ1QxLCByZWdUMCwg
aWRlbnQtPmltcGwoKSk7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbV9jb2Rl
QmxvY2stPmFkZFN0dWJJbmZvKCk7CisgICAgCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bihvcHRpbWl6ZWRDYWxsLCBzdHViSW5mbywgcmVnVDMsIHJlZ1QyLCByZWdUMSwgcmVnVDAsIGlk
ZW50LT5pbXBsKCkpOwogCiAgICAgLy8gVHJhY2sgdGhlIGxvY2F0aW9uIG9mIHRoZSBjYWxsOyB0
aGlzIHdpbGwgYmUgdXNlZCB0byByZWNvdmVyIHBhdGNoIGluZm9ybWF0aW9uLgotICAgIG1fcHJv
cGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5k
ZXgrK10uc2xvd0Nhc2VJbmZvKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIG1fcHJvcGVydHlB
Y2Nlc3NDb21waWxhdGlvbkluZm9bbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgrK10u
c2xvd0Nhc2VJbmZvKGNvbGRQYXRoQmVnaW4sIGNhbGwsIHN0dWJJbmZvKTsKIH0KIAogLy8gQ29t
cGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVy
d3JpdGUgYmFzZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY1LDkgKzU2
NSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0CiAKICAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKICAgICAKLSAgICBDYWxsIGNhbGwgPSBjYWxs
T3BlcmF0aW9uKFdpdGhQcm9maWxlLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdFZS
ZWcsIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8gPSBtX2NvZGVCbG9jay0+YWRkU3R1YkluZm8oKTsKKyAgICAKKyAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3Vs
dFZSZWcsIHN0dWJJbmZvLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CiAKLSAgICBtX3Byb3BlcnR5
QWNjZXNzQ29tcGlsYXRpb25JbmZvW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4Kytd
LnNsb3dDYXNlSW5mbyhjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNz
Q29tcGlsYXRpb25JbmZvW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4KytdLnNsb3dD
YXNlSW5mbyhjb2xkUGF0aEJlZ2luLCBjYWxsLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNjE4
LDcgKzYyMCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3QKIAog
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7CiAgICAgCi0gICAgVl9KSVRPcGVyYXRpb25f
RUpKSSBvcHRpbWl6ZWRDYWxsOworICAgIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3B0aW1pemVk
Q2FsbDsKICAgICBpZiAobV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlm
IChkaXJlY3QpCiAgICAgICAgICAgICBvcHRpbWl6ZWRDYWxsID0gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdE9wdGltaXplOwpAQCAtNjMxLDEwICs2MzMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF9ieV9pZChJbnN0cnVjdAogICAgICAgICAgICAgb3B0aW1pemVkQ2FsbCA9IG9w
ZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKICAgICB9CiAgICAgCi0gICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbihvcHRpbWl6ZWRDYWxsLCByZWdUMSwgcmVnVDAsIGlkZW50LT5p
bXBsKCkpOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1fY29kZUJsb2NrLT5h
ZGRTdHViSW5mbygpOworCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcHRpbWl6ZWRD
YWxsLCBzdHViSW5mbywgcmVnVDEsIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKIAogICAgIC8vIFRy
YWNrIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2FsbDsgdGhpcyB3aWxsIGJlIHVzZWQgdG8gcmVjb3Zl
ciBwYXRjaCBpbmZvcm1hdGlvbi4KLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZv
W21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4KytdLnNsb3dDYXNlSW5mbyhjb2xkUGF0
aEJlZ2luLCBjYWxsKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvW21fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4KytdLnNsb3dDYXNlSW5mbyhjb2xkUGF0aEJlZ2lu
LCBjYWxsLCBzdHViSW5mbyk7CiB9CiAKIC8vIENvbXBpbGUgYSBzdG9yZSBpbnRvIGFuIG9iamVj
dCdzIHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIHRoZQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTAsNyArNjEw
LDcgQEAgdm9pZCBidWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0ZSogZXhlYywgSgogICAgICAgICBy
ZXBhdGNoQ2FsbChleGVjLT5jb2RlQmxvY2soKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBvcGVyYXRpb25HZXRCeUlkKTsKIH0KIAotc3RhdGljIFZfSklUT3BlcmF0aW9uX0VKSkkgYXBw
cm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xv
dCwgUHV0S2luZCBwdXRLaW5kKQorc3RhdGljIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgYXBwcm9w
cmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwg
UHV0S2luZCBwdXRLaW5kKQogewogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKSB7CiAgICAg
ICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTYyMiw3ICs2MjIsNyBAQCBzdGF0aWMgVl9K
SVRPcGVyYXRpb25fRUpKSSBhcHByb3ByaWF0ZUdlCiAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5
SWROb25TdHJpY3Q7CiB9CiAKLXN0YXRpYyBWX0pJVE9wZXJhdGlvbl9FSkpJIGFwcHJvcHJpYXRl
TGlzdEJ1aWxkaW5nUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwg
UHV0S2luZCBwdXRLaW5kKQorc3RhdGljIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgYXBwcm9wcmlh
dGVMaXN0QnVpbGRpbmdQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90
LCBQdXRLaW5kIHB1dEtpbmQpCiB7CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAg
ICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQpAQCAtMTM4OCw4ICsxMzg4LDggQEAgdm9pZCBy
ZXNldEdldEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaAogCiB2b2lkIHJlc2V0UHV0QnlJRChS
ZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8p
CiB7Ci0gICAgVl9KSVRPcGVyYXRpb25fRUpKSSB1bm9wdGltaXplZEZ1bmN0aW9uID0gYml0d2lz
ZV9jYXN0PFZfSklUT3BlcmF0aW9uX0VKSkk+KE1hY3JvQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdl
dChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotICAg
IFZfSklUT3BlcmF0aW9uX0VKSkkgb3B0aW1pemVkRnVuY3Rpb247CisgICAgVl9KSVRPcGVyYXRp
b25fRVNzaUpKSSB1bm9wdGltaXplZEZ1bmN0aW9uID0gYml0d2lzZV9jYXN0PFZfSklUT3BlcmF0
aW9uX0VTc2lKSkk+KE1hY3JvQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIFZfSklUT3BlcmF0aW9u
X0VTc2lKSkkgb3B0aW1pemVkRnVuY3Rpb247CiAgICAgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24g
PT0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJh
dGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QpCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0g
b3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwogICAgIGVsc2UgaWYgKHVub3B0aW1pemVk
RnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0
aW9uID09IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExpc3QpCkluZGV4OiBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNp
b24gMTU3NjU4KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNyBAQAorMjAxMy0xMC0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIEEgQ29kZUJsb2NrJ3MgU3RydWN0dXJlU3R1YkluZm9zIHNob3VsZG4ndCBiZSBp
biBhIFZlY3RvciB0aGF0IHdlIHNlYXJjaCB1c2luZyBjb2RlIG9yaWdpbnMgYW5kIG1hY2hpbmUg
Y29kZSBQQ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMjk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJv
ajoKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3
dGYvQmFnVG9IYXNoTWFwLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjp0b0hhc2hNYXApOgorICAg
ICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKwogMjAxMy0xMC0xOCAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzcGFjZXMgYmV0d2VlbiB0
ZW1wbGF0ZSBhbmdsZSBicmFja2V0cwpJbmRleDogU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0
LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNp
b24gMTU3NjU4KQorKysgU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNv
cHkpCkBAIC05LDYgKzksNyBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYv
QXRvbWljcy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJhaW5lZFBvb2wuaCBcCiAgICAg
U291cmNlL1dURi93dGYvQmFnLmggXAorICAgIFNvdXJjZS9XVEYvd3RmL0JhZ1RvSGFzaE1hcC5o
IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9CaXRBcnJheS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9C
aXRWZWN0b3IuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuaCBcCkluZGV4OiBT
b3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oJKHJldmlzaW9uIDE1NzY1OCkKKysrIFNvdXJjZS9X
VEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMs
NyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEF1dG9kcmFpbmVkUG9vbC5oIiAv
Pg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBVkxUcmVlLmgiIC8+DQogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEJhZy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0ZlxCYWdUb0hhc2hNYXAuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx3dGZcQml0QXJyYXkuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQml0
bWFwLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEJpdFZlY3Rvci5oIiAv
Pg0KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTU3NjU4KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCQkwRjlEMzM2MjE2NURCQTczMDA1QUQz
ODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5RDMzNUQxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCAq
LzsgfTsKIAkJMEY5RDMzNjMxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1RTE2NURCQTcz
MDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCAqLzsgfTsKIAkJMEZCMTRFMTkxODBGQTIxODAwOUI2
QjREIC8qIEJhZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZCMTRFMTgxODBGQTIxODAwOUI2QjREIC8qIEJhZy5oICovOyB9OworCQkwRkIxNEUxQjE4
MTBFMURDMDA5QjZCNEQgLyogQmFnVG9IYXNoTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkIxNEUxQTE4MTBFMURBMDA5QjZCNEQgLyogQmFnVG9I
YXNoTWFwLmggKi87IH07CiAJCTBGQzQ0ODgzMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzQ0ODgy
MTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCAqLzsgfTsKIAkJMEZDNEVERTYxNjk2MTQ5
NjAwRjY1MDQxIC8qIENvbW1hUHJpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDNEVERTUxNjk2MTQ5NjAwRjY1MDQxIC8qIENvbW1hUHJpbnRl
ci5oICovOyB9OwogCQkwRkQ4MUFDNTE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODFBQzQx
NTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9ICgpOyB9OyB9OwpAQCAtMjg5LDYgKzI5MCw3IEBACiAJCTBGOUQzMzVEMTY1REJBNzMw
MDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQcmludFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcmludFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkIxNEUxODE4MEZBMjE4MDA5QjZCNEQgLyogQmFnLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJhZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkIx
NEUxQTE4MTBFMURBMDA5QjZCNEQgLyogQmFnVG9IYXNoTWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJh
Z1RvSGFzaE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM0NDg4MjE2RkU5
RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByb2Nlc3NJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM0RURFNTE2
OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbW1hUHJpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0Qml0VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02MDgsNiArNjEwLDcgQEAKIAkJCQkxNDY5NDE5QjE2RUFCMTBBMDAyNEUxNDYg
LyogQXV0b2RyYWluZWRQb29sTWFjLm1tICovLAogCQkJCUE4QTQ3MjVFMTUxQTgyNUEwMDQxMjNG
RiAvKiBBVkxUcmVlLmggKi8sCiAJCQkJMEZCMTRFMTgxODBGQTIxODAwOUI2QjREIC8qIEJhZy5o
ICovLAorCQkJCTBGQjE0RTFBMTgxMEUxREEwMDlCNkI0RCAvKiBCYWdUb0hhc2hNYXAuaCAqLywK
IAkJCQk0RjAzMjFCQjE1NkFBOEQxMDA2RUJBRjYgLyogQml0QXJyYXkuaCAqLywKIAkJCQlBOEE0
NzI1RjE1MUE4MjVBMDA0MTIzRkYgLyogQml0bWFwLmggKi8sCiAJCQkJQThBNDcyNjAxNTFBODI1
QTAwNDEyM0ZGIC8qIEJpdFZlY3Rvci5jcHAgKi8sCkBAIC05OTYsNiArOTk5LDcgQEAKIAkJCQlB
OEE0NzNGQTE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4QTQ3M0ZDMTUxQTgyNUIwMDQxMjNGRiAvKiBPd25QdHIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4QTQ3M0ZEMTUxQTgyNUIwMDQxMjNGRiAvKiBPd25QdHJDb21tb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGQjE0RTFCMTgxMEUxREMwMDlCNkI0RCAvKiBCYWdUb0hhc2hNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0ZFMTUxQTgyNUIwMDQxMjNGRiAvKiBQYWNrZWRJbnRW
ZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0ZGMTUxQTgyNUIwMDQxMjNGRiAvKiBQ
YWdlQWxsb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0MDExNTFBODI1QjAwNDEy
M0ZGIC8qIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9CYWdUb0hhc2hNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9C
YWdUb0hhc2hNYXAuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0JhZ1RvSGFzaE1h
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEJhZ1RvSGFzaE1hcF9oCisjZGVmaW5lIEJhZ1RvSGFzaE1hcF9oCisKKyNpbmNsdWRlIDx3dGYv
QmFnLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHR5
cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIEtleUdldHRlckZ1bmN0b3I+Cit2b2lkIHRvSGFzaE1h
cChCYWc8RWxlbWVudFR5cGU+JiBiYWcsIEtleUdldHRlckZ1bmN0b3ImIGdldEtleSwgSGFzaE1h
cDxLZXlUeXBlLCBFbGVtZW50VHlwZSo+JiByZXN1bHQpCit7CisgICAgZm9yICh0eXBlbmFtZSBC
YWc8RWxlbWVudFR5cGU+OjppdGVyYXRvciBpdGVyID0gYmFnLmJlZ2luKCk7ICEhaXRlcjsgKytp
dGVyKSB7CisgICAgICAgIEVsZW1lbnRUeXBlKiBlbGVtZW50ID0gKml0ZXI7CisgICAgICAgIEtl
eVR5cGUga2V5ID0gZ2V0S2V5KCplbGVtZW50KTsKKyAgICAgICAgcmVzdWx0LmFkZChrZXksIGVs
ZW1lbnQpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6dG9I
YXNoTWFwOworCisjZW5kaWYgLy8gQmFnVG9IYXNoTWFwX2gKKwpJbmRleDogU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDE1NzY1OCkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBBc3Nl
cnRpb25zLmgKICAgICBBdG9taWNzLmgKICAgICBCYWcuaAorICAgIEJhdFRvSGFzaE1hcC5oCiAg
ICAgQml0QXJyYXkuaAogICAgIEJpdFZlY3Rvci5oCiAgICAgQml0bWFwLmgK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214629</attachid>
            <date>2013-10-18 18:42:22 -0700</date>
            <delta_ts>2013-10-18 18:53:24 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>119338</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBA
CisyMDEzLTEwLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QSBDb2RlQmxvY2sncyBTdHJ1Y3R1cmVTdHViSW5mb3Mgc2hvdWxkbid0IGJlIGluIGEgVmVjdG9y
IHRoYXQgd2Ugc2VhcmNoIHVzaW5nIGNvZGUgb3JpZ2lucyBhbmQgbWFjaGluZSBjb2RlIFBDcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTQwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBU
aGlzIGFjY29tcGxpc2hlcyBhIG51bWJlciBvZiBzaW1wbGlmaWNhdGlvbnMuIFN0cnVjdHVyZVN0
dWJJbmZvIGlzIG5vdyBub24tbW92aW5nLAorICAgICAgICB3aGVyZWFzIHByZXZpb3VzbHkgaXQg
d2FzIGluIGEgVmVjdG9yLCBzbyBpdCBtb3ZlZC4gVGhpcyBhbGxvd3MgeW91IHRvIHVzZSBwb2lu
dGVycyB0bworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mby4gVGhpcyBhbHNvIGVsaW1pbmF0ZXMg
dGhlIHVzZSBvZiByZXR1cm4gUEMgYXMgYSB3YXkgb2YgZmluZGluZyB0aGUKKyAgICAgICAgU3Ry
dWN0dXJlU3R1YkluZm8ncy4gSXQgcmVtb3ZlcyBzb21lIG9mIHRoZSBuZWVkIGZvciB0aGUgY29t
cGlsZS10aW1lIHByb3BlcnR5IGFjY2VzcworICAgICAgICByZWNvcmRzOyBmb3IgZXhhbXBsZSB0
aGUgREZHIG5vIGxvbmdlciBoYXMgdG8gc2F2ZSBpbmZvcm1hdGlvbiBhYm91dCByZWdpc3RlcnMg
aW4gYQorICAgICAgICBwcm9wZXJ0eSBhY2Nlc3MgcmVjb3JkIG9ubHkgdG8gbGF0ZXIgc2F2ZSBp
dCB0byB0aGUgc3R1YiBpbmZvLgorICAgICAgICAKKyAgICAgICAgVGhlIG1haW4gdGhpbmcgaXMg
YWNjb21wbGlzaGVzIGlzIHRoYXQgaXQgbWFrZXMgaXQgZWFzaWVyIHRvIGFkZCBTdHJ1Y3R1cmVT
dHViSW5mbydzCisgICAgICAgIGF0IGFueSBzdGFnZSBvZiBjb21waWxhdGlvbi4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJp
bnRHZXRCeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjphZGRTdHViSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiZWdpbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZW5kKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpyYXJl
Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9y
aWdpbi5oOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjpDb2RlT3JpZ2luKToKKyAgICAgICAg
KEpTQzo6Q29kZU9yaWdpbjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlND
OjpDb2RlT3JpZ2luOjpoYXNoKToKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbkhhc2g6Omhhc2gp
OgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luSGFzaDo6ZXF1YWwpOgorICAgICAgICAqIGJ5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpnZXRTdHJ1
Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4pOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxp
bmVTdGFja0VudHJ5KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoSlNDOjpERkc6OkluUmVjb3JkOjpJblJlY29yZCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
UHV0QnlJZCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6Y29w
eVRvU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5m
bzo6c2xvd0Nhc2VJbmZvKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3By
aWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUxp
c3RCdWlsZGluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6
CisKIDIwMTMtMTAtMTggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTcHJlYWQgb3BlcmF0b3Igc2hvdWxkIGJlIHBlcmZvcm1pbmcgZGlyZWN0ICJwdXRzIiBhbmQg
bm90IHRyaWdnZXJpbmcgc2V0dGVycwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE1NzY1OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1
Miw3IEBACiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9y
SW5saW5lcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0JhZ1RvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5n
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC0zMzEsNyAr
MzMyLDcgQEAgc3RhdGljIHZvaWQgZHVtcENoYWluKFByaW50U3RyZWFtJiBvdXQsIAogfQogI2Vu
ZGlmCiAKLXZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbikKK3ZvaWQgQ29kZUJsb2NrOjpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMs
IGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKIHsKICAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgbG9jYXRpb247CiAKQEAg
LTM1MCw4ICszNTEsOCBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMo
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKG51bWJlck9mU3RydWN0dXJlU3R1
YkluZm9zKCkpIHsKLSAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZ2V0U3R1
YkluZm8obG9jYXRpb24pOworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IG1h
cC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7CisgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8uc2VlbikgewogICAg
ICAgICAgICAgb3V0LnByaW50ZigiIGppdCgiKTsKICAgICAgICAgICAgIApAQCAtNTIwLDExICs1
MjEsMTcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbQogICAgICAg
ICBvdXQucHJpbnRmKCI7IGFjdGl2YXRpb24gaW4gciVkIiwgYWN0aXZhdGlvblJlZ2lzdGVyKCku
b2Zmc2V0KCkpOwogICAgIG91dC5wcmludGYoIlxuIik7CiAgICAgCisgICAgU3R1YkluZm9NYXAg
c3R1YkluZm9zOworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKyAgICAgICAgZ2V0U3R1YkluZm9NYXAobG9ja2VyLCBzdHViSW5mb3MpOworICAgIH0K
KyAgICAKICAgICBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwogICAgIGNvbnN0IEluc3RydWN0aW9uKiBlbmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsK
ICAgICBmb3IgKGNvbnN0IEluc3RydWN0aW9uKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsraXQp
Ci0gICAgICAgIGR1bXBCeXRlY29kZShvdXQsIGV4ZWMsIGJlZ2luLCBpdCk7Ci0KKyAgICAgICAg
ZHVtcEJ5dGVjb2RlKG91dCwgZXhlYywgYmVnaW4sIGl0LCBzdHViSW5mb3MpOworICAgIAogICAg
IGlmIChudW1iZXJPZklkZW50aWZpZXJzKCkpIHsKICAgICAgICAgb3V0LnByaW50ZigiXG5JZGVu
dGlmaWVyczpcbiIpOwogICAgICAgICBzaXplX3QgaSA9IDA7CkBAIC01NTIsMTEgKzU1OSw2IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAgICAgICAgfSB3aGls
ZSAoaSA8IGNvdW50KTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmICghbV9zdHJ1
Y3R1cmVTdHViSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICBvdXQucHJpbnRmKCJcblN0cnVjdHVy
ZXM6XG4iKTsKLSNlbmRpZgotCiAgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmludGYoIlxuRXhj
ZXB0aW9uIEhhbmRsZXJzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwpAQCAtNjU3LDcg
KzY1OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wUmFyZUNhc2VQcm9maWxlKFByaW4KIH0KICNl
bmRpZgogCi12b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0KQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKIHsKICAgICBpbnQgbG9jYXRpb24gPSBp
dCAtIGJlZ2luOwogICAgIGJvb2wgaGFzUHJpbnRlZFByb2ZpbGluZyA9IGZhbHNlOwpAQCAtOTQ3
LDcgKzk0OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAg
ICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgICAgICBjYXNlIG9wX2dldF9zdHJp
bmdfbGVuZ3RoOiB7CiAgICAgICAgICAgICBwcmludEdldEJ5SWRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCk7Ci0gICAgICAgICAgICBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGV4ZWMs
IGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgZXhl
YywgbG9jYXRpb24sIG1hcCk7CiAgICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBp
dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtMTQyMiw3ICsxNDI0LDYgQEAgc3RhdGljIEhhc2hTZXQ8Q29kZUJsb2NrKj4gbGl2ZUNvZGVC
bG9jawogCiAjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8pIFwKICAgICBtYWNy
byhpbnN0cnVjdGlvbnMpIFwKLSAgICBtYWNybyhzdHJ1Y3R1cmVTdHViSW5mb3MpIFwKICAgICBt
YWNybyhjYWxsTGlua0luZm9zKSBcCiAgICAgbWFjcm8obGlua2VkQ2FsbGVyTGlzdCkgXAogICAg
IG1hY3JvKGlkZW50aWZpZXJzKSBcCkBAIC0xOTQ1LDggKzE5NDYsOCBAQCBDb2RlQmxvY2s6On5D
b2RlQmxvY2soKQogICAgIC8vIG1faW5jb21pbmdDYWxscyBsaW5rZWQgbGlzdHMgdGhyb3VnaCB0
aGUgZXhlY3V0aW9uIG9mIHRoZSB+Q2FsbExpbmtJbmZvCiAgICAgLy8gZGVzdHJ1Y3RvcnMuCiAK
LSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6ZSgpLCBpID0g
MDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaV0uZGVyZWYo
KTsKKyAgICBmb3IgKEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3N0
dWJJbmZvcy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikKKyAgICAgICAgKCppdGVyKS0+ZGVyZWYo
KTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJ
Q1MKQEAgLTIxMDEsOCArMjEwMiw4IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0
aW9ucyhTbG8KIAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzSklUKGppdFR5
cGUoKSkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3RydWN0dXJlU3R1
YkluZm9zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8gPSBtX3N0cnVjdHVyZVN0dWJJbmZvc1tpXTsKKyAgICAgICAgZm9yIChCYWc8U3RydWN0
dXJlU3R1YkluZm8+OjppdGVyYXRvciBpdGVyID0gbV9zdHViSW5mb3MuYmVnaW4oKTsgISFpdGVy
OyArK2l0ZXIpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICoq
aXRlcjsKICAgICAgICAgICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgICAg
ICAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICAg
ICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CkBAIC0yMzU4LDgg
KzIzNTksOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAg
ICAgICAgICAgICAgJiYgIUhlYXA6OmlzTWFya2VkKGNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNh
bGxlZS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvKGkpLmxhc3RTZWVuQ2Fs
bGVlLmNsZWFyKCk7CiAgICAgICAgIH0KLSAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3Ry
dWN0dXJlU3R1YkluZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAg
ICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IG1fc3RydWN0dXJlU3R1YkluZm9zW2ld
OworICAgICAgICBmb3IgKEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIGl0ZXIgPSBt
X3N0dWJJbmZvcy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgeworICAgICAgICAgICAgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKippdGVyOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNlcygpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwpAQCAtMjM3MSw2ICsyMzcyLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKIH0KIAogI2lmIEVOQUJMRShKSVQpCitTdHJ1Y3R1cmVTdHViSW5mbyog
Q29kZUJsb2NrOjphZGRTdHViSW5mbygpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICByZXR1cm4gbV9zdHViSW5mb3MuYWRkKCk7Cit9CisKK3ZvaWQgQ29k
ZUJsb2NrOjpnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3R1Yklu
Zm9NYXAmIHJlc3VsdCkKK3sKKyAgICB0b0hhc2hNYXAobV9zdHViSW5mb3MsIGdldFN0cnVjdHVy
ZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKK30KKwogdm9pZCBDb2RlQmxvY2s6OnJlc2V0
U3R1YihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKHN0dWJJbmZvLmFj
Y2Vzc1R5cGUgPT0gYWNjZXNzX3Vuc2V0KQpAQCAtMjU5Myw3ICsyNjA1LDYgQEAgdm9pZCBDb2Rl
QmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjbwogdm9pZCBDb2RlQmxvY2s6OnNocmlua1Rv
Rml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKIHsKICNpZiBFTkFCTEUoSklUKQotICAgIG1fc3Ry
dWN0dXJlU3R1YkluZm9zLnNocmlua1RvRml0KCk7CiAgICAgbV9jYWxsTGlua0luZm9zLnNocmlu
a1RvRml0KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0zMTExLDE2
ICszMTIyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNldE9wdGltaXphdGlvblRocmVzaG9sZAogCiAj
ZW5kaWYKICAgICAKLXN0YXRpYyBib29sIHN0cnVjdHVyZVN0dWJJbmZvTGVzc1RoYW4oY29uc3Qg
U3RydWN0dXJlU3R1YkluZm8mIGEsIGNvbnN0IFN0cnVjdHVyZVN0dWJJbmZvJiBiKQotewotICAg
IHJldHVybiBhLmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpIDwgYi5jYWxs
UmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6
OnNvcnRTdHJ1Y3R1cmVTdHViSW5mb3MoKQotewotICAgIHN0ZDo6c29ydChtX3N0cnVjdHVyZVN0
dWJJbmZvcy5iZWdpbigpLCBtX3N0cnVjdHVyZVN0dWJJbmZvcy5lbmQoKSwgc3RydWN0dXJlU3R1
YkluZm9MZXNzVGhhbik7Ci19Ci0KIHVpbnQzMl90IENvZGVCbG9jazo6YWRqdXN0ZWRFeGl0Q291
bnRUaHJlc2hvbGQodWludDMyX3QgZGVzaXJlZFRocmVzaG9sZCkKIHsKICAgICBBU1NFUlQoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw2ICs3Myw3IEBACiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAiVmlydHVh
bFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgPHd0Zi9CYWcu
aD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgpAQCAtMTcwLDE4ICsxNzEsMTMg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYg
Y29sdW1uKTsKIAogI2lmIEVOQUJMRShKSVQpCi0KLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgZ2V0
U3R1YkluZm8oUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgIHsKLSAgICAgICAg
cmV0dXJuICooYmluYXJ5U2VhcmNoPFN0cnVjdHVyZVN0dWJJbmZvLCB2b2lkKj4obV9zdHJ1Y3R1
cmVTdHViSW5mb3MsIG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgcmV0dXJuQWRkcmVzcy52
YWx1ZSgpLCBnZXRTdHJ1Y3R1cmVTdHViSW5mb1JldHVybkxvY2F0aW9uKSk7Ci0gICAgfQotCi0g
ICAgU3RydWN0dXJlU3R1YkluZm8mIGdldFN0dWJJbmZvKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
Ci0gICAgewotICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8U3RydWN0dXJlU3R1YkluZm8s
IHVuc2lnbmVkPihtX3N0cnVjdHVyZVN0dWJJbmZvcywgbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6
ZSgpLCBieXRlY29kZUluZGV4LCBnZXRTdHJ1Y3R1cmVTdHViSW5mb0J5dGVjb2RlSW5kZXgpKTsK
LSAgICB9CisgICAgU3RydWN0dXJlU3R1YkluZm8qIGFkZFN0dWJJbmZvKCk7CisgICAgQmFnPFN0
cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX3N0dWJJbmZvcy5i
ZWdpbigpOyB9CisgICAgQmFnPFN0cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0b3IgZW5kKCkgeyBy
ZXR1cm4gbV9zdHViSW5mb3MuZW5kKCk7IH0KIAogICAgIHZvaWQgcmVzZXRTdHViKFN0cnVjdHVy
ZVN0dWJJbmZvJik7CisgICAgCisgICAgdm9pZCBnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCk7CiAKICAgICBCeVZhbEluZm8mIGdl
dEJ5VmFsSW5mbyh1bnNpZ25lZCBieXRlY29kZUluZGV4KQogICAgIHsKQEAgLTM3NywxMSArMzcz
LDYgQEAgcHVibGljOgogICAgIFN0cmluZyBuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVy
KTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJ
bmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9Ci0g
ICAgdm9pZCBzb3J0U3RydWN0dXJlU3R1YkluZm9zKCk7Ci0gICAgc2l6ZV90IG51bWJlck9mU3Ry
dWN0dXJlU3R1YkluZm9zKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6
ZSgpOyB9Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKGludCBpbmRl
eCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaW5kZXhdOyB9Ci0KICAgICB2b2lkIHNl
dE51bWJlck9mQnlWYWxJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX2J5VmFsSW5mb3MuZ3JvdyhzaXpl
KTsgfQogICAgIHNpemVfdCBudW1iZXJPZkJ5VmFsSW5mb3MoKSBjb25zdCB7IHJldHVybiBtX2J5
VmFsSW5mb3Muc2l6ZSgpOyB9CiAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8oc2l6ZV90IGluZGV4
KSB7IHJldHVybiBtX2J5VmFsSW5mb3NbaW5kZXhdOyB9CkBAIC00NDUsOCArNDM2LDggQEAgcHVi
bGljOgogICAgIFJhcmVDYXNlUHJvZmlsZSogcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRyeUJpbmFyeVNl
YXJjaDxSYXJlQ2FzZVByb2ZpbGUsIGludD4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmFyZUNhc2VQcm9maWxlcywgbV9yYXJlQ2FzZVBy
b2ZpbGVzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fcmFyZUNhc2VQcm9maWxlcywgbV9yYXJlQ2FzZVByb2ZpbGVz
LnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICBnZXRSYXJlQ2FzZVByb2ZpbGVC
eXRlY29kZU9mZnNldCk7CiAgICAgfQogCiAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShp
bnQgYnl0ZWNvZGVPZmZzZXQpCkBAIC05MzUsMTQgKzkyNiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSgp
LCBjb25zdGFudHNbaV0uZ2V0KCkpOwogICAgIH0KIAotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJ
bnN0cnVjdGlvbiomKTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYsIEV4ZWNT
dGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29u
c3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSk7CiAKICAgICBDU3RyaW5nIHJlZ2lzdGVy
TmFtZShpbnQgcikgY29uc3Q7CiAgICAgdm9pZCBwcmludFVuYXJ5T3AoUHJpbnRTdHJlYW0mLCBF
eGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIq
IG9wKTsKICAgICB2b2lkIHByaW50QmluYXJ5T3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKICAgICB2
b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNo
YXIqIG9wKTsKICAgICB2b2lkIHByaW50R2V0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRl
KiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomKTsKLSAgICB2b2lkIHByaW50R2V0
QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uKTsK
KyAgICB2b2lkIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiwgRXhlY1N0YXRl
KiwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwogICAgIGVudW0gQ2FjaGVEdW1w
TW9kZSB7IER1bXBDYWNoZXMsIERvbnREdW1wQ2FjaGVzIH07CiAgICAgdm9pZCBwcmludENhbGxP
cChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUsIGJvb2wmIGhhc1ByaW50ZWRQcm9m
aWxpbmcpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUq
LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKQEAg
LTEwMzEsNyArMTAyMiw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29k
ZTsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5Q2hlY2s7CiAj
aWYgRU5BQkxFKEpJVCkKLSAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0dXJl
U3R1YkluZm9zOworICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHViSW5mb3M7CiAgICAg
VmVjdG9yPEJ5VmFsSW5mbz4gbV9ieVZhbEluZm9zOwogICAgIFZlY3RvcjxDYWxsTGlua0luZm8+
IG1fY2FsbExpbmtJbmZvczsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBC
YXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+PiBtX2luY29taW5nQ2FsbHM7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHJldmlzaW9u
IDE1NzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5
LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTYwLDYgKzYxLDEyIEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICB7CiAgICAgfQogICAg
IAorICAgIENvZGVPcmlnaW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAg
ICA6IGJ5dGVjb2RlSW5kZXgoaW52YWxpZEJ5dGVjb2RlSW5kZXgpCisgICAgICAgICwgaW5saW5l
Q2FsbEZyYW1lKGJpdHdpc2VfY2FzdDxJbmxpbmVDYWxsRnJhbWUqPihzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KDEpKSkKKyAgICB7CisgICAgfQorICAgIAogICAgIGV4cGxpY2l0IENvZGVPcmlnaW4o
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUg
PSAwKQogICAgICAgICA6IGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKICAgICAgICAgLCBp
bmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKQpAQCAtNjksNiArNzYsMTEgQEAgc3RydWN0
IENvZGVPcmlnaW4gewogICAgIAogICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBieXRl
Y29kZUluZGV4ICE9IGludmFsaWRCeXRlY29kZUluZGV4OyB9CiAgICAgCisgICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYnl0ZWNv
ZGVJbmRleCA9PSBpbnZhbGlkQnl0ZWNvZGVJbmRleCAmJiAhIWlubGluZUNhbGxGcmFtZTsKKyAg
ICB9CisgICAgCiAgICAgLy8gVGhlIGlubGluZSBkZXB0aCBpcyB0aGUgZGVwdGggb2YgdGhlIGlu
bGluZSBzdGFjaywgc28gMSA9IG5vdCBpbmxpbmVkLAogICAgIC8vIDIgPSBpbmxpbmVkIG9uZSBk
ZWVwLCBldGMuCiAgICAgdW5zaWduZWQgaW5saW5lRGVwdGgoKSBjb25zdDsKQEAgLTgxLDggKzkz
LDggQEAgc3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIHN0YXRpYyB1bnNpZ25lZCBpbmxp
bmVEZXB0aEZvckNhbGxGcmFtZShJbmxpbmVDYWxsRnJhbWUqKTsKICAgICAKKyAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvZGVPcmlnaW4mIG90
aGVyKSBjb25zdDsKLSAgICAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29kZU9yaWdpbiYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgCiAgICAgLy8g
R2V0IHRoZSBpbmxpbmUgc3RhY2suIFRoaXMgaXMgc2xvdywgYW5kIGlzIGludGVuZGVkIGZvciBk
ZWJ1Z2dpbmcgb25seS4KQEAgLTE0NSw2ICsxNTcsMTIgQEAgaW5saW5lIGludCBDb2RlT3JpZ2lu
OjpzdGFja09mZnNldCgpIGNvbgogICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0OwogfQogCitpbmxpbmUgdW5zaWduZWQgQ29kZU9yaWdpbjo6aGFzaCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFdURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2goYnl0ZWNvZGVJbmRleCkgKwor
ICAgICAgICBXVEY6OlB0ckhhc2g8SW5saW5lQ2FsbEZyYW1lKj46Omhhc2goaW5saW5lQ2FsbEZy
YW1lKTsKK30KKwogaW5saW5lIGJvb2wgQ29kZU9yaWdpbjo6b3BlcmF0b3I9PShjb25zdCBDb2Rl
T3JpZ2luJiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gYnl0ZWNvZGVJbmRleCA9PSBvdGhl
ci5ieXRlY29kZUluZGV4CkBAIC0xNTgsNyArMTc2LDI3IEBAIGlubGluZSBTY3JpcHRFeGVjdXRh
YmxlKiBDb2RlT3JpZ2luOjpjb2QKICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRh
YmxlLmdldCgpOwogfQogCitzdHJ1Y3QgQ29kZU9yaWdpbkhhc2ggeworICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IENvZGVPcmlnaW4mIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQor
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvZGVPcmlnaW4mIGEsIGNvbnN0IENvZGVPcmln
aW4mIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRI
YXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpDb2RlT3JpZ2luPiB7Cisg
ICAgdHlwZWRlZiBKU0M6OkNvZGVPcmlnaW5IYXNoIEhhc2g7Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
SlNDOjpDb2RlT3JpZ2luPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkNvZGVPcmlnaW4+
IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIENvZGVPcmlnaW5faAogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShy
ZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIEdldEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3JDaGFpbihHZXRCCiAjZW5kaWYKIH0KIAotR2V0QnlJZFN0YXR1
cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKQorR2V0QnlJZFN0YXR1cyBHZXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3R1YkluZm9N
YXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKQogewogICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAgICAg
CkBAIC0xMTMsMjggKzExMywyMyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3IoCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJB
TSh1aWQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICBp
ZiAoIXByb2ZpbGVkQmxvY2stPmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpCisgICAgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgp
KTsKKyAgICBpZiAoIXN0dWJJbmZvIHx8ICFzdHViSW5mby0+c2VlbikKICAgICAgICAgcmV0dXJu
IGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgdWlkKTsKICAg
ICAKLSAgICAvLyBGaXJzdCBjaGVjayBpZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMsIGluIHdoaWNo
IGNhc2Ugd2Ugd2FudCB0byBiZSBzdXBlciBjYXJlZnVsLCBvcgotICAgIC8vIGlmIGl0J3Mgbm90
IHNldCBhdCBhbGwsIGluIHdoaWNoIGNhc2Ugd2UgcHVudC4KLSAgICBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsK
LSAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50
KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHVpZCk7Ci0gICAgCi0gICAgaWYgKHN0dWJJ
bmZvLnJlc2V0QnlHQykKKyAgICBpZiAoc3R1YkluZm8tPnJlc2V0QnlHQykKICAgICAgICAgcmV0
dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgdHJ1ZSk7CiAKICAgICBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXplOwotICAgIHN3aXRj
aCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgeworICAgIHN3aXRjaCAoc3R1YkluZm8tPmFjY2Vzc1R5
cGUpIHsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZl9saXN0OgotICAgICAgICBsaXN0
ID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsKLSAgICAgICAgbGlz
dFNpemUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZTsKKyAgICAgICAgbGlz
dCA9IHN0dWJJbmZvLT51LmdldEJ5SWRTZWxmTGlzdC5zdHJ1Y3R1cmVMaXN0OworICAgICAgICBs
aXN0U2l6ZSA9IHN0dWJJbmZvLT51LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvX2xpc3Q6Ci0gICAgICAgIGxp
c3QgPSBzdHViSW5mby51LmdldEJ5SWRQcm90b0xpc3Quc3RydWN0dXJlTGlzdDsKLSAgICAgICAg
bGlzdFNpemUgPSBzdHViSW5mby51LmdldEJ5SWRQcm90b0xpc3QubGlzdFNpemU7CisgICAgICAg
IGxpc3QgPSBzdHViSW5mby0+dS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3Q7CisgICAg
ICAgIGxpc3RTaXplID0gc3R1YkluZm8tPnUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZTsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbGlzdCA9IDA7CkBAIC0xNTMsMTIg
KzE0OCwxMiBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAg
Ly8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5
LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OwogICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9
IHRydWU7IC8vIFRoaXMgaXMgaW50ZXJlc3RpbmcgZm9yIGJ5dGVjb2RlIGR1bXBpbmcgb25seS4K
LSAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKKyAgICBzd2l0Y2ggKHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6CiAgICAgICAgIHJldHVybiBj
b21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHVpZCk7CiAgICAg
ICAgIAogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmOiB7Ci0gICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJl
LmdldCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLT51LmdldEJ5
SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJp
YnV0ZXNJZ25vcmVkOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7CiAgICAgICAgIHJl
c3VsdC5tX29mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KApAQCAtMjE0LDI0ICsy
MDksMjQgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvOiB7Ci0gICAgICAgIGlm
ICghc3R1YkluZm8udS5nZXRCeUlkUHJvdG8uaXNEaXJlY3QpCisgICAgICAgIGlmICghc3R1Yklu
Zm8tPnUuZ2V0QnlJZFByb3RvLmlzRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoTWFrZXNDYWxscywgdHJ1ZSk7CiAgICAgICAgIHJlc3VsdC5tX2NoYWluID0gYWRvcHRS
ZWYobmV3IEludGVuZGVkU3RydWN0dXJlQ2hhaW4oCiAgICAgICAgICAgICBwcm9maWxlZEJsb2Nr
LAotICAgICAgICAgICAgc3R1YkluZm8udS5nZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVjdHVy
ZS5nZXQoKSwKLSAgICAgICAgICAgIHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvLnByb3RvdHlwZVN0
cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgc3R1YkluZm8tPnUuZ2V0QnlJZFByb3RvLmJh
c2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICBzdHViSW5mby0+dS5nZXRCeUlk
UHJvdG8ucHJvdG90eXBlU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIGNvbXB1dGVGb3JDaGFp
bihyZXN1bHQsIHByb2ZpbGVkQmxvY2ssIHVpZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWluOiB7Ci0gICAgICAgIGlmICgh
c3R1YkluZm8udS5nZXRCeUlkQ2hhaW4uaXNEaXJlY3QpCisgICAgICAgIGlmICghc3R1YkluZm8t
PnUuZ2V0QnlJZENoYWluLmlzRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0
dXMoTWFrZXNDYWxscywgdHJ1ZSk7CiAgICAgICAgIHJlc3VsdC5tX2NoYWluID0gYWRvcHRSZWYo
bmV3IEludGVuZGVkU3RydWN0dXJlQ2hhaW4oCiAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLAot
ICAgICAgICAgICAgc3R1YkluZm8udS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZS5n
ZXQoKSwKLSAgICAgICAgICAgIHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmNoYWluLmdldCgpLAot
ICAgICAgICAgICAgc3R1YkluZm8udS5nZXRCeUlkQ2hhaW4uY291bnQpKTsKKyAgICAgICAgICAg
IHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAorICAg
ICAgICAgICAgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmNoYWluLmdldCgpLAorICAgICAgICAg
ICAgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmNvdW50KSk7CiAgICAgICAgIGNvbXB1dGVGb3JD
aGFpbihyZXN1bHQsIHByb2ZpbGVkQmxvY2ssIHVpZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
aAkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IkludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03MCw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKChzdGF0ZSA9PSBTaW1wbGUpID09IChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkpOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGlj
IEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBTdHViSW5mb01hcCYsIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVpZCk7CiAgICAgc3RhdGljIEdldEJ5SWRT
dGF0dXMgY29tcHV0ZUZvcihWTSYsIFN0cnVjdHVyZSosIFN0cmluZ0ltcGwqIHVpZCk7CiAgICAg
CiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZp
c2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogI2VuZGlmCiB9CiAKLVB1dEJ5SWRTdGF0dXMgUHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVpZCkKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJbmZvTWFwJiBt
YXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwogICAgIApAQCAt
ODksMzIgKzg5LDI5IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigK
ICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKHVpZCk7
CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIGlmICghcHJv
ZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKLSAgICAgICAgcmV0dXJuIGNv
bXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgdWlkKTsKLSAgICAK
ICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRl
eCkpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAs
IGludmFsaWRPZmZzZXQpOwogICAgIAotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9
IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwotICAgIGlmICghc3R1
YkluZm8uc2VlbikKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtYXAuZ2V0KENv
ZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICghc3R1YkluZm8gfHwgIXN0dWJJbmZv
LT5zZWVuKQogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBi
eXRlY29kZUluZGV4LCB1aWQpOwogICAgIAotICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0MpCisg
ICAgaWYgKHN0dWJJbmZvLT5yZXNldEJ5R0MpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogCi0gICAgc3dpdGNoIChz
dHViSW5mby5hY2Nlc3NUeXBlKSB7CisgICAgc3dpdGNoIChzdHViSW5mby0+YWNjZXNzVHlwZSkg
ewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgogICAgICAgICAvLyBJZiB0aGUgSklUIHNhdyBpdCBi
dXQgZGlkbid0IG9wdGltaXplIGl0LCB0aGVuIGFzc3VtZSB0aGF0IHRoaXMgdGFrZXMgc2xvdyBw
YXRoLgogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAw
LCBpbnZhbGlkT2Zmc2V0KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3Jl
cGxhY2U6IHsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0KLSAgICAgICAgICAgIHN0
dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0Q29uY3VycmVu
dGx5KAorICAgICAgICAgICAgc3R1YkluZm8tPnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0
cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KAogICAgICAgICAgICAgICAgICpwcm9maWxlZEJsb2Nr
LT52bSgpLCB1aWQpOwogICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAg
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKICAgICAgICAgICAgICAgICBTaW1wbGVSZXBs
YWNlLAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVj
dFN0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAgICAgICBzdHViSW5mby0+dS5wdXRCeUlkUmVw
bGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAogICAgICAgICAgICAgICAgIDAsIDAsCiAg
ICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAgICAgfQpAQCAtMTIzLDE4ICsxMjAsMTggQEAg
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAKICAgICBj
YXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBhY2Nlc3Nf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7Ci0gICAgICAgIEFTU0VSVChzdHViSW5mby51
LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2lu
dFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAgICAgQVNTRVJUKHN0dWJJbmZvLT51LnB1
dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNl
dEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
Ci0gICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0
Q29uY3VycmVudGx5KAorICAgICAgICAgICAgc3R1YkluZm8tPnUucHV0QnlJZFRyYW5zaXRpb24u
c3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxv
Y2stPnZtKCksIHVpZCk7CiAgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAg
ICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNpbXBsZVRy
YW5zaXRpb24sCi0gICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5w
cmV2aW91c1N0cnVjdHVyZS5nZXQoKSwKLSAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5
SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS5nZXQoKSwKLSAgICAgICAgICAgICAgICBzdHViSW5mby51
LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluID8gYWRvcHRSZWYobmV3IEludGVuZGVkU3RydWN0dXJl
Q2hhaW4oCi0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZvLnUucHV0
QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUuZ2V0KCksCi0gICAgICAgICAgICAgICAg
ICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4uZ2V0KCkpKSA6IDAsCisgICAg
ICAgICAgICAgICAgc3R1YkluZm8tPnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1
cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgc3R1YkluZm8tPnUucHV0QnlJZFRyYW5zaXRpb24u
c3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLT51LnB1dEJ5SWRUcmFu
c2l0aW9uLmNoYWluID8gYWRvcHRSZWYobmV3IEludGVuZGVkU3RydWN0dXJlQ2hhaW4oCisgICAg
ICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZvLT51LnB1dEJ5SWRUcmFuc2l0
aW9uLnByZXZpb3VzU3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAgICAgICBzdHViSW5m
by0+dS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5nZXQoKSkpIDogMCwKICAgICAgICAgICAgICAg
ICBvZmZzZXQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2Vz
U2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxNTc2NTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJbnRlbmRlZFN0cnVjdHVyZUNo
YWluLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVT
dHViSW5mby5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC05MCw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKChtX3N0YXRl
ID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAobV9vZmZz
ZXQgPT0gaW52YWxpZE9mZnNldCkpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUHV0QnlJZFN0
YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmlu
Z0ltcGwqIHVpZCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxv
Y2sqLCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFN0cmluZ0ltcGwqIHVp
ZCk7CiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0KTsKICAgICAK
ICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShy
ZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk0LDE1ICsyOTQsMTIg
QEAgc3RydWN0IFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICBSZWZQdHI8V2F0Y2hwb2ludHNPblN0
cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKIH07CiAKLWlubGluZSB2b2lkKiBnZXRTdHJ1
Y3R1cmVTdHViSW5mb1JldHVybkxvY2F0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHJ1Y3R1cmVT
dHViSW5mbykKK2lubGluZSBDb2RlT3JpZ2luIGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdp
bihTdHJ1Y3R1cmVTdHViSW5mbyYgc3RydWN0dXJlU3R1YkluZm8pCiB7Ci0gICAgcmV0dXJuIHN0
cnVjdHVyZVN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsK
KyAgICByZXR1cm4gc3RydWN0dXJlU3R1YkluZm8uY29kZU9yaWdpbjsKIH0KIAotaW5saW5lIHVu
c2lnbmVkIGdldFN0cnVjdHVyZVN0dWJJbmZvQnl0ZWNvZGVJbmRleChTdHJ1Y3R1cmVTdHViSW5m
byogc3RydWN0dXJlU3R1YkluZm8pCi17Ci0gICAgcmV0dXJuIHN0cnVjdHVyZVN0dWJJbmZvLT5j
b2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7Ci19Cit0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwg
U3RydWN0dXJlU3R1YkluZm8qPiBTdHViSW5mb01hcDsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1OCw2ICsxMDU4LDggQEAgcHJp
dmF0ZToKICAgICAgICAgLy8gY29kZSBibG9jayBoYWQgZ2F0aGVyZWQuCiAgICAgICAgIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyIG1fbGF6eU9wZXJhbmRzOwogICAgICAgICAKKyAgICAg
ICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7CisgICAgICAgIAogICAgICAgICAvLyBEaWQgd2Ug
c2VlIGFueSByZXR1cm5zPyBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgKHVuY29tbW9uIGJ1dCBuZWNl
c3NhcnkpCiAgICAgICAgIC8vIGNhc2Ugd2hlcmUgYSBwcm9jZWR1cmUgdGhhdCBkb2VzIG5vdCBy
ZXR1cm4gd2FzIGlubGluZWQuCiAgICAgICAgIGJvb2wgbV9kaWRSZXR1cm47CkBAIC0yNDM5LDcg
KzI0NDEsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKICAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMgZ2V0QnlJ
ZFN0YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2N1cnJlbnRJbmRleCwgdWlkKTsKKyAg
ICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1faW5saW5l
U3RhY2tUb3AtPm1fc3R1YkluZm9zLAorICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4LCB1
aWQpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKAogICAgICAgICAg
ICAgICAgIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24sIGJhc2Us
IGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5SWRTdGF0dXMpOwpAQCAtMjQ1OCw5ICsyNDYxLDggQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgYm9v
bCBkaXJlY3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bOF0udS5vcGVyYW5kOwogCiAgICAgICAgICAg
ICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
KAotICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKLSAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCwKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmlk
ZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl0pOworICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3Ms
CisgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgsIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtp
ZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICBib29sIGNhbkNvdW50QXNJbmxpbmVkID0g
dHJ1ZTsKICAgICAgICAgICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NldCgpKSB7CiAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOwpAQCAtMzMzNSw2ICszMzM3LDEyIEBA
IEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIobV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwogICAgICAgICBt
X2xhenlPcGVyYW5kcy5pbml0aWFsaXplKGxvY2tlciwgbV9wcm9maWxlZEJsb2NrLT5sYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZXMoKSk7CiAgICAgICAgIG1fZXhpdFByb2ZpbGUuaW5pdGlhbGl6ZShs
b2NrZXIsIHByb2ZpbGVkQmxvY2stPmV4aXRQcm9maWxlKCkpOworICAgICAgICAKKyAgICAgICAg
Ly8gV2UgZG8gdGhpcyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrIGJlY2F1c2Ugd2Ugd2FudCB0byBl
bmNvdXJhZ2UgU3RydWN0dXJlU3R1YkluZm8ncworICAgICAgICAvLyB0byBiZSBwb3RlbnRpYWxs
eSBhZGRlZCB0byBvcGVyYXRpb25zIGFuZCBiZWNhdXNlIHRoZSBwcm9maWxlZCBibG9jayBjb3Vs
ZCBiZSBpbiB0aGUKKyAgICAgICAgLy8gbWlkZGxlIG9mIExMSW50LT5KSVQgdGllci11cCBpbiB3
aGljaCBjYXNlIHdlIHdvdWxkIGJlIGFkZGluZyB0aGUgaW5mbydzIHJpZ2h0IG5vdy4KKyAgICAg
ICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKKyAgICAg
ICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm9NYXAobG9ja2VyLCBtX3N0dWJJbmZv
cyk7CiAgICAgfQogICAgIAogICAgIG1fYXJndW1lbnRQb3NpdGlvbnMucmVzaXplKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDExICsy
MjIsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FsbHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGxpbmtC
dWZmZXIubGluayhtX2NhbGxzW2ldLm1fY2FsbCwgbV9jYWxsc1tpXS5tX2Z1bmN0aW9uKTsKIAot
ICAgIG1fY29kZUJsb2NrLT5zZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhtX3Byb3BlcnR5
QWNjZXNzZXMuc2l6ZSgpICsgbV9pbnMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFN0cnVjdHVy
ZVN0dWJJbmZvJiBpbmZvID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKGkpOworICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgaW5mbyA9ICptX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9z
dHViSW5mbzsKICAgICAgICAgQ29kZUxvY2F0aW9uQ2FsbCBjYWxsUmV0dXJuTG9jYXRpb24gPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhHZW5l
cmF0b3ItPmNhbGwoKSk7Ci0gICAgICAgIGluZm8uY29kZU9yaWdpbiA9IG1fcHJvcGVydHlBY2Nl
c3Nlc1tpXS5tX2NvZGVPcmlnaW47CiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0g
Y2FsbFJldHVybkxvY2F0aW9uOwogICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0Nh
bGwgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIobGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJv
cGVydHlBY2Nlc3Nlc1tpXS5tX3N0cnVjdHVyZUltbSksIGNhbGxSZXR1cm5Mb2NhdGlvbik7CiAg
ICAgICAgIGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjayA9IGRpZmZlcmVuY2VCZXR3
ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3By
b3BlcnR5QWNjZXNzZXNbaV0ubV9zdHJ1Y3R1cmVDaGVjaykpOwpAQCAtMjM5LDMwICsyMzcsMTUg
QEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICBpbmZv
LnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2Fs
bFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2Vz
W2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVsKCkpKTsKICAgICAgICAgaW5mby5wYXRjaC5k
ZWx0YUNhbGxUb0RvbmUgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fZG9uZSkp
OwogICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
bV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fcHJvcGVydHlTdG9yYWdlTG9hZCkpOwotICAgICAgICBp
bmZvLnBhdGNoLmJhc2VHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9iYXNlR1BSOwotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBtX3Byb3BlcnR5
QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKLSNlbHNlCi0gICAgICAgIGluZm8ucGF0Y2gudmFsdWVU
YWdHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZVRhZ0dQUjsKLSAgICAgICAgaW5m
by5wYXRjaC52YWx1ZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwotI2Vu
ZGlmCi0gICAgICAgIGluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyA9IG1fcHJvcGVydHlBY2Nlc3Nl
c1tpXS5tX3VzZWRSZWdpc3RlcnM7Ci0gICAgICAgIGluZm8ucGF0Y2gucmVnaXN0ZXJzRmx1c2hl
ZCA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3JlZ2lzdGVyTW9kZSA9PSBQcm9wZXJ0eUFjY2Vz
c1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZDsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1faW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBp
bmZvID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fcHJvcGVydHlBY2Nlc3Nlcy5z
aXplKCkgKyBpKTsKKyAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSAqbV9pbnNbaV0u
bV9zdHViSW5mbzsKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwganVtcCA9IGxpbmtCdWZmZXIu
bG9jYXRpb25PZihtX2luc1tpXS5tX2p1bXApOwogICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNh
bGxSZXR1cm5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2luc1tpXS5tX3Nsb3dQ
YXRoR2VuZXJhdG9yLT5jYWxsKCkpOwotICAgICAgICBpbmZvLmNvZGVPcmlnaW4gPSBtX2luc1tp
XS5tX2NvZGVPcmlnaW47CiAgICAgICAgIGluZm8uaG90UGF0aEJlZ2luID0ganVtcDsKICAgICAg
ICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBjYWxsUmV0dXJuTG9jYXRpb247CiAgICAgICAg
IGluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2luc1tpXS5tX3Ns
b3dQYXRoR2VuZXJhdG9yLT5sYWJlbCgpKSk7Ci0gICAgICAgIGluZm8ucGF0Y2guYmFzZUdQUiA9
IG1faW5zW2ldLm1fYmFzZUdQUjsKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IG1faW5z
W2ldLm1fcmVzdWx0R1BSOwotICAgICAgICBpbmZvLnBhdGNoLnVzZWRSZWdpc3RlcnMgPSBtX2lu
c1tpXS5tX3VzZWRSZWdpc3RlcnM7Ci0gICAgICAgIGluZm8ucGF0Y2gucmVnaXN0ZXJzRmx1c2hl
ZCA9IGZhbHNlOwogICAgIH0KLSAgICBtX2NvZGVCbG9jay0+c29ydFN0cnVjdHVyZVN0dWJJbmZv
cygpOwogICAgIAogICAgIG1fY29kZUJsb2NrLT5zZXROdW1iZXJPZkNhbGxMaW5rSW5mb3MobV9q
c0NhbGxzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fanNDYWxscy5z
aXplKCk7ICsraSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwzOSArNzgsMjAgQEAgc3RydWN0
IENhbGxMaW5rUmVjb3JkIHsKIH07CiAKIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7Ci0g
ICAgZW51bSBSZWdpc3Rlck1vZGUgeyBSZWdpc3RlcnNGbHVzaGVkLCBSZWdpc3RlcnNJblVzZSB9
OwotICAgIAotI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0g
ICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wIHN0cnVjdHVyZUNoZWNrLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGli
bGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkT3JTdG9yZSwKLSAgICAg
ICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLAotICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgZG9uZSwKLSAgICAgICAgaW50OF90IGJhc2VHUFIsCi0gICAgICAgIGlu
dDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
Ci0gICAgICAgIFJlZ2lzdGVyTW9kZSByZWdpc3Rlck1vZGUgPSBSZWdpc3RlcnNJblVzZSkKICNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAg
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJl
bFB0ciBzdHJ1Y3R1cmVJbW0sCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1w
IHN0cnVjdHVyZUNoZWNrLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2Fk
TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFM
YWJlbENvbXBhY3QgdGFnTG9hZE9yU3RvcmUsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRh
TGFiZWxDb21wYWN0IHBheWxvYWRMb2FkT3JTdG9yZSwKKyNlbmRpZgogICAgICAgICBTbG93UGF0
aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBkb25lLAotICAgICAgICBpbnQ4X3QgYmFzZUdQUiwKLSAgICAgICAgaW50OF90IHZhbHVl
VGFnR1BSLAotICAgICAgICBpbnQ4X3QgdmFsdWVHUFIsCi0gICAgICAgIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBSZWdpc3Rlck1vZGUgcmVnaXN0ZXJNb2RlID0g
UmVnaXN0ZXJzSW5Vc2UpCi0jZW5kaWYKLSAgICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdp
bikKLSAgICAgICAgLCBtX3N0cnVjdHVyZUltbShzdHJ1Y3R1cmVJbW0pCisgICAgICAgIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbykKKyAgICAgICAgOiBtX3N0cnVjdHVyZUltbShzdHJ1Y3R1
cmVJbW0pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVDaGVjayhzdHJ1Y3R1cmVDaGVjaykKICAgICAg
ICAgLCBtX3Byb3BlcnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNpZiBVU0Uo
SlNWQUxVRTY0KQpAQCAtMTIxLDE3ICsxMDIsMTAgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVj
b3JkIHsKICNlbmRpZgogICAgICAgICAsIG1fc2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhHZW5l
cmF0b3IpCiAgICAgICAgICwgbV9kb25lKGRvbmUpCi0gICAgICAgICwgbV9iYXNlR1BSKGJhc2VH
UFIpCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgLCBtX3ZhbHVlVGFnR1BSKHZhbHVl
VGFnR1BSKQotI2VuZGlmCi0gICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikKLSAgICAgICAg
LCBtX3VzZWRSZWdpc3RlcnModXNlZFJlZ2lzdGVycykKLSAgICAgICAgLCBtX3JlZ2lzdGVyTW9k
ZShyZWdpc3Rlck1vZGUpCisgICAgICAgICwgbV9zdHViSW5mbyhzdHViSW5mbykKICAgICB7CiAg
ICAgfQogCi0gICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW47CiAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbFB0ciBtX3N0cnVjdHVyZUltbTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBtX3N0cnVjdHVyZUNoZWNrOwogICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJs
ZUxvYWRMYWJlbCBtX3Byb3BlcnR5U3RvcmFnZUxvYWQ7CkBAIC0xNDMsMzUgKzExNywyMiBAQCBz
dHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogI2VuZGlmCiAgICAgU2xvd1BhdGhHZW5lcmF0
b3IqIG1fc2xvd1BhdGhHZW5lcmF0b3I7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fZG9u
ZTsKLSAgICBpbnQ4X3QgbV9iYXNlR1BSOwotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaW50
OF90IG1fdmFsdWVUYWdHUFI7Ci0jZW5kaWYKLSAgICBpbnQ4X3QgbV92YWx1ZUdQUjsKLSAgICBS
ZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7Ci0gICAgUmVnaXN0ZXJNb2RlIG1fcmVnaXN0ZXJN
b2RlOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOwogfTsKIAogc3RydWN0IElu
UmVjb3JkIHsKICAgICBJblJlY29yZCgKLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBqdW1wLAotICAgICAgICBTbG93UGF0aEdlbmVy
YXRvciogc2xvd1BhdGhHZW5lcmF0b3IsIGludDhfdCBiYXNlR1BSLCBpbnQ4X3QgcmVzdWx0R1BS
LAotICAgICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycykKLSAgICAgICAgOiBt
X2NvZGVPcmlnaW4oY29kZU9yaWdpbikKLSAgICAgICAgLCBtX2p1bXAoanVtcCkKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAganVtcCwgU2xvd1BhdGhHZW5lcmF0b3IqIHNs
b3dQYXRoR2VuZXJhdG9yLAorICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCisg
ICAgICAgIDogbV9qdW1wKGp1bXApCiAgICAgICAgICwgbV9zbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aEdlbmVyYXRvcikKLSAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKLSAgICAgICAgLCBt
X3Jlc3VsdEdQUihyZXN1bHRHUFIpCi0gICAgICAgICwgbV91c2VkUmVnaXN0ZXJzKHVzZWRSZWdp
c3RlcnMpCisgICAgICAgICwgbV9zdHViSW5mbyhzdHViSW5mbykKICAgICB7CiAgICAgfQogICAg
IAotICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRj
aGFibGVKdW1wIG1fanVtcDsKICAgICBTbG93UGF0aEdlbmVyYXRvciogbV9zbG93UGF0aEdlbmVy
YXRvcjsKLSAgICBpbnQ4X3QgbV9iYXNlR1BSOwotICAgIGludDhfdCBtX3Jlc3VsdEdQUjsKLSAg
ICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIG1f
c3R1YkluZm87CiB9OwogCiAvLyA9PT0gSklUQ29tcGlsZXIgPT09CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJl
dmlzaW9uIDE1NzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVVJbnQzCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9y
Tm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7Cisg
ICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZFN0
dWJJbmZvKCk7CisgICAgCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVU
b0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sg
PSBtX2ppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpKTsKICAgICAKQEAgLTIxMSw3
ICsyMTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAg
ICAgIGlmICghc2xvd1BhdGhUYXJnZXQuaXNTZXQoKSkgewogICAgICAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc3RydWN0dXJlQ2hlY2subV9qdW1wLCB0
aGlzLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBzdHViSW5mbywKICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihKU1ZhbHVlOjpDZWxsVGFnKSwgYmFzZVBh
eWxvYWRHUFIsCiAgICAgICAgICAgICAgICAgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVy
KSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yMjAsNyArMjIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChz
bG93UGF0aFRhcmdldCk7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwK
LSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIpLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5
bG9hZEdQUiksIHN0dWJJbmZvLAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTVmFsdWU6OkNlbGxUYWcpLCBiYXNlUGF5bG9hZEdQUiwKICAgICAgICAgICAgICAgICBpZGVu
dGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICAgICAgfQpAQCAtMjI4LDMwICsyMzAs
NDIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgICAgICBp
ZiAoIXNsb3dQYXRoVGFyZ2V0LmlzU2V0KCkpIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHN0cnVjdHVyZUNoZWNrLm1fanVtcCwgdGhpcywg
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXls
b2FkR1BSLAotICAgICAgICAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikp
OworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiksIHN0dWJJbmZvLCBiYXNlVGFnR1BST3JOb25lLAorICAgICAgICAgICAgICAgIGJhc2VQ
YXlsb2FkR1BSLCBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHN0cnVjdHVyZUNoZWNrLm1fanVtcCk7CiAgICAgICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICAgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplLAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2Fk
R1BSLAotICAgICAgICAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwor
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
UiksIHN0dWJJbmZvLCBiYXNlVGFnR1BST3JOb25lLAorICAgICAgICAgICAgICAgIGJhc2VQYXls
b2FkR1BSLCBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICAgICAgfQogICAg
IH0KKyAgICBSZWdpc3RlclNldCBjdXJyZW50bHlVc2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVy
cygpOworICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldChiYXNlUGF5bG9hZEdQ
UikpOworICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldChyZXN1bHRUYWdHUFIp
KTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQocmVzdWx0UGF5bG9hZEdQ
UikpOworICAgIAorICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gY29kZU9yaWdpbjsKKyAgICBz
dHViSW5mby0+cGF0Y2guYmFzZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4oYmFzZVBheWxvYWRH
UFIpOworICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4o
cmVzdWx0UGF5bG9hZEdQUik7CisgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlVGFnR1BSID0gc3Rh
dGljX2Nhc3Q8aW50OF90PihyZXN1bHRUYWdHUFIpOworICAgIHN0dWJJbmZvLT5wYXRjaC51c2Vk
UmVnaXN0ZXJzID0gY3VycmVudGx5VXNlZFJlZ2lzdGVyczsKKyAgICBzdHViSW5mby0+cGF0Y2gu
cmVnaXN0ZXJzRmx1c2hlZCA9IHNwaWxsTW9kZSAhPSBOZWVkVG9TcGlsbDsKKwogICAgIG1faml0
LmFkZFByb3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKLSAgICAg
ICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHBy
b3BlcnR5U3RvcmFnZUxvYWQsCisgICAgICAgICAgICBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVj
dHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICAgICAgdGFnTG9hZFdpdGhQ
YXRjaCwgcGF5bG9hZExvYWRXaXRoUGF0Y2gsIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsCi0g
ICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VQYXlsb2FkR1BSKSwgc2FmZUNhc3Q8aW50
OF90PihyZXN1bHRUYWdHUFIpLAotICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRQ
YXlsb2FkR1BSKSwgdXNlZFJlZ2lzdGVycygpLAotICAgICAgICAgICAgc3BpbGxNb2RlID09IE5l
ZWRUb1NwaWxsID8gUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0luVXNlIDogUHJvcGVy
dHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0ZsdXNoZWQpKTsKKyAgICAgICAgICAgIHN0dWJJbmZv
KSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHZhbHVlVGFnR1BSLCBHUFJSZWcgdmFsdWVQ
YXlsb2FkR1BSLCBFZGdlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCkKIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2ppdC5jb2Rl
QmxvY2soKS0+YWRkU3R1YkluZm8oKTsKKyAgICAKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVs
UHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBz
dHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6
VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSkpOwog
CkBAIC0yNjIsNyArMjc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChD
b2RlTwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBwYXlsb2FkU3RvcmVXaXRoUGF0Y2gg
PSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZVBheWxvYWRHUFIsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKIAogICAgIEpJVENvbXBpbGVyOjpMYWJl
bCBkb25lTGFiZWwgPSBtX2ppdC5sYWJlbCgpOwotICAgIFZfSklUT3BlcmF0aW9uX0VKSkkgb3B0
aW1pemVkQ2FsbDsKKyAgICBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wdGltaXplZENhbGw7CiAg
ICAgaWYgKG1faml0LnN0cmljdE1vZGVGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbikpIHsK
ICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgb3B0aW1pemVkQ2Fs
bCA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKQEAgLTI3NywxNCArMjkx
LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICBPd25Q
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlmICghc2xvd1BhdGhUYXJnZXQu
aXNTZXQoKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAg
IHN0cnVjdHVyZUNoZWNrLm1fanVtcCwgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZh
bHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIsCi0gICAgICAgICAgICBiYXNlUGF5bG9hZEdQUiwg
aWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmVD
aGVjay5tX2p1bXAsIHRoaXMsIG9wdGltaXplZENhbGwsIE5vUmVzdWx0LCBzdHViSW5mbywgdmFs
dWVUYWdHUFIsCisgICAgICAgICAgICB2YWx1ZVBheWxvYWRHUFIsIGJhc2VQYXlsb2FkR1BSLCBp
ZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBK
SVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KHN0cnVjdHVyZUNoZWNrLm1fanVtcCk7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1Bh
dGhUYXJnZXQpOwogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlVGFnR1BSLCB2
YWx1ZVBheWxvYWRHUFIsCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wdGltaXplZENh
bGwsIE5vUmVzdWx0LCBzdHViSW5mbywgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwKICAg
ICAgICAgICAgIGJhc2VQYXlsb2FkR1BSLCBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIp
KTsKICAgICB9CiAgICAgUmVnaXN0ZXJTZXQgY3VycmVudGx5VXNlZFJlZ2lzdGVycyA9IHVzZWRS
ZWdpc3RlcnMoKTsKQEAgLTI5MiwxNCArMzA2LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQoQ29kZU8KICAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQo
YmFzZVBheWxvYWRHUFIpKTsKICAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQo
dmFsdWVUYWdHUFIpKTsKICAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQodmFs
dWVQYXlsb2FkR1BSKSk7CisKKyAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IGNvZGVPcmlnaW47
CisgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VQ
YXlsb2FkR1BSKTsKKyAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBzdGF0aWNfY2FzdDxp
bnQ4X3Q+KHZhbHVlUGF5bG9hZEdQUik7CisgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlVGFnR1BS
ID0gc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZVRhZ0dQUik7CisgICAgc3R1YkluZm8tPnBhdGNo
LnVzZWRSZWdpc3RlcnMgPSBjdXJyZW50bHlVc2VkUmVnaXN0ZXJzOworICAgIHN0dWJJbmZvLT5w
YXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gZmFsc2U7CisKICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFj
Y2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3Jp
Z2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VM
b2FkLAorICAgICAgICAgICAgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJv
cGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21w
YWN0KHRhZ1N0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkRhdGFMYWJlbENvbXBhY3QocGF5bG9hZFN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAotICAgICAg
ICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlUGF5
bG9hZEdQUiksCi0gICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlVGFnR1BSKSwgc2Fm
ZUNhc3Q8aW50OF90Pih2YWx1ZVBheWxvYWRHUFIpLAotICAgICAgICAgICAgdXNlZFJlZ2lzdGVy
cygpKSk7CisgICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzdHViSW5mbykp
OwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDYgKzIwOSw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlVUludDMKIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BS
LCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsK
KyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRk
U3R1YkluZm8oKTsKKyAgICAKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVy
ZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVj
ayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1
YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKSk7CiAgICAgCkBAIC0yMjEsMjcgKzIy
MywzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgT3du
UHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBpZiAoIXNsb3dQYXRoVGFyZ2V0
LmlzU2V0KCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAg
ICBzdHJ1Y3R1cmVDaGVjay5tX2p1bXAsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwg
cmVzdWx0R1BSLCBiYXNlR1BSLAorICAgICAgICAgICAgc3RydWN0dXJlQ2hlY2subV9qdW1wLCB0
aGlzLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdEdQUiwgc3R1YkluZm8sIGJhc2VH
UFIsCiAgICAgICAgICAgICBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpLCBzcGlsbE1v
ZGUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc3RydWN0dXJlQ2hlY2subV9qdW1wKTsKICAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUsIHJlc3VsdEdQUiwgYmFzZUdQUiwKKyAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHRHUFIsIHN0dWJJbmZvLCBi
YXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSwgc3Bp
bGxNb2RlKTsKICAgICB9CisgICAgUmVnaXN0ZXJTZXQgY3VycmVudGx5VXNlZFJlZ2lzdGVycyA9
IHVzZWRSZWdpc3RlcnMoKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQo
YmFzZUdQUikpOworICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldChyZXN1bHRH
UFIpKTsKKyAgICAKKyAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IGNvZGVPcmlnaW47CisgICAg
c3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VHUFIpOwor
ICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4ocmVzdWx0
R1BSKTsKKyAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IGN1cnJlbnRseVVzZWRS
ZWdpc3RlcnM7CisgICAgc3R1YkluZm8tPnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSBzcGlsbE1v
ZGUgIT0gTmVlZFRvU3BpbGw7CisKICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAg
ICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBsb2FkV2l0
aFBhdGNoLAotICAgICAgICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8
aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAotICAgICAgICAg
ICAgdXNlZFJlZ2lzdGVycygpLAotICAgICAgICAgICAgc3BpbGxNb2RlID09IE5lZWRUb1NwaWxs
ID8gUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0luVXNlIDogUHJvcGVydHlBY2Nlc3NS
ZWNvcmQ6OlJlZ2lzdGVyc0ZsdXNoZWQpKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZVRvQ29tcGFy
ZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGxvYWRXaXRoUGF0Y2gsCisg
ICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzdHViSW5mbykpOwogICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZUdQUiwgR1BSUmVnIHZhbHVlR1BSLCBFZGdlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCkKIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8g
PSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkU3R1YkluZm8oKTsKICAgICAKICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0
Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQ
YXRjaChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBp
bGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIp
KSk7CkBAIC0yNTQsNyArMjY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJ
ZChDb2RlTwogCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVs
KCk7CiAgICAgCi0gICAgVl9KSVRPcGVyYXRpb25fRUpKSSBvcHRpbWl6ZWRDYWxsOworICAgIFZf
SklUT3BlcmF0aW9uX0VTc2lKSkkgb3B0aW1pemVkQ2FsbDsKICAgICBpZiAobV9qaXQuc3RyaWN0
TW9kZUZvcihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKSkgewogICAgICAgICBpZiAocHV0S2lu
ZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICBvcHRpbWl6ZWRDYWxsID0gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdFN0cmljdE9wdGltaXplOwpAQCAtMjY5LDI1ICsyODAsMzIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgIE93blB0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGg7CiAgICAgaWYgKCFzbG93UGF0aFRhcmdldC5pc1NldCgpKSB7CiAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc3RydWN0dXJlQ2hlY2subV9q
dW1wLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgdmFsdWVHUFIsIGJhc2VHUFIsCisg
ICAgICAgICAgICBzdHJ1Y3R1cmVDaGVjay5tX2p1bXAsIHRoaXMsIG9wdGltaXplZENhbGwsIE5v
UmVzdWx0LCBzdHViSW5mbywgdmFsdWVHUFIsIGJhc2VHUFIsCiAgICAgICAgICAgICBpZGVudGlm
aWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHN0cnVj
dHVyZUNoZWNrLm1fanVtcCk7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJn
ZXQpOwogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgc3R1
YkluZm8sIHZhbHVlR1BSLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllclVJRChpZGVu
dGlmaWVyTnVtYmVyKSk7CiAgICAgfQogICAgIFJlZ2lzdGVyU2V0IGN1cnJlbnRseVVzZWRSZWdp
c3RlcnMgPSB1c2VkUmVnaXN0ZXJzKCk7CiAgICAgY3VycmVudGx5VXNlZFJlZ2lzdGVycy5jbGVh
cihzY3JhdGNoR1BSKTsKICAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQoYmFz
ZUdQUikpOwogICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldCh2YWx1ZUdQUikp
OworICAgIAorICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gY29kZU9yaWdpbjsKKyAgICBzdHVi
SW5mby0+cGF0Y2guYmFzZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4oYmFzZUdQUik7CisgICAg
c3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZUdQUik7
CisgICAgc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMgPSBjdXJyZW50bHlVc2VkUmVnaXN0
ZXJzOworICAgIHN0dWJJbmZvLT5wYXRjaC5yZWdpc3RlcnNGbHVzaGVkID0gZmFsc2U7CisgICAg
CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVj
b3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKKyAgICAgICAgICAgIHN0cnVjdHVyZVRvQ29t
cGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICBK
SVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xv
d1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKLSAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFz
ZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBjdXJyZW50bHlVc2VkUmVnaXN0ZXJz
KSk7CisgICAgICAgICAgICBzdHViSW5mbykpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoLnJlbGVhc2UoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTUxLDYgKzk1MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbihOb2RlKiBu
b2QKICAgICAgICAgICAgIGpzRHluYW1pY0Nhc3Q8SlNTdHJpbmcqPih2YWx1ZU9mSlNDb25zdGFu
dChub2RlLT5jaGlsZDEoKS5ub2RlKCkpKTsKICAgICAgICAgaWYgKHN0cmluZyAmJiBzdHJpbmct
PnRyeUdldFZhbHVlSW1wbCgpCiAgICAgICAgICAgICAmJiBzdHJpbmctPnRyeUdldFZhbHVlSW1w
bCgpLT5pc0lkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZFN0dWJJbmZvKCk7CisgICAgICAgICAgICAK
ICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCkBAIC05NjAsMTIgKzk2MiwxNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4oTm9kZSogbm9kCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIE93blB0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
CiAgICAgICAgICAgICAgICAganVtcC5tX2p1bXAsIHRoaXMsIG9wZXJhdGlvbkluT3B0aW1pemUs
Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3VsdEdQUiksIGJh
c2VHUFIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3VsdEdQ
UiksIHN0dWJJbmZvLCBiYXNlR1BSLAogICAgICAgICAgICAgICAgIHN0cmluZy0+dHJ5R2V0VmFs
dWVJbXBsKCkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9qaXQuYWRkSW4oSW5S
ZWNvcmQoCi0gICAgICAgICAgICAgICAgbm9kZS0+Y29kZU9yaWdpbiwganVtcCwgc2xvd1BhdGgu
Z2V0KCksIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksCi0gICAgICAgICAgICAgICAgc2FmZUNh
c3Q8aW50OF90PihyZXN1bHRHUFIpLCB1c2VkUmVnaXN0ZXJzKCkpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBub2RlLT5jb2RlT3JpZ2luOworICAg
ICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJh
c2VHUFIpOworICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nh
c3Q8aW50OF90PihyZXN1bHRHUFIpOworICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnVzZWRS
ZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gu
cmVnaXN0ZXJzRmx1c2hlZCA9IGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX2pp
dC5hZGRJbihJblJlY29yZChqdW1wLCBzbG93UGF0aC5nZXQoKSwgc3R1YkluZm8pKTsKICAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICBiYXNlLnVzZSgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU3NjU4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjMyLDE0ICsxMjMyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIGNvbnN0IFN0
cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VTc2lDSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFN0cmluZ0ltcGwqIHVpZCkKICAgICB7
Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tUHRyKHVpZCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwg
U3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgU3RyaW5nSW1wbCogdWlkKQogICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIodWlkKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VEQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKQEAgLTEzNjMsOSArMTM2Myw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIocG9pbnRl
cikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRp
b24pOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VKSkkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFN0cmluZ0lt
cGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgU3RyaW5nSW1wbCogdWlkKQogICAgIHsKLSAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIo
dWlkKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpK
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKQEAgLTE0
ODksMTkgKzE0ODksMTkgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FQ0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIGNvbnN0IFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBjb25zdCBTdHJpbmdJbXBsKiB1aWQpCiAgICAg
ewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3Rl
ZEltbVB0cih1aWQpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJl
ZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKICAgICB7Ci0g
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8p
LCBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCBpbnQzMl90IGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCwgU3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVn
IHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgaW50MzJfdCBhcmcx
VGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKICAgICB7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBh
cmcxUGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihz
dHViSW5mbyksIGFyZzFQYXlsb2FkLCBUcnVzdGVkSW1tMzIoYXJnMVRhZyksIFRydXN0ZWRJbW1Q
dHIodWlkKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FREEgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgRlBSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQpAQCAtMTYyMSwxMyArMTYyMSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcx
UGF5bG9hZCwgYXJnMVRhZywgYXJnMiwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CiAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQot
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSSBv
cGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcy
UGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24sIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFy
ZzJQYXlsb2FkLCBTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogI2lmIENQVShTSDQpCiAgICAgICAg
IC8vIFdlIGhhdmUgdG8gcHV0IHVpZCBpbiB0aGUgNHRoIGFyZ3VtZW50IHJlZ2lzdGVyIChyNykg
YXMgNjQtYml0IHZhbHVlIGFyZzIgd2lsbCBiZSBwdXQgb24gc3RhY2sgZm9yIHNoNCBhcmNoaXRl
Y3VyZS4KLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXls
b2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCksIGFyZzJQYXlsb2FkLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBU
cnVzdGVkSW1tUHRyKHVpZCksIGFyZzJQYXlsb2FkLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZykpOwogI2Vsc2UKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHVi
SW5mbyksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwogI2VuZGlmCiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAxNTc2
NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjQsNiArMjY0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzMpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFk
ZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0
ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCiAgICAgewogICAgICAgICByZXNldENh
bGxBcmd1bWVudHMoKTsKQEAgLTM5MSw2ICs0MDAsNjEgQEAgcHVibGljOgogICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnNCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW1QdHIgYXJnNSkKKyAgICB7
CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
MSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmc1KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUsIFRydXN0ZWRJbW1QdHIgYXJnNikK
KyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzYpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBh
cmc0LCBUcnVzdGVkSW1tMzIgYXJnNSwgVHJ1c3RlZEltbVB0ciBhcmc2KQorICAgIHsKKyAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Myk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzUpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNik7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQor
ICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1t
UHRyIGFyZzQpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQp
OworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJl
ZyBhcmc0KQogICAgIHsKICAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CkBAIC0xMDY1LDYg
KzExMjksMTQgQEAgcHVibGljOgogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJS
ZWcgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOyAvLyBJbiBjYXNlIGFyZzIgaXMgYXJndW1lbnRHUFIxLgor
ICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUo
YXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIg
YXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMykKICAgICB7CiAgICAg
ICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKQEAgLTExMjQsNiArMTE5Niwx
MyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3RlZEltbVB0ciBhcmc1KQorICAgIHsKKyAgICAg
ICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFy
ZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIg
YXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7
CiAgICAgICAgIHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKQEAgLTEzMTMs
NiArMTM5MiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisgICAgeworICAgICAgICBzZXR1cFR3b1N0
dWJBcmdzR1BSPEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzPihh
cmcyLCBhcmczKTsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwor
ICAgICAgICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSNCk7CisgICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
fQogI2VuZGlmCiAKICAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBk
ZXN0QikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE1NzY1OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDg3LDIwICs0ODcsMjAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICNl
bmRpZgogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZv
Ojpjb3B5VG9TdHViSW5mbyhTdHJ1Y3R1cmVTdHViSW5mbyYgaW5mbywgTGlua0J1ZmZlciAmbGlu
a0J1ZmZlcikKK0FMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm86
OmNvcHlUb1N0dWJJbmZvKExpbmtCdWZmZXIgJmxpbmtCdWZmZXIpCiB7CiAgICAgQVNTRVJUKGJ5
dGVjb2RlSW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAg
ICBpbmZvLmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpOwotICAgIGluZm8u
Y2FsbFJldHVybkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGNhbGxSZXR1cm5Mb2Nh
dGlvbik7CisgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKGJ5dGVjb2RlSW5k
ZXgpOworICAgIHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2YoY2FsbFJldHVybkxvY2F0aW9uKTsKIAotICAgIGluZm8ucGF0Y2guZGVsdGFDaGVja0lt
bVRvQ2FsbCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIobGlua0J1
ZmZlci5sb2NhdGlvbk9mKHN0cnVjdHVyZVRvQ29tcGFyZSksIGluZm8uY2FsbFJldHVybkxvY2F0
aW9uKTsKLSAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2sgPSBNYWNyb0Fzc2Vt
Ymxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBs
aW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0dXJlQ2hlY2spKTsKKyAgICBzdHViSW5mby0+cGF0
Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2Vl
bkNvZGVQdHIobGlua0J1ZmZlci5sb2NhdGlvbk9mKHN0cnVjdHVyZVRvQ29tcGFyZSksIHN0dWJJ
bmZvLT5jYWxsUmV0dXJuTG9jYXRpb24pOworICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxU
b1N0cnVjdENoZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihz
dHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc3RydWN0
dXJlQ2hlY2spKTsKICAgICAKLSAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBN
YWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY29sZFBhdGhCZWdpbikpOwotICAgIGluZm8u
cGF0Y2guZGVsdGFDYWxsVG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGRv
bmUpKTsKLSAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2Vt
Ymxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOworICAgIHN0dWJJbmZv
LT5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YoY29sZFBhdGhCZWdpbikpOworICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxU
b0RvbmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZv
LT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihkb25lKSk7CisgICAg
c3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxp
bmtCdWZmZXIubG9jYXRpb25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAgICAgCi0gICAgaW5m
by5wYXRjaC5iYXNlR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgc3R1YkluZm8tPnBhdGNoLmJh
c2VHUFIgPSBHUFJJbmZvOjpyZWdUMDsKIAogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7
CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDApOwpAQCAtNTA4LDM3ICs1MDgs
MzcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogI2lmIFVTRShK
U1ZBTFVFNjQpIC8vIEpTVkFMVUUgY2FzZXMKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNh
c2UgR2V0QnlJZDoKLSAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlID0g
TWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7Ci0g
ICAgICAgIGluZm8ucGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICAgICAgc3R1
YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlm
ZmVyZW5jZUJldHdlZW5Db2RlUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbCkpOworICAgICAgICBzdHViSW5m
by0+cGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBQdXRCeUlkOgotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUg
PSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsK
LSAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QxOworICAgICAgICBz
dHViSW5mby0+cGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpk
aWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKHB1dERpc3BsYWNlbWVudExhYmVsKSk7CisgICAgICAgIHN0dWJJ
bmZvLT5wYXRjaC52YWx1ZUdQUiA9IEdQUkluZm86OnJlZ1QxOwogICAgICAgICB1c2VkUmVnaXN0
ZXJzLnNldChHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICNlbHNlIC8v
IEpTVkFMVUUgY2FzZXMKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgR2V0QnlJZDoK
LSAgICAgICAgaW5mby5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlID0gTWFjcm9Bc3Nl
bWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwg
bGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsMikpOwotICAgICAgICBp
bmZvLnBhdGNoLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6
OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1
ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsMSkpOwotICAgICAgICBpbmZvLnBh
dGNoLnZhbHVlR1BSID0gR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgIGluZm8ucGF0Y2gudmFsdWVU
YWdHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2Fs
bFRvVGFnTG9hZE9yU3RvcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2Rl
UHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihn
ZXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2Fs
bFRvUGF5bG9hZExvYWRPclN0b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwxKSk7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1
ZUdQUiA9IEdQUkluZm86OnJlZ1QwOworICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVUYWdH
UFIgPSBHUFJJbmZvOjpyZWdUMTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6
cmVnVDEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5SWQ6Ci0gICAgICAgIGluZm8u
cGF0Y2guZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9j
YXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbDIpKTsKLSAgICAgICAgaW5mby5wYXRjaC5kZWx0
YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0
d2VlbkNvZGVQdHIoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihwdXREaXNwbGFjZW1lbnRMYWJlbDEpKTsKLSAgICAgICAgaW5mby5wYXRjaC52YWx1ZUdQUiA9
IEdQUkluZm86OnJlZ1QyOwotICAgICAgICBpbmZvLnBhdGNoLnZhbHVlVGFnR1BSID0gR1BSSW5m
bzo6cmVnVDM7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0
b3JlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHViSW5mby0+
Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50
TGFiZWwyKSk7CisgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUNhbGxUb1BheWxvYWRMb2Fk
T3JTdG9yZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoc3R1Yklu
Zm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERpc3BsYWNl
bWVudExhYmVsMSkpOworICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBHUFJJbmZv
OjpyZWdUMjsKKyAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlVGFnR1BSID0gR1BSSW5mbzo6
cmVnVDM7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEdQUkluZm86OnJlZ1QyKTsKICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAjZW5kaWYgLy8gSlNWQUxVRSBjYXNlcwogICAgIAotICAgIGluZm8ucGF0Y2gudXNlZFJl
Z2lzdGVycyA9IHVzZWRSZWdpc3RlcnM7Ci0gICAgaW5mby5wYXRjaC5yZWdpc3RlcnNGbHVzaGVk
ID0gdHJ1ZTsKKyAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IHVzZWRSZWdpc3Rl
cnM7CisgICAgc3R1YkluZm8tPnBhdGNoLnJlZ2lzdGVyc0ZsdXNoZWQgPSB0cnVlOwogfQogCiBD
b21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0
IGVmZm9ydCkKQEAgLTczMyw5ICs3MzMsOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZh
dGVDb21waWxlKEpJCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGl0ZXItPmZyb20sIEZ1
bmN0aW9uUHRyKGl0ZXItPnRvKSk7CiAgICAgfQogCi0gICAgbV9jb2RlQmxvY2stPnNldE51bWJl
ck9mU3RydWN0dXJlU3R1YkluZm9zKG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uc2l6
ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBp
bGF0aW9uSW5mby5zaXplKCk7ICsraSkKLSAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0
aW9uSW5mb1tpXS5jb3B5VG9TdHViSW5mbyhtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8o
aSksIHBhdGNoQnVmZmVyKTsKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5m
b1tpXS5jb3B5VG9TdHViSW5mbyhwYXRjaEJ1ZmZlcik7CiAgICAgbV9jb2RlQmxvY2stPnNldE51
bWJlck9mQnlWYWxJbmZvcyhtX2J5VmFsQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYnlWYWxDb21waWxhdGlvbkluZm8uc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgQ29kZUxvY2F0aW9uSnVtcCBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1
bXAocGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX2J5VmFsQ29tcGlsYXRpb25JbmZvW2ldLmJhZFR5
cGVKdW1wKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1NzY1OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE3
Myw2ICsxNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbDMyIHB1dERpc3BsYWNlbWVudExhYmVsMTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbDMyIHB1dERpc3BsYWNlbWVudExhYmVsMjsKICNlbmRpZgorICAgICAgICBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm87CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAg
IFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbygpCkBAIC0yMzYsMTAgKzIzNywxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzbG93Q2Fz
ZUluZm8oTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGNvbGRQYXRoQmVnaW4sIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGwpCisgICAgICAgIHZvaWQgc2xvd0Nhc2VJbmZvKE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBjb2xkUGF0aEJlZ2luLCBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsLCBTdHJ1Y3R1cmVT
dHViSW5mbyogaW5mbykKICAgICAgICAgewogICAgICAgICAgICAgY2FsbFJldHVybkxvY2F0aW9u
ID0gY2FsbDsKICAgICAgICAgICAgIHRoaXMtPmNvbGRQYXRoQmVnaW4gPSBjb2xkUGF0aEJlZ2lu
OworICAgICAgICAgICAgc3R1YkluZm8gPSBpbmZvOwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBzbG93Q2FzZUluZm8oTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCkKQEAgLTI0Nyw3ICsyNDks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGNhbGxSZXR1cm5Mb2NhdGlvbiA9IGNh
bGw7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGNvcHlUb1N0dWJJbmZvKFN0cnVjdHVyZVN0
dWJJbmZvJiBpbmZvLCBMaW5rQnVmZmVyICZwYXRjaEJ1ZmZlcik7CisgICAgICAgIHZvaWQgY29w
eVRvU3R1YkluZm8oTGlua0J1ZmZlciAmcGF0Y2hCdWZmZXIpOwogICAgIH07CiAKICAgICBzdHJ1
Y3QgQnlWYWxDb21waWxhdGlvbkluZm8gewpAQCAtNzg1LDkgKzc4Nyw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VDLCBpbnQsIEpTQ2VsbCopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKLCBpbnQsIEdQUlJlZyk7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihXaXRo
UHJvZmlsZVRhZywgSl9KSVRPcGVyYXRpb25fRUpJLCBpbnQsIEdQUlJlZywgU3RyaW5nSW1wbCop
OworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFdpdGhQcm9maWxl
VGFnLCBKX0pJVE9wZXJhdGlvbl9FU3NpSkksIGludCwgU3RydWN0dXJlU3R1YkluZm8qLCBHUFJS
ZWcsIFN0cmluZ0ltcGwqKTsKICNlbHNlCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oV2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VKSSwgaW50LCBHUFJS
ZWcsIEdQUlJlZywgU3RyaW5nSW1wbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FU3NpSkksIGludCwg
U3RydWN0dXJlU3R1YkluZm8qLCBHUFJSZWcsIEdQUlJlZywgU3RyaW5nSW1wbCopOwogI2VuZGlm
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUpJZGMsIGludCwgR1BSUmVnLCBjb25zdCBJZGVudGlmaWVyKik7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKLCBpbnQsIEdQ
UlJlZywgR1BSUmVnKTsKQEAgLTgxOCw5ICs4MjAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRp
ZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VKSWRKSiwgUmVnaXN0ZXJJRCwgY29uc3QgSWRlbnRpZmllciosIFJlZ2lzdGVySUQsIFJl
Z2lzdGVySUQpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSSwgUmVnaXN0ZXJJRCwgUmVnaXN0
ZXJJRCwgU3RyaW5nSW1wbCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkksIFN0cnVjdHVyZVN0dWJJbmZvKiwgUmVnaXN0
ZXJJRCwgUmVnaXN0ZXJJRCwgU3RyaW5nSW1wbCopOwogI2Vsc2UKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpJLCBSZWdpc3RlcklE
LCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNz
aUpKSSwgU3RydWN0dXJlU3R1YkluZm8qLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3Rl
cklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CiAjZW5kaWYKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKLCBSZWdpc3RlcklE
LCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSlpKLCBSZWdpc3RlcklELCBpbnQzMl90LCBS
ZWdpc3RlcklEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShy
ZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzA4LDkgKzMwOCw5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhvcGVyYXRpb24pOwogfQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpJIG9wZXJhdGlvbiwgUmVnaXN0
ZXJJRCByZWdPcDEsIFJlZ2lzdGVySUQgcmVnT3AyLCBTdHJpbmdJbXBsKiB1aWQpCitBTFdBWVNf
SU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBSZWdp
c3RlcklEIHJlZ09wMSwgUmVnaXN0ZXJJRCByZWdPcDIsIFN0cmluZ0ltcGwqIHVpZCkKIHsKLSAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUocmVnT3AxLCByZWdPcDIsIFRydXN0ZWRJbW1Q
dHIodWlkKSk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
c3R1YkluZm8pLCByZWdPcDEsIHJlZ09wMiwgVHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQogCkBAIC0zMjAs
OSArMzIwLDkgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKLUFM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpJVDo6
V2l0aFByb2ZpbGVUYWcsIEpfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIGludCBkc3QsIEdQ
UlJlZyBhcmcxLCBTdHJpbmdJbXBsKiB1aWQpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKSVQ6OldpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJh
dGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBpbnQgZHN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEdQUlJlZyBhcmcxLCBTdHJpbmdJbXBsKiB1aWQpCiB7Ci0gICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBUcnVzdGVkSW1t
UHRyKHVpZCkpOwogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNW
YWx1ZVJlc3VsdFdpdGhQcm9maWxlKG9wZXJhdGlvbiwgZHN0KTsKIH0KIApAQCAtNDYwLDkgKzQ2
MCw5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9u
LCBkc3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2Fs
bE9wZXJhdGlvbihKSVQ6OldpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FSkkgb3BlcmF0
aW9uLCBpbnQgZHN0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBTdHJpbmdJ
bXBsKiB1aWQpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9w
ZXJhdGlvbihKSVQ6OldpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0
aW9uLCBpbnQgZHN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxVGFn
LCBHUFJSZWcgYXJnMVBheWxvYWQsIFN0cmluZ0ltcGwqIHVpZCkKIHsKLSAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFU
YWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZElt
bVB0cih1aWQpKTsKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpT
VmFsdWVSZXN1bHRXaXRoUHJvZmlsZShvcGVyYXRpb24sIGRzdCk7CiB9CiAKQEAgLTUyMCwxMyAr
NTIwLDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQogCi1BTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FSkpJIG9wZXJhdGlvbiwgUmVnaXN0ZXJJRCByZWdPcDFUYWcsIFJlZ2lzdGVySUQg
cmVnT3AxUGF5bG9hZCwgUmVnaXN0ZXJJRCByZWdPcDJUYWcsIFJlZ2lzdGVySUQgcmVnT3AyUGF5
bG9hZCwgU3RyaW5nSW1wbCogdWlkKQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24sIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUmVnaXN0ZXJJRCByZWdPcDFUYWcsIFJlZ2lzdGVy
SUQgcmVnT3AxUGF5bG9hZCwgUmVnaXN0ZXJJRCByZWdPcDJUYWcsIFJlZ2lzdGVySUQgcmVnT3Ay
UGF5bG9hZCwgU3RyaW5nSW1wbCogdWlkKQogewogI2lmIENQVShTSDQpCiAgICAgLy8gV2UgaGF2
ZSB0byBwdXQgdWlkIGluIHRoZSA0dGggYXJndW1lbnQgcmVnaXN0ZXIgKHI3KSBhcyA2NC1iaXQg
dmFsdWUgcmVnT3AyIHdpbGwgYmUgcHV0IG9uIHN0YWNrIGZvciBzaDQgYXJjaGl0ZWN1cmUuCi0g
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKHJlZ09wMVBheWxvYWQsIHJlZ09wMVRhZywg
VHJ1c3RlZEltbVB0cih1aWQpLCByZWdPcDJQYXlsb2FkLCByZWdPcDJUYWcpOworICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgcmVnT3AxUGF5
bG9hZCwgcmVnT3AxVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCksIHJlZ09wMlBheWxvYWQsIHJlZ09w
MlRhZyk7CiAjZWxzZQotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklU
X0RVTU1ZX0FSRyByZWdPcDFQYXlsb2FkLCByZWdPcDFUYWcsIHJlZ09wMlBheWxvYWQsIHJlZ09w
MlRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIHJlZ09wMVBheWxvYWQsIHJlZ09wMVRhZywgcmVn
T3AyUGF5bG9hZCwgcmVnT3AyVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwogI2VuZGlmCiAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MTU3NjU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Db25zdHJ1Y3QKICAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKQEAgLTEyNCw1MSArMTI0LDQ2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQo
ZXhlYywgaWRlbnQsIHNsb3QpKTsKIH0KIAotSl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJO
X0FERFJFU1NfRUpJKG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QpOwotRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0V2l0aFJldHVybkFkZHJlc3Mo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1wbCogdWlkKQog
ewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1Yklu
Zm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nh
c3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwog
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJv
cGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1
ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOwogCi0gICAgaWYgKGFjY2Vzc1R5cGUgPT0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCi0gICAgICAgIGJ1aWxkR2V0
QnlJRExpc3QoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8pOworICAgIGlm
IChhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKSkKKyAgICAgICAgYnVpbGRHZXRCeUlETGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBz
bG90LCAqc3R1YkluZm8pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCi1KX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkkob3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVk
SlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgSWRl
bnRpZmllciBpZGVudCA9IHVpZC0+aXNFbXB0eVVuaXF1ZSgpID8gSWRlbnRpZmllcjo6ZnJvbShQ
cml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFk
ZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5
cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0
YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBz
bG90KGJhc2VWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMs
IGlkZW50LCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxB
Y2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkgewotICAgICAgICBpZiAoc3R1YkluZm8u
c2VlbikKLSAgICAgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQs
IHNsb3QsIHN0dWJJbmZvKTsKKyAgICBpZiAoYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpIHsKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5z
ZWVuKQorICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwg
c2xvdCwgKnN0dWJJbmZvKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3R1YkluZm8uc2Vl
biA9IHRydWU7CisgICAgICAgICAgICBzdHViSW5mby0+c2VlbiA9IHRydWU7CiAgICAgfQogCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1KX0ZVTkNUSU9OX1dSQVBQ
RVJfV0lUSF9SRVRVUk5fQUREUkVTU19FQ0kob3BlcmF0aW9uSW5PcHRpbWl6ZSk7Ci1FbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemVXaXRoUmV0dXJuQWRkcmVz
cyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5KQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwpA
QCAtMTc4LDI0ICsxNzMsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25JbgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IH0KICAgICAKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxv
Y2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8t
PmFjY2Vzc1R5cGUpOwogCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsKICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlKTsKICAgICBib29sIHJlc3VsdCA9IGFzT2JqZWN0KGJhc2UpLT5n
ZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIAotICAgIFJFTEVBU0VfQVNT
RVJUKGFjY2Vzc1R5cGUgPT0gc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoYWNjZXNzVHlwZSA9PSBzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAgICAgCi0gICAgaWYgKHN0
dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hJbihleGVjLCBiYXNlLCBpZGVudCwgcmVzdWx0
LCBzbG90LCBzdHViSW5mbyk7CisgICAgaWYgKHN0dWJJbmZvLT5zZWVuKQorICAgICAgICByZXBh
dGNoSW4oZXhlYywgYmFzZSwgaWRlbnQsIHJlc3VsdCwgc2xvdCwgKnN0dWJJbmZvKTsKICAgICBl
bHNlCi0gICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHViSW5mby0+c2Vl
biA9IHRydWU7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVz
dWx0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIFN0cmluZ0ltcGwqIGtleSkKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5KQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwpAQCAtMjM1LDcgKzIyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ2EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxHZXR0ZXIoZXhlYywgYmFzZSwg
Z2V0dGVyU2V0dGVyKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTI0NSw3ICsyMzks
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljCiAgICAgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS5wdXQoZXhlYywgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwpAQCAt
MjU1LDcgKzI0OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QK
ICAgICBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnB1dChleGVjLCBpZGVudCwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwq
IHVpZCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CkBAIC0yNjUsNyArMjU5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlYwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSkpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpLCBzbG90KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRE
aXJlY3ROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwpAQCAtMjc1LDE1ICsyNjksMTMgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREaXJlYwogICAgIGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpLT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBz
bG90KTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpKSShv
cGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1Yklu
Zm8ocmV0dXJuQWRkcmVzcyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nh
c3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwog
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTI5
MSwyNCArMjgzLDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMK
ICAgICAKICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAg
Ci0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8u
YWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlw
ZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYg
KHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwg
aWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBOb3REaXJlY3QpOworICAgIGlmIChzdHViSW5mby0+c2Vl
bikKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwg
KnN0dWJJbmZvLCBOb3REaXJlY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3R1YkluZm8uc2VlbiA9
IHRydWU7CisgICAgICAgIHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KIAotVl9GVU5DVElPTl9X
UkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpKSShvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0
T3B0aW1pemUpOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RP
cHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlk
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAg
ICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVz
cyk7Ci0gICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4o
c3R1YkluZm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTMxNiwyNCArMzA2LDIyIEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKICAgICAKICAgICBiYXNl
VmFsdWUucHV0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGFjY2Vz
c1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlwZSkpCisg
ICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFj
Y2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHN0dWJJbmZvLnNlZW4p
Ci0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsIHN0
dWJJbmZvLCBOb3REaXJlY3QpOworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVw
YXRjaFB1dEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBOb3RE
aXJlY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7CisgICAgICAg
IHN0dWJJbmZvLT5zZWVuID0gdHJ1ZTsKIH0KIAotVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVU
VVJOX0FERFJFU1NfRUpKSShvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpOwot
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZVdp
dGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCiAg
ICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7Ci0g
ICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1Yklu
Zm8uYWNjZXNzVHlwZSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CkBAIC0zNDEsMjQgKzMy
OSwyMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiAgICAgCiAg
ICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGlkZW50LCB2YWx1ZSwgc2xvdCk7
CiAgICAgCi0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8uYWNjZXNzVHlwZSkpCisgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgaWYgKHN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VP
YmplY3QsIGlkZW50LCBzbG90LCBzdHViSW5mbywgRGlyZWN0KTsKKyAgICBpZiAoc3R1YkluZm8t
PnNlZW4pCisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBz
bG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiAgICAgZWxzZQotICAgICAgICBzdHViSW5mby5zZWVu
ID0gdHJ1ZTsKKyAgICAgICAgc3R1YkluZm8tPnNlZW4gPSB0cnVlOwogfQogCi1WX0ZVTkNUSU9O
X1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkpJKG9wZXJhdGlvblB1dEJ5SWREaXJlY3RO
b25TdHJpY3RPcHRpbWl6ZSk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdE5vblN0cmljdE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBT
dHJpbmdJbXBsKiB1aWQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwot
ICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRT
dHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKKyAgICBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlw
ZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpKTsKQEAgLTM2NiwyNCArMzUyLDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkRGlyZWMKICAgICAKICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBz
dGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNj
ZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc3R1YkluZm8uc2VlbikKLSAgICAgICAg
cmVwYXRjaFB1dEJ5SUQoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsIHN0dWJJbmZvLCBE
aXJlY3QpOworICAgIGlmIChzdHViSW5mby0+c2VlbikKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQo
ZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKICAgICBl
bHNlCi0gICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBzdHViSW5mby0+c2Vl
biA9IHRydWU7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VK
Skkob3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdCk7Ci12b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlk
KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7
Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdl
dFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0
YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7
CkBAIC0zOTEsMjEgKzM3NSwxOSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFN0cmljCiAgICAgCiAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNsb3Qp
OwogICAgIAotICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0
dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1Yklu
Zm8sIE5vdERpcmVjdCk7CisgICAgYnVpbGRQdXRCeUlkTGlzdChleGVjLCBiYXNlVmFsdWUsIGlk
ZW50LCBzbG90LCAqc3R1YkluZm8sIE5vdERpcmVjdCk7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBF
Ul9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSkkob3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxk
TGlzdCk7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxk
TGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAg
IAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3Mp
OwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0
dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC00MTMsMjEgKzM5NSwxOSBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0CiAgICAgCiAgICAgYmFzZVZh
bHVlLnB1dChleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChhY2Nlc3NU
eXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQorICAg
IGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGJ1aWxkUHV0QnlJZExpc3QoZXhl
YywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgc3R1YkluZm8sIE5vdERpcmVjdCk7CisgICAgYnVp
bGRQdXRCeUlkTGlzdChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIE5v
dERpcmVjdCk7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VK
Skkob3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCk7Ci12b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRy
ZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0
cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAogICAgIElkZW50aWZp
ZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhl
Yy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5
cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09i
amVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKQEAgLTQzNSwyMSArNDE1LDE5IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKICAgICAKICAgICBiYXNl
T2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAK
LSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5h
Y2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBl
PihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBidWls
ZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90LCBzdHViSW5mbywgRGly
ZWN0KTsKKyAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBzbG90
LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKLVZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVS
Tl9BRERSRVNTX0VKSkkob3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCk7
Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxk
TGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7Ci0gICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFk
ZHJlc3MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5
cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0
YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIAogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOwpAQCAt
NDU3LDEwICs0MzUsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJl
YwogICAgIAogICAgIGJhc2VPYmplY3QgLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgaWRlbnQsIHZh
bHVlLCBzbG90KTsKICAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKKyAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VPYmplY3QsIGlkZW50LCBz
bG90LCBzdHViSW5mbywgRGlyZWN0KTsKKyAgICBidWlsZFB1dEJ5SWRMaXN0KGV4ZWMsIGJhc2VP
YmplY3QsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiAr
NzAsNyBAQCBleHRlcm4gIkMiIHsKICAgICBQYzogSW5zdHJ1Y3Rpb24qIGkuZS4gYnl0ZWNvZGUg
UEMKICAgICBSOiBSZWdpc3RlcgogICAgIFM6IHNpemVfdAorICAgIFNzaTogU3RydWN0dXJlU3R1
YkluZm8qCiAgICAgU3Q6IFN0cnVjdHVyZSoKICAgICBWOiB2b2lkCiAgICAgVm06IFZNKgpAQCAt
OTAsNyArOTEsNiBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKCiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSSko
RXhlY1N0YXRlKiwgU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsK
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VK
QSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKLXR5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKSSkoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKSWRjKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgq
Sl9KSVRPcGVyYXRpb25fRUpzc1opKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgaW50MzJfdCk7CkBA
IC0xMDAsNiArMTAwLDggQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgq
SgogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25f
RVBTKShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rp
b24qKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0
aW9uX0VTUykoRXhlY1N0YXRlKiwgc2l6ZV90LCBzaXplX3QpOwordHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVNzaUNJKShFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFN0cmluZ0ltcGwqKTsKK3R5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRl
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopOwogdHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVopKEV4
ZWNTdGF0ZSosIGludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
ICgqSl9KSVRPcGVyYXRpb25fRVpJY2ZaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBJbmxpbmVDYWxs
RnJhbWUqLCBpbnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAo
KkpfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CkBAIC0x
NDAsNyArMTQyLDYgQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdAog
dHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9w
ZXJhdGlvbl9FSkNJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKiwgU3RyaW5n
SW1wbCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSklk
SkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlKTsKLXR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRP
cGVyYXRpb25fRUpKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0
aW9uX0VKSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlv
bl9FSlBQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCosIHZvaWQqKTsKIHR5cGVk
ZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUpaSikoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKQEAgLTE0OSw2ICsxNTAs
NyBAQCB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0CiB0eXBlZGVmIHZv
aWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VPWkopKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJ
T04gKCpWX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBl
ZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSos
IHZvaWQqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgSklUX09QRVJB
VElPTiAoKlZfSklUT3BlcmF0aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKik7CiB0eXBl
ZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX1cpKFdhdGNocG9pbnRTZXQq
KTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVopKEV4ZWNT
dGF0ZSosIGludDMyX3QpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJh
dGlvbl9FVm0pKEV4ZWNTdGF0ZSosIFZNKik7CkBAIC0xODAsMjYgKzE4MiwyNiBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVk1IYW5kbGVFeGNlCiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uU3RhY2tDaGVjayhFeGVjU3RhdGUqLCBDb2RlQmxvY2sqKSBXVEZfSU5URVJOQUw7CiBp
bnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soRXhlY1N0YXRlKikg
V1RGX0lOVEVSTkFMOwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFy
aXR5Q2hlY2soRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJp
bmdJbXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwq
KSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbklu
T3B0aW1pemUoRXhlY1N0YXRlKiwgSlNDZWxsKiwgU3RyaW5nSW1wbCopOwotRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbihFeGVjU3RhdGUqLCBKU0NlbGwqLCBTdHJpbmdJ
bXBsKik7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
QnlJZEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFN0cmluZ0ltcGwqKTsKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBK
U0NlbGwqLCBTdHJpbmdJbXBsKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdlbmVyaWNJbihFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxDdXN0b21HZXR0ZXIoRXhlY1N0
YXRlKiwgSlNDZWxsKiwgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMsIFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxH
ZXR0ZXIoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1w
bCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9u
U3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRE
aXJlY3ROb25TdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZf
SU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1
aWxkTGlzdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwq
KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmlj
dChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVj
U3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0LCBFbmNvZGVkSlNW
YWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDE1NzY1OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUyMyw5ICs1MjMsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV9pZChJbnN0cnVjdAogCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAg
ICAgCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihXaXRoUHJvZmlsZSwgb3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCByZWdUMSwgcmVnVDAsIGlkZW50LT5pbXBsKCkp
OworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRTdHVi
SW5mbygpOworICAgIAorICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGUs
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VlJlZywgc3R1YkluZm8sIHJlZ1QxLCBy
ZWdUMCwgaWRlbnQtPmltcGwoKSk7CiAKLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25J
bmZvW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4KytdLnNsb3dDYXNlSW5mbyhjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvW21f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4KytdLnNsb3dDYXNlSW5mbyhjb2xkUGF0aEJl
Z2luLCBjYWxsLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNTc5LDcgKzU4MSw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3QKICAgICAKICAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luKHRoaXMpOwogICAgIAotICAgIFZfSklUT3BlcmF0aW9uX0VKSkkgb3B0aW1pemVk
Q2FsbDsKKyAgICBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wdGltaXplZENhbGw7CiAgICAgaWYg
KG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAoZGlyZWN0KQogICAg
ICAgICAgICAgb3B0aW1pemVkQ2FsbCA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRp
bWl6ZTsKQEAgLTU5MiwxMCArNTk0LDEyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlf
aWQoSW5zdHJ1Y3QKICAgICAgICAgICAgIG9wdGltaXplZENhbGwgPSBvcGVyYXRpb25QdXRCeUlk
Tm9uU3RyaWN0T3B0aW1pemU7CiAgICAgfQogICAgIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3B0aW1pemVkQ2FsbCwgcmVnVDMsIHJlZ1QyLCByZWdUMSwgcmVnVDAsIGlkZW50LT5p
bXBsKCkpOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1fY29kZUJsb2NrLT5h
ZGRTdHViSW5mbygpOworICAgIAorICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3B0aW1p
emVkQ2FsbCwgc3R1YkluZm8sIHJlZ1QzLCByZWdUMiwgcmVnVDEsIHJlZ1QwLCBpZGVudC0+aW1w
bCgpKTsKIAogICAgIC8vIFRyYWNrIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2FsbDsgdGhpcyB3aWxs
IGJlIHVzZWQgdG8gcmVjb3ZlciBwYXRjaCBpbmZvcm1hdGlvbi4KLSAgICBtX3Byb3BlcnR5QWNj
ZXNzQ29tcGlsYXRpb25JbmZvW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4KytdLnNs
b3dDYXNlSW5mbyhjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29t
cGlsYXRpb25JbmZvW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4KytdLnNsb3dDYXNl
SW5mbyhjb2xkUGF0aEJlZ2luLCBjYWxsLCBzdHViSW5mbyk7CiB9CiAKIC8vIENvbXBpbGUgYSBz
dG9yZSBpbnRvIGFuIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJh
c2UuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw5ICs1NjUsMTEgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdAogCiAgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAgICAgCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bihXaXRoUHJvZmlsZSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCByZWdU
MCwgaWRlbnQtPmltcGwoKSk7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbV9j
b2RlQmxvY2stPmFkZFN0dWJJbmZvKCk7CisgICAgCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihXaXRoUHJvZmlsZSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBz
dHViSW5mbywgcmVnVDAsIGlkZW50LT5pbXBsKCkpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0Nv
bXBpbGF0aW9uSW5mb1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRleCsrXS5zbG93Q2Fz
ZUluZm8oY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0
aW9uSW5mb1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRleCsrXS5zbG93Q2FzZUluZm8o
Y29sZFBhdGhCZWdpbiwgY2FsbCwgc3R1YkluZm8pOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTYxOCw3ICs2MjAs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0CiAKICAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luKHRoaXMpOwogICAgIAotICAgIFZfSklUT3BlcmF0aW9uX0VKSkkgb3B0
aW1pemVkQ2FsbDsKKyAgICBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wdGltaXplZENhbGw7CiAg
ICAgaWYgKG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAoZGlyZWN0
KQogICAgICAgICAgICAgb3B0aW1pemVkQ2FsbCA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJp
Y3RPcHRpbWl6ZTsKQEAgLTYzMSwxMCArNjMzLDEyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfaWQoSW5zdHJ1Y3QKICAgICAgICAgICAgIG9wdGltaXplZENhbGwgPSBvcGVyYXRpb25Q
dXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CiAgICAgfQogICAgIAotICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24ob3B0aW1pemVkQ2FsbCwgcmVnVDEsIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsK
KyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2NvZGVCbG9jay0+YWRkU3R1Yklu
Zm8oKTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3B0aW1pemVkQ2FsbCwgc3R1
YkluZm8sIHJlZ1QxLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CiAKICAgICAvLyBUcmFjayB0aGUg
bG9jYXRpb24gb2YgdGhlIGNhbGw7IHRoaXMgd2lsbCBiZSB1c2VkIHRvIHJlY292ZXIgcGF0Y2gg
aW5mb3JtYXRpb24uCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1ttX3Byb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRleCsrXS5zbG93Q2FzZUluZm8oY29sZFBhdGhCZWdpbiwg
Y2FsbCk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1ttX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25JbmRleCsrXS5zbG93Q2FzZUluZm8oY29sZFBhdGhCZWdpbiwgY2FsbCwg
c3R1YkluZm8pOwogfQogCiAvLyBDb21waWxlIGEgc3RvcmUgaW50byBhbiBvYmplY3QncyBwcm9w
ZXJ0eSBzdG9yYWdlLiAgTWF5IG92ZXJ3cml0ZSB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMTU3NjU4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEwLDcgKzYxMCw3IEBAIHZv
aWQgYnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICAgICAgcmVwYXRjaENh
bGwoZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3BlcmF0
aW9uR2V0QnlJZCk7CiB9CiAKLXN0YXRpYyBWX0pJVE9wZXJhdGlvbl9FSkpJIGFwcHJvcHJpYXRl
R2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtp
bmQgcHV0S2luZCkKK3N0YXRpYyBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIGFwcHJvcHJpYXRlR2Vu
ZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQg
cHV0S2luZCkKIHsKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAo
cHV0S2luZCA9PSBEaXJlY3QpCkBAIC02MjIsNyArNjIyLDcgQEAgc3RhdGljIFZfSklUT3BlcmF0
aW9uX0VKSkkgYXBwcm9wcmlhdGVHZQogICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3Ry
aWN0OwogfQogCi1zdGF0aWMgVl9KSVRPcGVyYXRpb25fRUpKSSBhcHByb3ByaWF0ZUxpc3RCdWls
ZGluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQg
cHV0S2luZCkKK3N0YXRpYyBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIGFwcHJvcHJpYXRlTGlzdEJ1
aWxkaW5nUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2lu
ZCBwdXRLaW5kKQogewogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlm
IChwdXRLaW5kID09IERpcmVjdCkKQEAgLTEzODgsOCArMTM4OCw4IEBAIHZvaWQgcmVzZXRHZXRC
eUlEKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2gKIAogdm9pZCByZXNldFB1dEJ5SUQoUmVwYXRjaEJ1
ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAg
IFZfSklUT3BlcmF0aW9uX0VKSkkgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IGJpdHdpc2VfY2FzdDxW
X0pJVE9wZXJhdGlvbl9FSkpJPihNYWNyb0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICBWX0pJVE9w
ZXJhdGlvbl9FSkpJIG9wdGltaXplZEZ1bmN0aW9uOworICAgIFZfSklUT3BlcmF0aW9uX0VTc2lK
SkkgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IGJpdHdpc2VfY2FzdDxWX0pJVE9wZXJhdGlvbl9FU3Np
SkpJPihNYWNyb0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJ
IG9wdGltaXplZEZ1bmN0aW9uOwogICAgIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJh
dGlvblB1dEJ5SWRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRC
eUlkU3RyaWN0QnVpbGRMaXN0KQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlv
blB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKICAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9u
ID09IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBv
cGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KQpJbmRleDogU291cmNlL1dURi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzY1
OCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTMtMTAtMTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAg
ICBBIENvZGVCbG9jaydzIFN0cnVjdHVyZVN0dWJJbmZvcyBzaG91bGRuJ3QgYmUgaW4gYSBWZWN0
b3IgdGhhdCB3ZSBzZWFyY2ggdXNpbmcgY29kZSBvcmlnaW5zIGFuZCBtYWNoaW5lIGNvZGUgUENz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5NDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6CisgICAg
ICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0JhZ1Rv
SGFzaE1hcC5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6dG9IYXNoTWFwKToKKyAgICAgICAgKiB3
dGYvQ01ha2VMaXN0cy50eHQ6CisKIDIwMTMtMTAtMTggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3BhY2VzIGJldHdlZW4gdGVtcGxhdGUg
YW5nbGUgYnJhY2tldHMKSW5kZXg6IFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1NzY1
OCkKKysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
OSw2ICs5LDcgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL0F0b21pY3Mu
aCBcCiAgICAgU291cmNlL1dURi93dGYvQXV0b2RyYWluZWRQb29sLmggXAogICAgIFNvdXJjZS9X
VEYvd3RmL0JhZy5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9CYWdUb0hhc2hNYXAuaCBcCiAgICAg
U291cmNlL1dURi93dGYvQml0QXJyYXkuaCBcCiAgICAgU291cmNlL1dURi93dGYvQml0VmVjdG9y
LmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvQml0VmVjdG9yLmggXApJbmRleDogU291cmNlL1dU
Ri9XVEYudmN4cHJvai9XVEYudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52
Y3hwcm9qL1dURi52Y3hwcm9qCShyZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvV1RGL1dURi52
Y3hwcm9qL1dURi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDcgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBdXRvZHJhaW5lZFBvb2wuaCIgLz4NCiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQVZMVHJlZS5oIiAvPg0KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHd0ZlxCYWcuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3
dGZcQmFnVG9IYXNoTWFwLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEJp
dEFycmF5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEJpdG1hcC5oIiAv
Pg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxCaXRWZWN0b3IuaCIgLz4NCkluZGV4
OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NzY1
OCkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAkJMEY5RDMzNjIxNjVEQkE3MzAwNUFEMzg3IC8qIFBy
aW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi87IH07CiAJ
CTBGOUQzMzYzMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUUxNjVEQkE3MzAwNUFEMzg3
IC8qIFByaW50U3RyZWFtLmggKi87IH07CiAJCTBGQjE0RTE5MTgwRkEyMTgwMDlCNkI0RCAvKiBC
YWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjE0
RTE4MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCAqLzsgfTsKKwkJMEZCMTRFMUIxODEwRTFEQzAw
OUI2QjREIC8qIEJhZ1RvSGFzaE1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZCMTRFMUExODEwRTFEQTAwOUI2QjREIC8qIEJhZ1RvSGFzaE1hcC5o
ICovOyB9OwogCQkwRkM0NDg4MzE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0NDg4MjE2RkU5RkUx
MDA4NDRCRTkgLyogUHJvY2Vzc0lELmggKi87IH07CiAJCTBGQzRFREU2MTY5NjE0OTYwMEY2NTA0
MSAvKiBDb21tYVByaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQzRFREU1MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIuaCAqLzsg
fTsKIAkJMEZEODFBQzUxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgxQUM0MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
KTsgfTsgfTsKQEAgLTI4OSw2ICsyOTAsNyBAQAogCQkwRjlEMzM1RDE2NURCQTczMDA1QUQzODcg
LyogUHJpbnRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UHJpbnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlEMzM1RTE2
NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJpbnRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZC
MTRFMTgxODBGQTIxODAwOUI2QjREIC8qIEJhZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCYWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCMTRFMUExODEw
RTFEQTAwOUI2QjREIC8qIEJhZ1RvSGFzaE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWdUb0hhc2hN
YXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNDQ4ODIxNkZFOUZFMTAwODQ0
QkU5IC8qIFByb2Nlc3NJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9j
ZXNzSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNEVERTUxNjk2MTQ5NjAw
RjY1MDQxIC8qIENvbW1hUHJpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb21tYVByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODFBQzQx
NTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmFzdEJpdFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjA4LDYgKzYxMCw3IEBACiAJCQkJMTQ2OTQxOUIxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9k
cmFpbmVkUG9vbE1hYy5tbSAqLywKIAkJCQlBOEE0NzI1RTE1MUE4MjVBMDA0MTIzRkYgLyogQVZM
VHJlZS5oICovLAogCQkJCTBGQjE0RTE4MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCAqLywKKwkJ
CQkwRkIxNEUxQTE4MTBFMURBMDA5QjZCNEQgLyogQmFnVG9IYXNoTWFwLmggKi8sCiAJCQkJNEYw
MzIxQkIxNTZBQThEMTAwNkVCQUY2IC8qIEJpdEFycmF5LmggKi8sCiAJCQkJQThBNDcyNUYxNTFB
ODI1QTAwNDEyM0ZGIC8qIEJpdG1hcC5oICovLAogCQkJCUE4QTQ3MjYwMTUxQTgyNUEwMDQxMjNG
RiAvKiBCaXRWZWN0b3IuY3BwICovLApAQCAtOTk2LDYgKzk5OSw3IEBACiAJCQkJQThBNDczRkEx
NTFBODI1QjAwNDEyM0ZGIC8qIE9TUmFuZG9tU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzNGQzE1MUE4MjVCMDA0MTIzRkYgLyogT3duUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzNGRDE1MUE4MjVCMDA0MTIzRkYgLyogT3duUHRyQ29tbW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkIxNEUxQjE4MTBFMURDMDA5QjZCNEQgLyogQmFnVG9IYXNoTWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEE0NzNGRTE1MUE4MjVCMDA0MTIzRkYgLyogUGFja2VkSW50VmVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNGRjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUFsbG9j
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDAxMTUxQTgyNUIwMDQxMjNGRiAvKiBQ
YWdlQWxsb2NhdGlvbkFsaWduZWQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dURi93
dGYvQmFnVG9IYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQmFnVG9IYXNo
TWFwLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9CYWdUb0hhc2hNYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCYWdUb0hh
c2hNYXBfaAorI2RlZmluZSBCYWdUb0hhc2hNYXBfaAorCisjaW5jbHVkZSA8d3RmL0JhZy5oPgor
I2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCB0eXBlbmFtZSBL
ZXlUeXBlLCB0eXBlbmFtZSBLZXlHZXR0ZXJGdW5jdG9yPgordm9pZCB0b0hhc2hNYXAoQmFnPEVs
ZW1lbnRUeXBlPiYgYmFnLCBLZXlHZXR0ZXJGdW5jdG9yJiBnZXRLZXksIEhhc2hNYXA8S2V5VHlw
ZSwgRWxlbWVudFR5cGUqPiYgcmVzdWx0KQoreworICAgIGZvciAodHlwZW5hbWUgQmFnPEVsZW1l
bnRUeXBlPjo6aXRlcmF0b3IgaXRlciA9IGJhZy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgewor
ICAgICAgICBFbGVtZW50VHlwZSogZWxlbWVudCA9ICppdGVyOworICAgICAgICBLZXlUeXBlIGtl
eSA9IGdldEtleSgqZWxlbWVudCk7CisgICAgICAgIHJlc3VsdC5hZGQoa2V5LCBlbGVtZW50KTsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OnRvSGFzaE1hcDsK
KworI2VuZGlmIC8vIEJhZ1RvSGFzaE1hcF9oCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAxNTc2NTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgQXNzZXJ0aW9ucy5o
CiAgICAgQXRvbWljcy5oCiAgICAgQmFnLmgKKyAgICBCYXRUb0hhc2hNYXAuaAogICAgIEJpdEFy
cmF5LmgKICAgICBCaXRWZWN0b3IuaAogICAgIEJpdG1hcC5oCg==
</data>
<flag name="review"
          id="237195"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>