<?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>152902</bug_id>
          
          <creation_ts>2016-01-08 10:55:14 -0800</creation_ts>
          <short_desc>Use NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL</short_desc>
          <delta_ts>2016-01-13 15:02:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>153020</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1153874</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-08 10:55:14 -0800</bug_when>
    <thetext>We should use NeverDestroyed everywhere instead of DEPRECATED_DEFINE_STATIC_LOCAL, to ameliorate heap fragmentation from lazily instantiated statics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153876</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-08 10:55:52 -0800</bug_when>
    <thetext>Yes please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153891</commentid>
    <comment_count>2</comment_count>
      <attachid>268554</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-08 11:12:01 -0800</bug_when>
    <thetext>Created attachment 268554
Patch

Almost all done with regex, let&apos;s see what EWS thinks..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153893</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-08 11:13:25 -0800</bug_when>
    <thetext>Attachment 268554 did not pass style-queue:


ERROR: Source/WebCore/platform/network/HTTPParsers.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/audio/ios/AudioDestinationIOS.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/page/ContentSecurityPolicy.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsLayer.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/rendering/style/RenderStyle.h:72:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 5 in 174 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>1153920</commentid>
    <comment_count>4</comment_count>
      <attachid>268563</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-08 11:43:23 -0800</bug_when>
    <thetext>Created attachment 268563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153928</commentid>
    <comment_count>5</comment_count>
      <attachid>268567</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-08 11:57:37 -0800</bug_when>
    <thetext>Created attachment 268567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153948</commentid>
    <comment_count>6</comment_count>
      <attachid>268570</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-08 12:34:44 -0800</bug_when>
    <thetext>Created attachment 268570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153955</commentid>
    <comment_count>7</comment_count>
      <attachid>268573</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-08 12:49:31 -0800</bug_when>
    <thetext>Created attachment 268573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153976</commentid>
    <comment_count>8</comment_count>
      <attachid>268576</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-08 13:23:55 -0800</bug_when>
    <thetext>Created attachment 268576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153996</commentid>
    <comment_count>9</comment_count>
      <attachid>268581</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-08 13:50:11 -0800</bug_when>
    <thetext>Created attachment 268581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154103</commentid>
    <comment_count>10</comment_count>
      <attachid>268608</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-08 20:45:51 -0800</bug_when>
    <thetext>Created attachment 268608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154142</commentid>
    <comment_count>11</comment_count>
      <attachid>268608</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-09 05:14:00 -0800</bug_when>
    <thetext>Comment on attachment 268608
Patch

Clearing flags on attachment: 268608

Committed r194819: &lt;http://trac.webkit.org/changeset/194819&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154143</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-09 05:14:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154165</commentid>
    <comment_count>13</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-09 15:03:24 -0800</bug_when>
    <thetext>Reopening to attach more patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154166</commentid>
    <comment_count>14</comment_count>
      <attachid>268628</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-09 15:03:54 -0800</bug_when>
    <thetext>Created attachment 268628
Patch 2 (convert some more code)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154167</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-09 15:05:06 -0800</bug_when>
    <thetext>Attachment 268628 did not pass style-queue:


ERROR: Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:98:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm:68:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 20 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>1154180</commentid>
    <comment_count>16</comment_count>
      <attachid>268634</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-09 17:18:55 -0800</bug_when>
    <thetext>Created attachment 268634
Patch 2 (convert some more code)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154181</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-09 17:21:07 -0800</bug_when>
    <thetext>Attachment 268634 did not pass style-queue:


ERROR: Source/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:98:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 21 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>1154182</commentid>
    <comment_count>18</comment_count>
      <attachid>268634</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-09 17:46:41 -0800</bug_when>
    <thetext>Comment on attachment 268634
Patch 2 (convert some more code)

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

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:92
&gt; +    static NeverDestroyed&lt;const SVGPropertyInfo&gt; s_propertyInfo = SVGPropertyInfo \

Why the &quot; = SVGPropertyInfo&quot;?

&gt; Source/WebKit/mac/Misc/WebNSPasteboardExtras.mm:71
&gt; -    DEPRECATED_DEFINE_STATIC_LOCAL(RetainPtr&lt;NSArray&gt;, types, ([[NSArray alloc] initWithObjects:
&gt; +    static NeverDestroyed&lt;RetainPtr&lt;NSArray&gt;&gt; types([[NSArray alloc] initWithObjects:
&gt;          WebURLsWithTitlesPboardType,
&gt;          NSURLPboardType,
&gt;          WebURLPboardType,
&gt;          WebURLNamePboardType,
&gt;          NSStringPboardType,
&gt; -        nil]));
&gt; -    return types.get();
&gt; +        nil]);
&gt; +    return types.get().get();

Even better here would be a plain old static NSArray * storing a leaked value.

&gt; Source/WebKit/mac/Misc/WebNSPasteboardExtras.mm:84
&gt; -    DEPRECATED_DEFINE_STATIC_LOCAL(RetainPtr&lt;NSArray&gt;, types, (_createWritableTypesForImageWithoutArchive()));
&gt; -    return types.get();
&gt; +    static NeverDestroyed&lt;RetainPtr&lt;NSArray&gt;&gt; types(_createWritableTypesForImageWithoutArchive());
&gt; +    return types.get().get();

Ditto.

&gt; Source/WebKit/mac/Misc/WebNSPasteboardExtras.mm:98
&gt; -    DEPRECATED_DEFINE_STATIC_LOCAL(RetainPtr&lt;NSArray&gt;, types, (_createWritableTypesForImageWithArchive()));
&gt; -    return types.get();
&gt; +    static NeverDestroyed&lt;RetainPtr&lt;NSArray&gt;&gt; types(_createWritableTypesForImageWithArchive());
&gt; +    return types.get().get();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154207</commentid>
    <comment_count>19</comment_count>
      <attachid>268644</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-01-10 04:38:52 -0800</bug_when>
    <thetext>Created attachment 268644
Patch 2 for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154208</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-10 04:41:38 -0800</bug_when>
    <thetext>Attachment 268644 did not pass style-queue:


ERROR: Source/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:98:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 21 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>1154210</commentid>
    <comment_count>21</comment_count>
      <attachid>268644</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-10 05:27:58 -0800</bug_when>
    <thetext>Comment on attachment 268644
Patch 2 for landing

Clearing flags on attachment: 268644

Committed r194826: &lt;http://trac.webkit.org/changeset/194826&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154211</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-10 05:28:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154732</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-12 09:27:05 -0800</bug_when>
    <thetext>Looks like this was a decent PLT regression:
&lt;rdar://problem/24150482&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154742</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-12 10:10:48 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 153020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155256</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-13 15:02:00 -0800</bug_when>
    <thetext>Rolled back in: https://trac.webkit.org/r194987.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268554</attachid>
            <date>2016-01-08 11:12:01 -0800</date>
            <delta_ts>2016-01-08 11:43:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152902.diff</filename>
            <type>text/plain</type>
            <size>261161</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KaW5k
ZXggZWY1NDYwMi4uNzIzNjg3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSVdyYXBwZXJPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSVdyYXBwZXJPYmplY3QubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NhbGxi
YWNrT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCkBAIC00MSw4ICs0Miw4IEBAIHB1YmxpYzoKIAogc3Rh
dGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmplY3RIYW5k
bGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEpTQVBJV3Jh
cHBlck9iamVjdEhhbmRsZU93bmVyLCBqc1dyYXBwZXJPYmplY3RIYW5kbGVPd25lciwgKCkpOwot
ICAgIHJldHVybiAmanNXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyPiBqc1dyYXBwZXJPYmplY3RI
YW5kbGVPd25lcjsKKyAgICByZXR1cm4gJmpzV3JhcHBlck9iamVjdEhhbmRsZU93bmVyLmdldCgp
OwogfQogCiB2b2lkIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRleCBhNzJkMTliLi4xYzFmN2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgIldlYWtIYW5kbGVPd25lci5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRy
YXMuaCIKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9OU01hcFRhYmxlU1BJLmg+CiAKIGNsYXNzIEpT
TWFuYWdlZFZhbHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpA
QCAtNDcsOCArNDgsOCBAQCBwdWJsaWM6CiAKIHN0YXRpYyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyKiBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIsIGpzTWFuYWdlZFZhbHVlSGFu
ZGxlT3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI+IGpzTWFu
YWdlZFZhbHVlSGFuZGxlT3duZXI7CisgICAgcmV0dXJuICZqc01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyLmdldCgpOwogfQogCiBjbGFzcyBXZWFrVmFsdWVSZWYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggYTFlMDlhOC4uYmQ5ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTYtMDEtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTAorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyOTAyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3RseSBt
ZWNoYW5pY2FsIGNvbnZlcnNpb24gdG8gTmV2ZXJEZXN0cm95ZWQgdGhyb3VnaG91dC4KKworICAg
ICAgICAqIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QubW06CisgICAgICAgIChqc0FQSVdyYXBwZXJP
YmplY3RIYW5kbGVPd25lcik6CisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLm1tOgorICAg
ICAgICAobWFuYWdlZFZhbHVlSGFuZGxlT3duZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om9iamVj
dEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbik6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yOjphbGxv
Y2F0b3JzKToKKwogMjAxNi0wMS0wNiAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIERhdGUucHJvdG90eXBlIHNob3VsZCBiZSBhIHBs
YWluIG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlYzc3YTc0
Li44M2Q3ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUyLDggKzUzLDggQEAgY29uc3QgY2hhciogSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXAgPSAiYmFja3RyYWNlIjsKIC8vIGNy
ZWF0ZSBvYmplY3RzIGluIHRoZSBzYW1lIGdyb3VwLgogc3RhdGljIFN0cmluZyBvYmplY3RHcm91
cEZvckJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW9u
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIG9iamVjdEdyb3VwLCAoImJyZWFrcG9pbnQtYWN0aW9uLSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cCwg
U3RyaW5nOjpudW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBvYmplY3RHcm91cChBU0NJSUxpdGVyYWwoImJyZWFrcG9pbnQtYWN0aW9u
LSIpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cC5nZXQoKSwgU3RyaW5nOjpu
dW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKIH0KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBkMjkx
MWEzLi43YWJhZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAKQEAgLTEzNCw4ICsxMzQsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxQYWdlUmVzZXJ2YXRpb24sIDE2PiByZXNlcnZhdGlvbnM7CiAgICAgc3RhdGljIEhhc2hTZXQ8
RGVtYW5kRXhlY3V0YWJsZUFsbG9jYXRvcio+JiBhbGxvY2F0b3JzKCkKICAgICB7Ci0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PERlbWFuZEV4ZWN1dGFibGVB
bGxvY2F0b3IqPiwgc0FsbG9jYXRvcnMsICgpKTsKLSAgICAgICAgcmV0dXJuIHNBbGxvY2F0b3Jz
OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxEZW1hbmRFeGVjdXRhYmxl
QWxsb2NhdG9yKj4+IHNldDsKKyAgICAgICAgcmV0dXJuIHNldDsKICAgICB9CiAKICAgICBzdGF0
aWMgU3RhdGljTG9jayYgYWxsb2NhdG9yc011dGV4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMjY4MjQyZi4uNzM0MzQzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMS0wOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
NTI5MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW9zdGx5IG1lY2hhbmljYWwgY29udmVyc2lvbiB0byBOZXZlckRlc3Ryb3llZCB0aHJvdWdob3V0
LgorCisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpj
dXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAo
V1RGOjp0aHJlYWRNYXBNdXRleCk6CisgICAgICAgIChXVEY6OnRocmVhZE1hcCk6CisKIDIwMTYt
MDEtMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEFsbG93IHRvIHNhdmUgYW5kIHJlc3RvcmUgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApp
bmRleCBlMzUyOTBkLi43MDFjMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29w
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KIApAQCAtNTYsOCArNTcsOCBAQCB2b2lkIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpCiAKIFJ1bkxvb3AmIFJ1bkxvb3A6OmN1cnJlbnQo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlRocmVhZFNwZWNp
ZmljPFJ1bkxvb3A6OkhvbGRlcj4sIHJ1bkxvb3BIb2xkZXIsICgpKTsKLSAgICByZXR1cm4gcnVu
TG9vcEhvbGRlci0+cnVuTG9vcCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaHJlYWRT
cGVjaWZpYzxIb2xkZXI+PiBydW5Mb29wSG9sZGVyOworICAgIHJldHVybiBydW5Mb29wSG9sZGVy
LmdldCgpLT5ydW5Mb29wKCk7CiB9CiAKIFJ1bkxvb3AmIFJ1bkxvb3A6Om1haW4oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IGE5N2NmMzIuLjcwNWYzNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJU
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3BlY2lmaWMu
aCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SYXdQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVh
ZERhdGEuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtOTksNyArMTAwLDcgQEAgdm9pZCB0aHJl
YWRXYXNKb2luZWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIHN0YXRpYyBNdXRleCYgdGhyZWFkTWFw
TXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0
ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0ZXg+IG11dGV4OwogICAgIHJl
dHVybiBtdXRleDsKIH0KIApAQCAtMTI1LDcgKzEyNiw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpCiAKIHN0YXRpYyBUaHJlYWRNYXAmIHRocmVhZE1hcCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRocmVhZE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFRocmVhZE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkYzdlMmNmLi45MGY5NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTI0IEBACisy
MDE2LTAxLTA4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCBvZiBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0bHkgbWVjaGFuaWNhbCBjb252
ZXJzaW9uIHRvIE5ldmVyRGVzdHJveWVkIHRocm91Z2hvdXQuCisKKyAgICAgICAgKiBNb2R1bGVz
L2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmRpcmVjdGlvbk5leHRVbmlxdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJl
Y3Rpb25QcmV2KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVu
aXF1ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5UmVxdWVzdDo6cmVhZHlTdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om9wZW5L
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRlZEtleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKToKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChX
ZWJDb3JlOjpxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNNaW1lVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNGaWxlRXh0
ZW5zaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUpOgor
ICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKToKKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFJlc29sdXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZSk6
CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldCk6CisgICAgICAgICog
ZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjdW11
bGF0b3JNYXApOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc1N1cHBvcnRlZFNWRzEwRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c1N1cHBvcnRlZFNWRzExRmVhdHVyZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWFkeVN0YXRlKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0
KToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayk6CisgICAgICAgICogZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ1NT
Q29udGVudFR5cGUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OnN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNv
cmQuY3BwOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBzZXVkb0VsZW1lbnRUYWdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1l
bnQ6OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVk
TmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdWFsaWZpZWROYW1lQ2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6bnVsbFFOYW1lKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0xlZ2FjeVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dHlsZVNwYW5DbGFzc1N0cmluZyk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFt
ZXNwYWNlRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0ludGVyY2hhbmdlTmV3bGluZU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5nZUNvbnZlcnRlZFNwYWNlU3Bhbik6CisgICAgICAg
ICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub25CcmVha2lu
Z1NwYWNlU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c3R5bGVOb2RlQ2xvc2VUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwSW50ZXJuYWwpOgorICAgICAgICAqIGZpbGVhcGkv
QmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KToK
KyAgICAgICAgKiBodG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAg
ICAgKiBodG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVU
aW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVM
b2NhbElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRU
eXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRW1haWxJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEVtYWlsQWRkcmVzcyk6CisgICAgICAgICogaHRt
bC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtS2V5R2VuZXJhdG9y
Ojpmb3JtS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1TdGF0ZVNpZ25hdHVyZSk6CisgICAg
ICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyb290
RWRpdGFibGVFbGVtZW50TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxv
YWRpbmdEaXNhYmxlcjo6ZGlzYWJsZWRTdWJ0cmVlUm9vdHMpOgorICAgICAgICAqIGh0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6
OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bGlua0xvYWRFdmVudFNlbmRlcik6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50VG9FbGVtZW50
U2V0TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzUmVjb2duaXplZFRhZ05hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpm
b3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGl0bGVUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OnN1YnRpdGxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkpOgorICAgICAgICAqIGh0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmZv
cm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpcmVjdGlvblN0cmluZyk6CisgICAg
ICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlu
cHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlTmFtZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmJ1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6Y2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlTmFtZXM6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVz
OjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpkYXRldGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OmZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Omhp
ZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6aW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Om1vbnRoKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZU5hbWVzOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6
OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpyYWRpbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6cmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5h
bWVzOjpzZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OndlZWspOgorICAgICAgICAqIGh0
bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHBsYXliYWNrU3RhdGVXYWl0aW5nKToK
KyAgICAgICAgKHBsYXliYWNrU3RhdGVQbGF5aW5nKToKKyAgICAgICAgKHBsYXliYWNrU3RhdGVF
bmRlZCk6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb250aElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL051
bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNy
ZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAg
KiBodG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFjY2Vw
dGFibGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JT
dGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3RlcE1pc21hdGNoKToKKyAgICAg
ICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJbWFnZURhdGEpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNT
QXVkaXRvcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRD
YXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50U2hhZG93UHNldWRv
SWQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRv
d0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6Ok1ldGVy
SW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1ldGVyVmFsdWVFbGVtZW50Ojp2YWx1
ZVBzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpt
ZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpjaGFwdGVyc0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjptZXRhZGF0YUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Ojpmb3JjZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6ZGlzYWJsZWRL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6aGlkZGVuS2V5d29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
OjpjdWVTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhcnRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Om1pZGRs
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpyaWdodEtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6dmVydGljYWxHcm93aW5nTGVmdEtleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6dmVydGljYWxHcm93aW5nUmlnaHRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1
ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6Om1h
cmtGdXR1cmVBbmRQYXN0Tm9kZXMpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUUmVnaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNv
cmU6OlZUVFJlZ2lvbjo6c2V0U2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6
cGFyc2VTZXR0aW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjp0ZXh0VHJh
Y2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcyk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRl
b1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6bWFpbktleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2lnbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6c3VidGl0bGVzS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpj
b21tZW50YXJ5S2V5d29yZCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVUeXBlVG9UYWdOYW1lKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNvbGxlY3RNZXRhZGF0YUhl
YWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVQc2V1ZG9DbGFzc01hc2spOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgor
ICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJl
dmVudGVkTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmluaXRpYXRv
ck5hbWUpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKToKKyAgICAg
ICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKToK
KyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tn
cm91bmRDU1MpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MpOgorICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2
YVNjcmlwdFVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJ
bmxpbmVFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6d2luZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyk6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpkcmFnU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9jdXNEaXJlY3Rpb25Gb3JL
ZXkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmFzZTo6cGxhdGZvcm0pOgorICAgICAgICAqIHBhZ2Uv
UGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlVmlzaWJpbGl0
eVN0YXRlU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om9yaWdpbkFjY2Vzc01hcCk6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjpwYXJzZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93Rm9yQmxlbmRpbmcpOgorICAgICAgICAqIHBh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50ZXJDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZEN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptb3ZlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnZlcnRpY2FsVGV4dEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpjZWxsQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmFs
aWFzQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Onpvb21JbkN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjp6b29tT3V0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6bm9uZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpwcm9ncmVz
c0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub0Ryb3BDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6bm90QWxsb3dlZEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjppQmVhbUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjp3YWl0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmhlbHBD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpub3J0aFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aEVhc3RS
ZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9ydGhXZXN0UmVzaXplQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNvdXRoRWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpzb3V0aFdlc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6d2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpub3J0aFNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVh
c3RXZXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoRWFzdFNvdXRoV2Vz
dFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aFdlc3RTb3V0aEVhc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29sdW1uUmVzaXplQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJvd1Jlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptaWRkbGVQ
YW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVhc3RQYW5uaW5nQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6Om5vcnRoUGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpu
b3J0aEVhc3RQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoV2VzdFBhbm5p
bmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6c291dGhQYW5uaW5nQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNvdXRoRWFzdFBhbm5pbmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
c291dGhXZXN0UGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjp3ZXN0UGFubmluZ0N1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpncmFiQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OmdyYWJiaW5nQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZWRT
dHJpbmdGb3JMb29rdXBNZW51SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZWRpYU1JTUVUeXBlTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxVUkxTY2hlbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2VjdXJlU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMpOgorICAgICAgICAoV2ViQ29yZTo6ZW1wdHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6c2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0
ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNPUlNFbmFibGVkU2NoZW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpibGFua1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxOYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25z
ZXNGb3JTdWJqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdWRpb0Rlc3RpbmF0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXBhaW50UmVjdE1hcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9y
U3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFBsYWluKToKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNo
QnVmZmVyOjpzaW5nbGV0b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpwbGF5ZXJUb1ByaXZhdGVNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxw
aGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjplZmZlY3RO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjptaW1lQ29tbW9uVHlwZXNDYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjptaW1lTW9kZXJuVHlwZXNDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0N1cnNvcklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJzb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAgICAgICgrW1dlYkNvcmVNb3Rp
b25NYW5hZ2VyIHNoYXJlZE1hbmFnZXJdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYlRo
cmVhZEdldE9ic2VydmVkQ29udGVudE1vZGlmaWVycyk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRGcm9tTlNGb250KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybVRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW06CisgICAg
ICAgIChXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpwbGF0Zm9ybUNl
bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUcmFja0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Nh
bXBsZUJveDo6dHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXApOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xpZW50Q2VydHMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5
ZWRNUlVDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNo
ZTo6Z2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2ZMb2NhbGVDYWNoZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJs
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y291bnRlck1hcHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVy
SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhl
bWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVu
c2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQ
YXRoOjp6ZXJvTGVuZ3RoTGluZWNhcFBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vblNj
YWxpbmdTdHJva2VQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2xpcHBlckZpbHRlck1hc2tlclRhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6bWFy
a2VyVGFncyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsQW5kU3Ryb2tlVGFncyk6CisgICAgICAg
IChXZWJDb3JlOjpjaGFpbmFibGVSZXNvdXJjZVRhZ3MpOgorICAgICAgICAqIHN2Zy9TVkdBbmds
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6dmFsdWVBc1N0cmluZyk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50Ojpyb3RhdGVNb2RlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRBdHRyaWJ1dGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBY2N1bXVsYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjppbmhlcml0c0Zyb21Qcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
b3JkZXJYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudDo6b3JkZXJZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmll
cik6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9u
WUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRp
b25YSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVyKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50
OjpyYWRpdXNYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpyYWRpdXNZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRp
Zmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVx
dWVuY3lZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWUlkZW50aWZp
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaE1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R2x5cGhNYXA6OnN2Z0dseXBoRm9yR2x5cGgpOgorICAgICAgICAqIHN2Zy9TVkdMYW5nU3BhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGFuZ1NwYWNlOjp4bWxzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtl
ckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01h
cmtlckVsZW1lbnQ6Om9yaWVudEFuZ2xlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUpOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6bWVkaWEpOgorICAgICAg
ICAqIHN2Zy9TVkdUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3Jt
Ojp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdT
cGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjp2aWV3Qm94SWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cHJlc2VydmVBc3BlY3RSYXRpb0lk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OnRyYW5zZm9ybUlkZW50
aWZpZXIpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU01JTEVsZW1lbnQ6OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6
OnJlcGVhdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpub3RpZnlE
ZXBlbmRlbnRzSW50ZXJ2YWxDaGFuZ2VkKToKKwogMjAxNi0wMS0wNSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIHNob3dSZW5kZXJUcmVlOiBhZGQgaW5saW5lLWJs
b2NrL2lubGluZS9ibG9jayBjb2x1bW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5jcHAKaW5kZXggNGFlNDI3ZC4uOGRjMDgzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcApAQCAtMjYsMTQgKzI2LDE2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudC5oIgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5KGJvb2wgYXZhaWxhYmxlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGF2YWlsYWJsZVN0cmluZywgKCJhdmFpbGFibGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgbm90QXZhaWxhYmxlU3RyaW5nLCAoIm5vdC1hdmFpbGFibGUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXZhaWxhYmxlU3RyaW5nKCJhdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBub3RBdmFpbGFibGVTdHJpbmcoIm5vdC1hdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIHJldHVybiBhdmFpbGFibGUg
PyBhdmFpbGFibGVTdHJpbmcgOiBub3RBdmFpbGFibGVTdHJpbmc7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA4NjM4MGUxLi4wMzY2
MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwyNSArMzksMjUgQEAgSURCQ3Vyc29yOjpJ
REJDdXJzb3IoKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4
dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bmV4dCwgKCJuZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5leHQoIm5leHQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmV4dDsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5leHR1bmlxdWUs
ICgibmV4dHVuaXF1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuZXh0dW5pcXVlKCJuZXh0dW5p
cXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5l
eHR1bmlxdWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25Q
cmV2KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBwcmV2LCAoInByZXYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcHJldigicHJldiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBwcmV2OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHJldnVuaXF1
ZSwgKCJwcmV2dW5pcXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHByZXZ1bmlxdWUoInByZXZ1
bmlxdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4g
cHJldnVuaXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDUxNzA3NzcuLjI1OWZiZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwzMSArNDAsMzEgQEAgSURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgicmVhZG9u
bHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZG9ubHkoInJlYWRvbmx5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWRvbmx5OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByZWFkd3JpdGUs
ICgicmVhZHdyaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJlYWR3cml0ZSgicmVhZHdyaXRl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3
cml0ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNp
b25DaGFuZ2UoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHZlcnNpb25jaGFuZ2UsICgidmVyc2lvbmNoYW5nZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiB2ZXJzaW9uY2hhbmdlKCJ2ZXJzaW9uY2hhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHZlcnNpb25jaGFuZ2U7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgi
MCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiByZWFkb25seSgiMCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiByZWFkb25seTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZHdyaXRlLCAo
IjEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZHdyaXRlKCIxIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3cml0ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJl
cXVlc3QuY3BwCmluZGV4IDhiMmYyMGQuLmJmY2RkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5UmVxdWVzdC5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNSwxMyAr
MTM2LDEzIEBAIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gTGVnYWN5UmVxdWVzdDo6dHJhbnNhY3Rp
b24oKSBjb25zdAogY29uc3QgU3RyaW5nJiBMZWdhY3lSZXF1ZXN0OjpyZWFkeVN0YXRlKCkgY29u
c3QKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IElEQlJlcXVlc3RSZWFkeVN0YXRlOjpQ
ZW5kaW5nIHx8IG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6RG9uZSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGVuZGluZywg
KCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRvbmUsICgiZG9uZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBwZW5kaW5nKCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gZG9uZSgiZG9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6UGVuZGluZykK
LSAgICAgICAgcmV0dXJuIHBlbmRpbmc7CisgICAgICAgIHJldHVybiBwZW5kaW5nLmdldCgpOwog
Ci0gICAgcmV0dXJuIGRvbmU7CisgICAgcmV0dXJuIGRvbmUuZ2V0KCk7CiB9CiAKIHZvaWQgTGVn
YWN5UmVxdWVzdDo6bWFya0Vhcmx5RGVhdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggODdi
YzM4Mi4uZjhmM2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCkBAIC00NSwxOSArNDUsMTkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbHNI
b3N0OjphdXRvbWF0aWNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhdXRvbWF0aWMsICgiYXV0b21hdGljIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IGF1dG9tYXRpYygiYXV0b21hdGljIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGF1dG9tYXRpYzsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IGZvcmNlZE9uLCAoImZvcmNlZC1vbmx5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZv
cmNlZE9uKCJmb3JjZWQtb25seSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBmb3JjZWRPbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHdheXNPbiwgKCJhbHdheXMtb24iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx3YXlzT24oImFsd2F5cy1vbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHdheXNPbjsKIH0KIApA
QCAtMjMwLDEyICsyMzAsMTIgQEAgU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERl
dmljZURpc3BsYXlOYW1lKCkgY29uc3QKIAogU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRl
cm5hbERldmljZVR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIG5vbmUsIChBU0NJSUxpdGVyYWwoIm5vbmUiKSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5vbmUoQVNDSUlMaXRlcmFsKCJub25lIikpOwogICAgIFN0
cmluZyB0eXBlID0gbm9uZTsKICAgICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFpcnBsYXks
IChBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHR2b3V0LCAoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXki
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFs
KCJ0dm91dCIpKTsKICAgICAKICAgICBNZWRpYVBsYXllciogcGxheWVyID0gbV9tZWRpYUVsZW1l
bnQtPnBsYXllcigpOwogICAgIGlmICghcGxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDRlMTI1NDMuLjgyOWQx
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCkBAIC05NSwxOSArOTUsMTkgQEAgTWVkaWFTb3VyY2U6On5NZWRpYVNvdXJjZSgp
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcGVu
LCAoIm9wZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gb3Blbigib3BlbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBvcGVuOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjbG9zZWQs
ICgiY2xvc2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNsb3NlZCgiY2xvc2VkIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNsb3NlZDsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZTo6ZW5kZWRLZXl3b3JkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBl
bmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7
CiB9CiAKQEAgLTQ0MCw4ICs0NDAsOCBAQCB2b2lkIE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShj
b25zdCBBdG9taWNTdHJpbmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBNZWRp
YVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3IoY29uc3QgQXRvbWljU3RyaW5nJiBlcnJvciwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgbmV0d29yaywgKCJuZXR3b3JrIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGRlY29kZSwgKCJkZWNvZGUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gbmV0d29yaygibmV0d29yayIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IGRlY29kZSgiZGVjb2RlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICBMT0coTWVkaWFTb3VyY2UsICJNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3Io
JXApIDogJXMiLCB0aGlzLCBlcnJvci5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbQppbmRleCBhYThiMDUyLi41ZTE0NjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50Lm1tCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFW
TWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqLCBKU0NvbnRlCiAKIHN0
YXRpYyBTdHJpbmcgcXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjcmlwdCwgKFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCwgc2l6ZW9mKFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50SmF2YVNjcmlwdCkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3Jp
cHQoUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0LCBzaXplb2YoUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0KSk7CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApA
QCAtODksMTMgKzg5LDEzIEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBv
cnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICAgICAgImF1ZGlvL3gtbTRy
IiwgImF1ZGlvL3gtbXAzIiwgImF1ZGlvL3gtbXBlZyIsICJhdWRpby94LW1wZWczIiwgImF1ZGlv
L3gtbXBlZ3VybCIsICJhdWRpby94LXNjcGxzIiwgImF1ZGlvL3gtd2F2IiwKICAgICAgICAgInZp
ZGVvLzNncHAiLCAidmlkZW8vM2dwcDIiLCAidmlkZW8vbXA0IiwgInZpZGVvL3F1aWNrdGltZSIs
ICJ2aWRlby94LW00diIKICAgICB9OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChIYXNoU2V0PFN0cmluZz4sIHR5cGVIYXNoLCAoKSk7Ci0gICAgaWYgKCF0eXBlSGFzaC5zaXpl
KCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB0eXBlSGFz
aDsKKyAgICBpZiAoIXR5cGVIYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodHlwZXMpOyArK2kpCi0gICAgICAgICAgICB0
eXBlSGFzaC5hZGQodHlwZXNbaV0pOworICAgICAgICAgICAgdHlwZUhhc2guZ2V0KCkuYWRkKHR5
cGVzW2ldKTsKICAgICB9CiAKLSAgICByZXR1cm4gdHlwZUhhc2guY29udGFpbnMobWltZVR5cGUp
OworICAgIHJldHVybiB0eXBlSGFzaC5nZXQoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJv
b2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTEwNSwxMyArMTA1LDEzIEBAIGJvb2wgUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikKICAgICAgICAgIm0zdTgiLCAibTRhIiwgIm00YiIsICJtNHAiLCAibTRyIiwgIm00
diIsICJtb3YiLCAibXAzIiwgIm1wMyIsICJtcDQiLCAibXBlZyIsICJtcGciLCAibXF2IiwgInBs
cyIsICJxdCIsCiAgICAgICAgICJzbmQiLCAic3dhIiwgInRzIiwgInVsdyIsICJ3YXYiCiAgICAg
fTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBl
eHRlbnNpb25IYXNoLCAoKSk7Ci0gICAgaWYgKCFleHRlbnNpb25IYXNoLnNpemUoKSkgeworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGV4dGVuc2lvbkhhc2g7Cisg
ICAgaWYgKCFleHRlbnNpb25IYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZXh0ZW5zaW9ucyk7ICsraSkKLSAgICAgICAg
ICAgIGV4dGVuc2lvbkhhc2guYWRkKGV4dGVuc2lvbnNbaV0pOworICAgICAgICAgICAgZXh0ZW5z
aW9uSGFzaC5nZXQoKS5hZGQoZXh0ZW5zaW9uc1tpXSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGV4
dGVuc2lvbkhhc2guY29udGFpbnMoZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9uSGFz
aC5nZXQoKS5jb250YWlucyhleHRlbnNpb24pOwogfQogCiBRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdp
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXMuY3BwCmluZGV4IDdmYjEzZTguLjdmMTc1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc0V2ZW50LmgiCiAjaW5jbHVkZSAiU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
QEAgLTE5Miw4ICsxOTMsOCBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6aGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuYwogICAgIAogdm9pZCBT
cGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5k
YXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgd29yZEJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ3
b3JkIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzZW50ZW5jZSIpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gd29yZEJvdW5kYXJ5U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgid29yZCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2VudGVuY2UiKSk7
CiAKICAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7CiAgICAgY2FzZSBTcGVlY2hXb3JkQm91bmRhcnk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA5MWJhMzEyLi41NGFjYjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKQEAgLTE4NCw4ICsxODQsOCBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAg
ICAgU3RyaW5nIHN0cmluZ0ZvckNhY2hlID0gU3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZyk7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ1NTUHJvcGVydHlJbmZvPiBDU1NQcm9wZXJ0eUlu
Zm9NYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5SW5m
b01hcCwgcHJvcGVydHlJbmZvQ2FjaGUsICgpKTsKLSAgICBwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0
eUluZm9DYWNoZS5nZXQoc3RyaW5nRm9yQ2FjaGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDU1NQcm9wZXJ0eUluZm9NYXA+IHByb3BlcnR5SW5mb0NhY2hlOworICAgIHByb3BlcnR5SW5m
byA9IHByb3BlcnR5SW5mb0NhY2hlLmdldCgpLmdldChzdHJpbmdGb3JDYWNoZSk7CiAgICAgaWYg
KHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwog
CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlE
Rm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICBpZiAocHJv
cGVydHlJRCkgewogICAgICAgICBwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGhh
ZFBpeGVsT3JQb3NQcmVmaXg7CiAgICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCk7Ci0gICAgICAgIHByb3BlcnR5SW5m
b0NhY2hlLmFkZChzdHJpbmdGb3JDYWNoZSwgcHJvcGVydHlJbmZvKTsKKyAgICAgICAgcHJvcGVy
dHlJbmZvQ2FjaGUuZ2V0KCkuYWRkKHN0cmluZ0ZvckNhY2hlLCBwcm9wZXJ0eUluZm8pOwogICAg
IH0KICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmNwcAppbmRleCA0NGY2NGI2Li5mYWE4OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX2luc3RhbmNlLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01Niw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBCaW5k
aW5ncyB7CiAKIHN0YXRpYyBTdHJpbmcmIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZXhjZXB0aW9uU3RyOwogICAgIHJl
dHVybiBleGNlcHRpb25TdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggYzU1
NzdiNy4uZDFlNmFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTI4OCwxMSArMjg4
LDExIEBAIHN0YXRpYyB2b2lkIGFkZFJlc29sdXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZShE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluCiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAg
ICBBU1NFUlQodmFsdWUpOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgbWVkaWFRdWVyeU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIkNvbnNpZGVyIHVzaW5nICdk
cHB4JyB1bml0cyBpbnN0ZWFkIG9mICclcmVwbGFjZW1lbnRVbml0cyUnLCBhcyBpbiBDU1MgJyVy
ZXBsYWNlbWVudFVuaXRzJScgbWVhbnMgZG90cy1wZXItQ1NTLSVsZW5ndGhVbml0JSwgbm90IGRv
dHMtcGVyLXBoeXNpY2FsLSVsZW5ndGhVbml0JSwgc28gZG9lcyBub3QgY29ycmVzcG9uZCB0byB0
aGUgYWN0dWFsICclcmVwbGFjZW1lbnRVbml0cyUnIG9mIGEgc2NyZWVuLiBJbiBtZWRpYSBxdWVy
eSBleHByZXNzaW9uOiAiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIG1lZGlhVmFsdWVEUEksIChBU0NJSUxpdGVyYWwoImRwaSIpKSk7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbWVkaWFWYWx1ZURQQ00sIChBU0NJSUxp
dGVyYWwoImRwY20iKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGxlbmd0aFVuaXRJbmNoLCAoQVNDSUlMaXRlcmFsKCJpbmNoIikpKTsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBsZW5ndGhVbml0Q2VudGltZXRlciwgKEFT
Q0lJTGl0ZXJhbCgiY2VudGltZXRlciIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gbWVkaWFRdWVyeU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJDb25zaWRlciB1c2luZyAnZHBw
eCcgdW5pdHMgaW5zdGVhZCBvZiAnJXJlcGxhY2VtZW50VW5pdHMlJywgYXMgaW4gQ1NTICclcmVw
bGFjZW1lbnRVbml0cyUnIG1lYW5zIGRvdHMtcGVyLUNTUy0lbGVuZ3RoVW5pdCUsIG5vdCBkb3Rz
LXBlci1waHlzaWNhbC0lbGVuZ3RoVW5pdCUsIHNvIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gdGhl
IGFjdHVhbCAnJXJlcGxhY2VtZW50VW5pdHMlJyBvZiBhIHNjcmVlbi4gSW4gbWVkaWEgcXVlcnkg
ZXhwcmVzc2lvbjogIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IG1lZGlh
VmFsdWVEUEkoQVNDSUlMaXRlcmFsKCJkcGkiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gbWVkaWFWYWx1ZURQQ00oQVNDSUlMaXRlcmFsKCJkcGNtIikpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGxlbmd0aFVuaXRJbmNoKEFTQ0lJTGl0ZXJhbCgiaW5j
aCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBsZW5ndGhVbml0Q2VudGlt
ZXRlcihBU0NJSUxpdGVyYWwoImNlbnRpbWV0ZXIiKSk7CiAKICAgICBTdHJpbmcgbWVzc2FnZTsK
ICAgICBpZiAodmFsdWUtPmlzRG90c1BlckluY2goKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5jcHAKaW5kZXggNjBjNWQzOS4uM2UzMDE0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGVJbXBvcnQuaCIKICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMxNiwxMSArMzE3LDExIEBAIHZv
aWQgU3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZUF1dGhvclN0eWxlU2hlZXQoY29uc3QgQ2FjaGVk
Q1NTU3R5bGVTaGVldCogY2FjaGVkCiAKICAgICBpZiAobV9wYXJzZXJDb250ZXh0Lm5lZWRzU2l0
ZVNwZWNpZmljUXVpcmtzICYmIGlzU3RyaWN0UGFyc2VyTW9kZShtX3BhcnNlckNvbnRleHQubW9k
ZSkpIHsKICAgICAgICAgLy8gV29yayBhcm91bmQgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yODM1MD4uCi0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIG1lZGlhV2lraUtIVE1MRml4ZXNTdHlsZVNoZWV0LCAoQVNDSUlM
aXRlcmFsKCIvKiBLSFRNTCBmaXggc3R5bGVzaGVldCAqL1xuLyogd29yayBhcm91bmQgdGhlIGhv
cml6b250YWwgc2Nyb2xsYmFycyAqL1xuI2NvbHVtbi1jb250ZW50IHsgbWFyZ2luLWxlZnQ6IDA7
IH1cblxuIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4g
bWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQoQVNDSUlMaXRlcmFsKCIvKiBLSFRNTCBmaXgg
c3R5bGVzaGVldCAqL1xuLyogd29yayBhcm91bmQgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFycyAq
L1xuI2NvbHVtbi1jb250ZW50IHsgbWFyZ2luLWxlZnQ6IDA7IH1cblxuIikpOwogICAgICAgICAv
LyBUaGVyZSBhcmUgdHdvIHZhcmlhbnRzIG9mIEtIVE1MRml4ZXMuY3NzLiBPbmUgaXMgZXF1YWwg
dG8gbWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQsCiAgICAgICAgIC8vIHdoaWxlIHRoZSBv
dGhlciBsYWNrcyB0aGUgc2Vjb25kIHRyYWlsaW5nIG5ld2xpbmUuCi0gICAgICAgIGlmIChiYXNl
VVJMKCkuc3RyaW5nKCkuZW5kc1dpdGgoIi9LSFRNTEZpeGVzLmNzcyIpICYmICFzaGVldFRleHQu
aXNOdWxsKCkgJiYgbWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQuc3RhcnRzV2l0aChzaGVl
dFRleHQpCi0gICAgICAgICAgICAmJiBzaGVldFRleHQubGVuZ3RoKCkgPj0gbWVkaWFXaWtpS0hU
TUxGaXhlc1N0eWxlU2hlZXQubGVuZ3RoKCkgLSAxKQorICAgICAgICBpZiAoYmFzZVVSTCgpLnN0
cmluZygpLmVuZHNXaXRoKCIvS0hUTUxGaXhlcy5jc3MiKSAmJiAhc2hlZXRUZXh0LmlzTnVsbCgp
ICYmIG1lZGlhV2lraUtIVE1MRml4ZXNTdHlsZVNoZWV0LmdldCgpLnN0YXJ0c1dpdGgoc2hlZXRU
ZXh0KQorICAgICAgICAgICAgJiYgc2hlZXRUZXh0Lmxlbmd0aCgpID49IG1lZGlhV2lraUtIVE1M
Rml4ZXNTdHlsZVNoZWV0LmdldCgpLmxlbmd0aCgpIC0gMSkKICAgICAgICAgICAgIGNsZWFyUnVs
ZXMoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5jcHAKaW5kZXggMzFlNWYzMS4uZjZkZTMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
Ik11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25SZWNv
cmQuaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDMsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIEhh
c2hNYXA8Q29udGFpbmVyTm9kZSosIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IqPiBBY2N1
bXVsYXRvck1hcDsKIHN0YXRpYyBBY2N1bXVsYXRvck1hcCYgYWNjdW11bGF0b3JNYXAoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBY2N1bXVsYXRvck1hcCwgbWFwLCAo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFjY3VtdWxhdG9yTWFwPiBtYXA7CiAgICAg
cmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAK
aW5kZXggZmUwYmNjMS4uZmFmMmRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIK
ICNpbmNsdWRlICJUZXh0RG9jdW1lbnQuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODgsNyArODksNyBAQCBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZFNWRzEwRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYg
dmVyc2lvbgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZCA9IGZhbHNlOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGZWF0dXJl
U2V0LCBzdmdGZWF0dXJlcywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGZWF0dXJl
U2V0PiBzdmdGZWF0dXJlczsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAjaWYgRU5BQkxFKFNW
R19GT05UUykKICAgICAgICAgYWRkU3RyaW5nKHN2Z0ZlYXR1cmVzLCAic3ZnIik7CkBAIC0xMDgs
NyArMTA5LDcgQEAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRTVkcxMEZlYXR1cmUoY29uc3QgU3Ry
aW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24KICAgICAgICAgaW5pdGlhbGl6ZWQg
PSB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmVhdHVyZS5zdGFydHNXaXRoKCJvcmcudzNjLiIs
IGZhbHNlKQotICAgICAgICAmJiBzdmdGZWF0dXJlcy5jb250YWlucyhmZWF0dXJlLnJpZ2h0KGZl
YXR1cmUubGVuZ3RoKCkgLSA4KSk7CisgICAgICAgICYmIHN2Z0ZlYXR1cmVzLmdldCgpLmNvbnRh
aW5zKGZlYXR1cmUucmlnaHQoZmVhdHVyZS5sZW5ndGgoKSAtIDgpKTsKIH0KIAogc3RhdGljIGJv
b2wgaXNTdXBwb3J0ZWRTVkcxMUZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24pCkBAIC0xMTcsNyArMTE4LDcgQEAgc3RhdGljIGJvb2wgaXNTdXBwb3J0
ZWRTVkcxMUZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNp
b24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQg
PSBmYWxzZTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRmVhdHVyZVNldCwg
c3ZnRmVhdHVyZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RmVhdHVyZVNldD4g
c3ZnRmVhdHVyZXM7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICAvLyBTYWRseSwg
d2UgY2Fubm90IGNsYWltIHRvIGltcGxlbWVudCBhbnkgb2YgdGhlIFNWRyAxLjEgZ2VuZXJpYyBm
ZWF0dXJlIHNldHMKICAgICAgICAgLy8gbGFjayBvZiBGb250IGFuZCBGaWx0ZXIgc3VwcG9ydC4K
QEAgLTE3NSw3ICsxNzYsNyBAQCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVyZShj
b25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbgogICAgICAgICBpbml0
aWFsaXplZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmZWF0dXJlLnN0YXJ0c1dpdGgoImh0
dHA6Ly93d3cudzMub3JnL3RyL3N2ZzExL2ZlYXR1cmUjIiwgZmFsc2UpCi0gICAgICAgICYmIHN2
Z0ZlYXR1cmVzLmNvbnRhaW5zKGZlYXR1cmUucmlnaHQoZmVhdHVyZS5sZW5ndGgoKSAtIDM1KSk7
CisgICAgICAgICYmIHN2Z0ZlYXR1cmVzLmdldCgpLmNvbnRhaW5zKGZlYXR1cmUucmlnaHQoZmVh
dHVyZS5sZW5ndGgoKSAtIDM1KSk7CiB9CiAKIERPTUltcGxlbWVudGF0aW9uOjpET01JbXBsZW1l
bnRhdGlvbihEb2N1bWVudCYgZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAy
ODRlODc3Li5kMDU2MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE3Nyw2ICsxNzcs
NyBAQAogI2luY2x1ZGUgPGN0aW1lPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2suaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8eWFyci9SZWd1bGFyRXhwcmVzc2lv
bi5oPgpAQCAtMTExOCw5ICsxMTE5LDkgQEAgUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVh
dGVFbGVtZW50TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmkKIAogU3Ry
aW5nIERvY3VtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBsb2FkaW5nLCAoQVNDSUlMaXRlcmFsKCJsb2Fk
aW5nIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBpbnRlcmFjdGl2ZSwgKEFTQ0lJTGl0ZXJhbCgiaW50ZXJhY3RpdmUiKSkpOwotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGNvbXBsZXRlLCAoQVNDSUlM
aXRlcmFsKCJjb21wbGV0ZSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0
cmluZz4gbG9hZGluZyhBU0NJSUxpdGVyYWwoImxvYWRpbmciKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0cmluZz4gaW50ZXJhY3RpdmUoQVNDSUlMaXRlcmFsKCJpbnRlcmFj
dGl2ZSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBjb21wbGV0
ZShBU0NJSUxpdGVyYWwoImNvbXBsZXRlIikpOwogCiAgICAgc3dpdGNoIChtX3JlYWR5U3RhdGUp
IHsKICAgICBjYXNlIExvYWRpbmc6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTg5ZTE0ZS4u
ZThjYmM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtODksNiArODksNyBAQAogI2luY2x1
ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI5MjgsMjEg
KzI5MjksMjEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVy
c2V0KCkgY29uc3QKIHsKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgdW5kZWZpbmVkU3RhdGUsICgidW5kZWZpbmVkIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IHVuZGVmaW5lZFN0YXRlKCJ1bmRlZmluZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICBpZiAoIWRvY3VtZW50KCkuY3NzUmVnaW9uc0VuYWJsZWQoKSB8fCAh
cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkKICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRl
OwogCiAgICAgc3dpdGNoIChyZWdpb25PdmVyc2V0U3RhdGUoKSkgewogICAgIGNhc2UgUmVnaW9u
Rml0OiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGZpdFN0YXRlLCAoImZpdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZml0U3RhdGUo
ImZpdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1
cm4gZml0U3RhdGU7CiAgICAgfQogICAgIGNhc2UgUmVnaW9uRW1wdHk6IHsKLSAgICAgICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZW1wdHlTdGF0ZSwgKCJl
bXB0eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZW1wdHlTdGF0ZSgiZW1wdHkiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmV0dXJuIGVtcHR5U3Rh
dGU7CiAgICAgfQogICAgIGNhc2UgUmVnaW9uT3ZlcnNldDogewotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvdmVyZmxvd1N0YXRlLCAoIm92ZXJz
ZXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG92ZXJmbG93U3RhdGUoIm92ZXJzZXQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmV0dXJuIG92ZXJm
bG93U3RhdGU7CiAgICAgfQogICAgIGNhc2UgUmVnaW9uVW5kZWZpbmVkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCAzNDE4NDdmLi5kNTRjNjdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHVXNlRWxlbWVudC5oIgogI2luY2x1ZGUgIlRvdWNo
RXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0yMTMsOCArMjE0LDggQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3Bh
dGNoU2ltdWxhdGVkQ2xpY2soRWxlbWVudCogZWxlbWVudCwgRXZlbnQqIHVuZGVybHlpbmcKICAg
ICBpZiAoZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PEVsZW1lbnQqPiwg
ZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcywgKCkpOwotICAgIGlmICghZWxlbWVu
dHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcy5hZGQoZWxlbWVudCkuaXNOZXdFbnRyeSkKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxFbGVtZW50Kj4+IGVsZW1lbnRzRGlzcGF0
Y2hpbmdTaW11bGF0ZWRDbGlja3M7CisgICAgaWYgKCFlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxh
dGVkQ2xpY2tzLmdldCgpLmFkZChlbGVtZW50KS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobW91c2VFdmVudE9wdGlvbnMgPT0gU2VuZE1vdXNlT3ZlclVwRG93bkV2ZW50
cykKQEAgLTIzMCw3ICsyMzEsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11
bGF0ZWRDbGljayhFbGVtZW50KiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZwogICAgIC8vIGFs
d2F5cyBzZW5kIGNsaWNrCiAgICAgZGlzcGF0Y2hFdmVudChlbGVtZW50LCBTaW11bGF0ZWRNb3Vz
ZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGVsZW1lbnQtPmRvY3VtZW50
KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7CiAKLSAgICBlbGVt
ZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLnJlbW92ZShlbGVtZW50KTsKKyAgICBlbGVt
ZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLmdldCgpLnJlbW92ZShlbGVtZW50KTsKIH0K
IAogc3RhdGljIHZvaWQgY2FsbERlZmF1bHRFdmVudEhhbmRsZXJzSW5UaGVCdWJibGluZ09yZGVy
KEV2ZW50JiBldmVudCwgY29uc3QgRXZlbnRQYXRoJiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCA0Y2FmNjJmLi40MWEyMDU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29u
dGVudHMuaCIKICNpbmNsdWRlICJUZXh0Tm9kZVRyYXZlcnNhbC5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEzLDcgKzExNCw3IEBAIHZvaWQgSW5saW5lU3R5bGVT
aGVldE93bmVyOjpjbGVhclNoZWV0KCkKIAogaW5saW5lIGJvb2wgaXNWYWxpZENTU0NvbnRlbnRU
eXBlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjc3NDb250
ZW50VHlwZSwgKCJ0ZXh0L2NzcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjc3NDb250
ZW50VHlwZSgidGV4dC9jc3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBpZiAodHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVy
biBlbGVtZW50LmlzSFRNTEVsZW1lbnQoKSA/IGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsIGNzc0Nv
bnRlbnRUeXBlKSA6IHR5cGUgPT0gY3NzQ29udGVudFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlci5jcHAKaW5kZXggZmMxNzA4Yy4uODdmYmJiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcApAQCAtMTQ1LDEzICsxNDUsMTMgQEAgdHlwZWRlZiBI
YXNoU2V0PFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPj4gTXV0YXRpb25PYnNlcnZlclNldDsKIAog
c3RhdGljIE11dGF0aW9uT2JzZXJ2ZXJTZXQmIGFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTXV0YXRpb25PYnNlcnZlclNldCwg
YWN0aXZlT2JzZXJ2ZXJzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE11dGF0aW9u
T2JzZXJ2ZXJTZXQ+IGFjdGl2ZU9ic2VydmVyczsKICAgICByZXR1cm4gYWN0aXZlT2JzZXJ2ZXJz
OwogfQogCiBzdGF0aWMgTXV0YXRpb25PYnNlcnZlclNldCYgc3VzcGVuZGVkTXV0YXRpb25PYnNl
cnZlcnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRhdGlvbk9i
c2VydmVyU2V0LCBzdXNwZW5kZWRPYnNlcnZlcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8TXV0YXRpb25PYnNlcnZlclNldD4gc3VzcGVuZGVkT2JzZXJ2ZXJzOwogICAgIHJldHVy
biBzdXNwZW5kZWRPYnNlcnZlcnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblJlY29yZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQu
Y3BwCmluZGV4IDk1ZmNlYzIuLmNlNDFhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblJlY29yZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVj
b3JkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgog
I2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0xNDUsMTkgKzE0NiwxOSBAQCBwcml2YXRlOgogCiBjb25zdCBBdG9taWNTdHJpbmcmIENo
aWxkTGlzdFJlY29yZDo6dHlwZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgY2hpbGRMaXN0LCAoImNoaWxkTGlzdCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBjaGlsZExpc3QoImNoaWxkTGlzdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBjaGlsZExpc3Q7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgQXR0cmlidXRlc1JlY29yZDo6dHlwZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgYXR0cmlidXRlcywgKCJhdHRyaWJ1dGVzIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IGF0dHJpYnV0ZXMoImF0dHJpYnV0ZXMiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gYXR0cmlidXRlczsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBDaGFyYWN0ZXJEYXRhUmVjb3JkOjp0eXBlKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGFyYWN0ZXJEYXRhLCAoImNo
YXJhY3RlckRhdGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gY2hhcmFjdGVyRGF0YSgiY2hhcmFj
dGVyRGF0YSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBjaGFyYWN0ZXJEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNl
dWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5k
ZXggYjI0OTI0MS4uY2Y5ZWFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVk
b0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApA
QCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgUXVhbGlmaWVk
TmFtZSYgcHNldWRvRWxlbWVudFRhZ05hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBuYW1lLCAobnVsbEF0b20sICI8cHNldWRvPiIsIG51
bGxBdG9tKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IG5hbWUo
bnVsbEF0b20sICI8cHNldWRvPiIsIG51bGxBdG9tKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAog
U3RyaW5nIFBzZXVkb0VsZW1lbnQ6OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKFBzZXVkb0lk
IHBzZXVkb0lkKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGFmdGVyLCAoQVNDSUlMaXRlcmFsKCI6OmFmdGVyIikpKTsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBiZWZvcmUsIChBU0NJSUxpdGVyYWwo
Ijo6YmVmb3JlIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBh
ZnRlcihBU0NJSUxpdGVyYWwoIjo6YWZ0ZXIiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gYmVmb3JlKEFTQ0lJTGl0ZXJhbCgiOjpiZWZvcmUiKSk7CiAgICAgc3dp
dGNoIChwc2V1ZG9JZCkgewogICAgIGNhc2UgQUZURVI6CiAgICAgICAgIHJldHVybiBhZnRlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAppbmRleCBmZDc5YmRhLi41NmU0ZmZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0YXRpY0NvbnN0cnVjdG9ycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIApAQCAtNzQsNyArNzUsNyBAQCBzdHJ1Y3QgUU5hbWVDb21wb25lbnRzVHJhbnNs
YXRvciB7CiAKIHN0YXRpYyBpbmxpbmUgUU5hbWVTZXQmIHF1YWxpZmllZE5hbWVDYWNoZSgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFFOYW1lU2V0LCBuYW1lQ2FjaGUs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UU5hbWVTZXQ+IG5hbWVDYWNoZTsKICAg
ICByZXR1cm4gbmFtZUNhY2hlOwogfQogCkBAIC0xMTUsNyArMTE2LDcgQEAgdm9pZCBRdWFsaWZp
ZWROYW1lOjppbml0KCkKIAogY29uc3QgUXVhbGlmaWVkTmFtZSYgbnVsbFFOYW1lKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgbnVsbE5hbWUs
IChudWxsQXRvbSwgbnVsbEF0b20sIG51bGxBdG9tKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFF1YWxpZmllZE5hbWU+IG51bGxOYW1lKG51bGxBdG9tLCBudWxsQXRvbSwgbnVsbEF0b20p
OwogICAgIHJldHVybiBudWxsTmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
Y3BwCmluZGV4IDYzZjU5M2YuLjE4NzkxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5jcHAKQEAgLTExOSwyNCArMTE5LDI0IEBAIHN0YXRpYyBib29sIGlzTGVnYWN5U3VwcG9ydGVk
SmF2YVNjcmlwdExhbmd1YWdlKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiAKICAgICAvLyBGSVhN
RTogVGhpcyBmdW5jdGlvbiBpcyBub3QgSFRNTDUgY29tcGxpYW50LiBUaGVzZSBiZWxvbmcgaW4g
dGhlIE1JTUUgcmVnaXN0cnkgYXMgInRleHQvamF2YXNjcmlwdDx2ZXJzaW9uPiIgZW50cmllcy4K
ICAgICB0eXBlZGVmIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IExhbmd1YWdlU2V0
OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMYW5ndWFnZVNldCwgbGFuZ3Vh
Z2VzLCAoKSk7Ci0gICAgaWYgKGxhbmd1YWdlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbGFuZ3Vh
Z2VzLmFkZCgiamF2YXNjcmlwdCIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0
Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjAiKTsKLSAgICAgICAgbGFu
Z3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMSIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZh
c2NyaXB0MS4yIik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjMiKTsKLSAg
ICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuNCIpOwotICAgICAgICBsYW5ndWFnZXMu
YWRkKCJqYXZhc2NyaXB0MS41Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQx
LjYiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuNyIpOwotICAgICAgICBs
YW5ndWFnZXMuYWRkKCJsaXZlc2NyaXB0Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImVjbWFz
Y3JpcHQiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgianNjcmlwdCIpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxMYW5ndWFnZVNldD4gbGFuZ3VhZ2VzOworICAgIGlmIChsYW5ndWFnZXMu
Z2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFzY3Jp
cHQiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdCIpOworICAgICAg
ICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0MS4wIik7CisgICAgICAgIGxhbmd1YWdl
cy5nZXQoKS5hZGQoImphdmFzY3JpcHQxLjEiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFk
ZCgiamF2YXNjcmlwdDEuMiIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2Ny
aXB0MS4zIik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFzY3JpcHQxLjQiKTsK
KyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNSIpOworICAgICAgICBs
YW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0MS42Iik7CisgICAgICAgIGxhbmd1YWdlcy5n
ZXQoKS5hZGQoImphdmFzY3JpcHQxLjciKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgi
bGl2ZXNjcmlwdCIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJlY21hc2NyaXB0Iik7
CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImpzY3JpcHQiKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gbGFuZ3VhZ2VzLmNvbnRhaW5zKGxhbmd1YWdlKTsKKyAgICByZXR1cm4gbGFuZ3VhZ2Vz
LmdldCgpLmNvbnRhaW5zKGxhbmd1YWdlKTsKIH0KIAogdm9pZCBTY3JpcHRFbGVtZW50OjpkaXNw
YXRjaEVycm9yRXZlbnQoKQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogCiAgICAgaWYgKG1fcmVx
dWVzdFVzZXNBY2Nlc3NDb250cm9sICYmICFtX2NhY2hlZFNjcmlwdC0+cGFzc2VzU2FtZU9yaWdp
blBvbGljeUNoZWNrKCptX2VsZW1lbnQuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKSkgewog
ICAgICAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIkNyb3Nz
LW9yaWdpbiBzY3JpcHQgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJp
bmcgcG9saWN5LiIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNv
bnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlwdCBsb2FkIGRlbmll
ZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpOwogICAgICAgICBt
X2VsZW1lbnQuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRl
eCA3MmUzYWQ0Li43Yjg5ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlRleHROb2RlVHJhdmVy
c2FsLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC02Miw3
ICs2Myw3IEBAIHN0YXRpYyBpbnQgdG9JZGVudGlmaWVyKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZh
bHVlKQogCiBzdGF0aWMgU3RyaW5nJiBzdHlsZVNwYW5DbGFzc1N0cmluZygpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3R5bGVTcGFuQ2xhc3NTdHJpbmcs
ICgoQXBwbGVTdHlsZVNwYW5DbGFzcykpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBzdHlsZVNwYW5DbGFzc1N0cmluZyhBcHBsZVN0eWxlU3BhbkNsYXNzKTsKICAgICByZXR1
cm4gc3R5bGVTcGFuQ2xhc3NTdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
YXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggZjk2ODJhNC4uYzEzNDA2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJYTGlua05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgogI2luY2x1
ZGUgIlhNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMjU5LDggKzI2MCw4IEBAIGJvb2wgTWFya3VwQWNjdW11bGF0b3I6OnNob3VsZEFkZE5hbWVz
cGFjZUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAocHJlZml4LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuICFlbGVtZW50Lmhhc0F0dHJpYnV0ZSh4bWxuc0F0b20pOwog
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgeG1sbnNXaXRoQ29s
b24sIChBU0NJSUxpdGVyYWwoInhtbG5zOiIpKSk7Ci0gICAgcmV0dXJuICFlbGVtZW50Lmhhc0F0
dHJpYnV0ZSh4bWxuc1dpdGhDb2xvbiArIHByZWZpeCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4geG1sbnNXaXRoQ29sb24oQVNDSUlMaXRlcmFsKCJ4bWxuczoiKSk7CisgICAg
cmV0dXJuICFlbGVtZW50Lmhhc0F0dHJpYnV0ZSh4bWxuc1dpdGhDb2xvbi5nZXQoKSArIHByZWZp
eCk7CiB9CiAKIGJvb2wgTWFya3VwQWNjdW11bGF0b3I6OnNob3VsZEFkZE5hbWVzcGFjZUF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgTmFtZXNwYWNlcyYgbmFtZXNwYWNlcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKaW5kZXggNzg5NzJjNy4uZWI0MTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTEwNCwxNCArMTA0LDE0IEBAIHBy
aXZhdGU6CiAKIHN0YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VOZXdsaW5lTm9kZShjb25zdCBOb2Rl
ICpub2RlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGlu
dGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nLCAoQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBpbnRlcmNoYW5nZU5ld2xpbmVDbGFz
c1N0cmluZyhBcHBsZUludGVyY2hhbmdlTmV3bGluZSk7CiAgICAgcmV0dXJuIG5vZGUgJiYgbm9k
ZS0+aGFzVGFnTmFtZShiclRhZykgJiYgCiAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEVs
ZW1lbnQgKj4obm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09IGludGVyY2hhbmdlTmV3
bGluZUNsYXNzU3RyaW5nOwogfQogCiBzdGF0aWMgYm9vbCBpc0ludGVyY2hhbmdlQ29udmVydGVk
U3BhY2VTcGFuKGNvbnN0IE5vZGUgKm5vZGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmcsIChBcHBsZUNv
bnZlcnRlZFNwYWNlKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29udmVy
dGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmcoQXBwbGVDb252ZXJ0ZWRTcGFjZSk7CiAgICAgcmV0dXJu
IG5vZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiAKICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3Qg
SFRNTEVsZW1lbnQgKj4obm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09IGNvbnZlcnRl
ZFNwYWNlU3BhbkNsYXNzU3RyaW5nOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5n
LmNwcAppbmRleCAzMDZmNGIyLi4yZDdhZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxl
ZGl0aW5nLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIGJvb2wgaXNUYWJsZVN0cnVjdHVyZU5vZGUo
Y29uc3QgTm9kZSAqbm9kZSkKIAogY29uc3QgU3RyaW5nJiBub25CcmVha2luZ1NwYWNlU3RyaW5n
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBub25CcmVh
a2luZ1NwYWNlU3RyaW5nLCAoJm5vQnJlYWtTcGFjZSwgMSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoJm5vQnJlYWtTcGFjZSwgMSk7
CiAgICAgcmV0dXJuIG5vbkJyZWFraW5nU3BhY2VTdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcAppbmRleCA2ZDMyNjU2Li5jN2FiNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwCkBAIC0yMTMsOCArMjEzLDggQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6
YXBwZW5kU3R5bGVOb2RlT3BlblRhZyhTdHJpbmdCdWlsZGVyJiBvdXQsIFN0eWxlUHIKIAogY29u
c3QgU3RyaW5nJiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c3R5bGVOb2RlQ2xvc2VUYWcoYm9v
bCBpc0Jsb2NrKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGRpdkNsb3NlLCAoQVNDSUlMaXRlcmFsKCI8L2Rpdj4iKSkpOwotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0eWxlU3BhbkNsb3NlLCAoQVND
SUlMaXRlcmFsKCI8L3NwYW4+IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiBkaXZDbG9zZShBU0NJSUxpdGVyYWwoIjwvZGl2PiIpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBzdHlsZVNwYW5DbG9zZShBU0NJSUxpdGVyYWwoIjwv
c3Bhbj4iKSk7CiAgICAgcmV0dXJuIGlzQmxvY2sgPyBkaXZDbG9zZSA6IHN0eWxlU3BhbkNsb3Nl
OwogfQogCkBAIC01NzcsNyArNTc3LDcgQEAgc3RhdGljIE5vZGUqIGhpZ2hlc3RBbmNlc3RvclRv
V3JhcE1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIEVBbm5vdGF0ZUZvckludGVyY2gKIHN0YXRp
YyBTdHJpbmcgY3JlYXRlTWFya3VwSW50ZXJuYWwoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBS
YW5nZSYgcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLAogICAgIEVBbm5vdGF0ZUZvckludGVy
Y2hhbmdlIHNob3VsZEFubm90YXRlLCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMsIEVBYnNv
bHV0ZVVSTHMgc2hvdWxkUmVzb2x2ZVVSTHMpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0cmluZywgaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nLCAoQVNDSUlM
aXRlcmFsKCI8YnIgY2xhc3M9XCIiIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lICJcIj4iKSkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGludGVyY2hhbmdlTmV3bGlu
ZVN0cmluZyhBU0NJSUxpdGVyYWwoIjxiciBjbGFzcz1cIiIgQXBwbGVJbnRlcmNoYW5nZU5ld2xp
bmUgIlwiPiIpKTsKIAogICAgIGJvb2wgY29sbGFwc2VkID0gcmFuZ2UuY29sbGFwc2VkKCk7CiAg
ICAgaWYgKGNvbGxhcHNlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDZiMDMzYjAuLjBm
NGNlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNjEsMTEgKzYyLDEwIEBAIHZvaWQgQmxvYlVSTFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJM
KGNvbnN0IFVSTCYgdXJsKQogCiBVUkxSZWdpc3RyeSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3Ry
eSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEJsb2JVUkxSZWdpc3Ry
eSwgaW5zdGFuY2UsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QmxvYlVSTFJlZ2lz
dHJ5PiBpbnN0YW5jZTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLQogQmxvYjo6QmxvYihV
bmluaXRpYWxpemVkQ29udHJ1Y3RvcikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXgg
YTMyYTBiNy4uYWRiMGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hv
b3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCw3ICs1OSw3IEBAIHZvaWQgQmFz
ZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQo
RXZlbnQqKQogCiB2b2lkIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCB2YWx1ZUNvbnRhaW5lclBzZXVkbywgKCItd2Via2l0LWRhdGUtYW5kLXRp
bWUtdmFsdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdmFsdWVDb250YWluZXJQc2V1ZG8oIi13
ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogCiAgICAgUmVmPEhUTUxEaXZFbGVtZW50PiB2YWx1ZUNvbnRhaW5lciA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLmRvY3VtZW50KCkpOwogICAgIHZhbHVlQ29udGFp
bmVyLT5zZXRQc2V1ZG8odmFsdWVDb250YWluZXJQc2V1ZG8pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZUlucHV0VHlwZS5jcHAKaW5kZXggYjFlODI5ZC4uYjM0ZjdkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVJbnB1dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5h
bWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNjEsNyArNjIsNyBAQCBEYXRlQ29tcG9uZW50czo6VHlwZSBEYXRlSW5wdXRU
eXBlOjpkYXRlVHlwZSgpIGNvbnN0CiAKIFN0ZXBSYW5nZSBEYXRlSW5wdXRUeXBlOjpjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKGRhdGVEZWZhdWx0U3RlcCwgZGF0ZURlZmF1bHRTdGVw
QmFzZSwgZGF0ZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91
bGRCZUludGVnZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdl
OjpTdGVwRGVzY3JpcHRpb24+IHN0ZXBEZXNjcmlwdGlvbihkYXRlRGVmYXVsdFN0ZXAsIGRhdGVE
ZWZhdWx0U3RlcEJhc2UsIGRhdGVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3Rl
cFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKICAg
ICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjpt
aW5pbXVtRGF0ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1l
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3Bw
CmluZGV4IGIyZWZlODUuLmIyOTQ1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RGF0ZVRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJ
bnB1dFR5cGUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02Miw3ICs2Myw3IEBAIERlY2ltYWwgRGF0ZVRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1
ZUZvclN0ZXBVcCgpIGNvbnN0CiAKIFN0ZXBSYW5nZSBEYXRlVGltZUlucHV0VHlwZTo6Y3JlYXRl
U3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2Ny
aXB0aW9uLCBzdGVwRGVzY3JpcHRpb24sIChkYXRlVGltZURlZmF1bHRTdGVwLCBkYXRlVGltZURl
ZmF1bHRTdGVwQmFzZSwgZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVk
U3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRpb24oZGF0ZVRpbWVE
ZWZhdWx0U3RlcCwgZGF0ZVRpbWVEZWZhdWx0U3RlcEJhc2UsIGRhdGVUaW1lU3RlcFNjYWxlRmFj
dG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcik7CiAKICAgICBj
b25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0
dHJpYnV0ZShtaW5BdHRyKSwgMCk7CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJv
bURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11bURhdGVUaW1lKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCmluZGV4IDRhNDM4ZjMuLjc2
NjIyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBl
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY4
LDcgKzY5LDcgQEAgdm9pZCBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXRWYWx1ZUFzRGF0ZShk
b3VibGUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb24KIAogU3RlcFJhbmdlIERhdGVUaW1l
TG9jYWxJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhh
bmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAoZGF0ZVRpbWVM
b2NhbERlZmF1bHRTdGVwLCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZUxv
Y2FsU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50
ZWdlcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uLCAoZGF0ZVRpbWVMb2NhbERlZmF1bHRTdGVwLCBk
YXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZUxvY2FsU3RlcFNjYWxlRmFjdG9y
LCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcik7CiAKICAgICBjb25z
dCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJp
YnV0ZShtaW5BdHRyKSwgMCk7CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051
bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURv
dWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11bURhdGVUaW1lKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXggZGFlMTc4Mi4uZTZlMDE5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRl
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxh
ckV4cHJlc3Npb24uaD4KIApAQCAtNDQsMTAgKzQ1LDEwIEBAIHN0YXRpYyBib29sIGlzVmFsaWRF
bWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogICAgIGlmICghYWRkcmVzc0xlbmd0
aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24sIHJlZ0V4cCwgKGVtYWls
UGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiByZWdFeHAoZW1haWxQYXR0ZXJu
LCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKIAogICAgIGludCBtYXRjaExlbmd0aDsKLSAgICBpbnQg
bWF0Y2hPZmZzZXQgPSByZWdFeHAubWF0Y2goYWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKKyAg
ICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAuZ2V0KCkubWF0Y2goYWRkcmVzcywgMCwgJm1hdGNo
TGVuZ3RoKTsKIAogICAgIHJldHVybiAhbWF0Y2hPZmZzZXQgJiYgbWF0Y2hMZW5ndGggPT0gYWRk
cmVzc0xlbmd0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXgg
YjBmM2E5Mi4uY2RjN2IxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAK
QEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTMzMyw3ICszMzQsNyBAQCBBdG9taWNTdHJpbmcgRm9ybUtleUdlbmVyYXRvcjo6Zm9y
bUtleShjb25zdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlJiBjbwogewogICAgIEhU
TUxGb3JtRWxlbWVudCogZm9ybSA9IG93bmVyRm9ybUZvclN0YXRlKGNvbnRyb2wpOwogICAgIGlm
ICghZm9ybSkgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBmb3JtS2V5Rm9yTm9Pd25lciwgKCJObyBvd25lciIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gZm9ybUtleUZvck5vT3duZXIoIk5vIG93bmVyIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiBmb3JtS2V5Rm9yTm9Pd25lcjsKICAg
ICB9CiAgICAgRm9ybVRvS2V5TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fZm9ybVRvS2V5TWFw
LmZpbmQoZm9ybSk7CkBAIC0zODYsNyArMzg3LDcgQEAgc3RhdGljIFN0cmluZyBmb3JtU3RhdGVT
aWduYXR1cmUoKQogICAgIC8vIEluIHRoZSBsZWdhY3kgdmVyc2lvbiBvZiBzZXJpYWxpemVkIHN0
YXRlLCB0aGUgZmlyc3QgaXRlbSB3YXMgYSBuYW1lCiAgICAgLy8gYXR0cmlidXRlIHZhbHVlIG9m
IGEgZm9ybSBjb250cm9sLiBUaGUgZm9sbG93aW5nIHN0cmluZyBsaXRlcmFsIHNob3VsZAogICAg
IC8vIGNvbnRhaW4gc29tZSBjaGFyYWN0ZXJzIHdoaWNoIGFyZSByYXJlbHkgdXNlZCBmb3IgbmFt
ZSBhdHRyaWJ1dGUgdmFsdWVzLgotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIHNpZ25hdHVyZSwgKEFTQ0lJTGl0ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxpemVk
IGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxuXHI9JiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gc2lnbmF0dXJlKEFTQ0lJTGl0ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxp
emVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxuXHI9JiIpKTsKICAgICByZXR1cm4gc2lnbmF0dXJl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDll
YWVjZmQuLjQxOWE0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwCkBAIC02MTksNyArNjE5LDcgQEAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEhUTUxBbmNob3JF
bGVtZW50KiwgUmVmUHRyPEVsZW1lbnQ+PiBSb290RWRpdGFibGVFbGVtZW50TWEKIAogc3RhdGlj
IFJvb3RFZGl0YWJsZUVsZW1lbnRNYXAmIHJvb3RFZGl0YWJsZUVsZW1lbnRNYXAoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChSb290RWRpdGFibGVFbGVtZW50TWFwLCBt
YXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Um9vdEVkaXRhYmxlRWxlbWVudE1h
cD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0
dG9uRWxlbWVudC5jcHAKaW5kZXggMmU3M2RlZC4uZGY4ZTgzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTY1LDE1ICs2NSwxNSBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIEhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewog
ICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJt
aXQsICgic3VibWl0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
ICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VibWl0
KCJzdWJtaXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAg
ICAgIHJldHVybiBzdWJtaXQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBCVVRUT046IHsKLSAg
ICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIGJ1dHRvbiwgKCJidXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBidXR0b24oImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbjsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJFU0VU
OiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCByZXNldCwgKCJyZXNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNT
dHJpbmc+IHJlc2V0KCJyZXNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgICAgICAgICAgcmV0dXJuIHJlc2V0OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKaW5kZXggOTE2MmFmYy4uZDA4N2Ji
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0x
NDYsNyArMTQ2LDcgQEAgYm9vbCBIVE1MRmllbGRTZXRFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkg
Y29uc3QKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIGZpZWxkc2V0LCAoImZpZWxkc2V0IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IGZpZWxkc2V0KCJmaWVsZHNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBmaWVsZHNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggMDFmYTcwMC4uOTY2NzFmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC0yMyw2ICsy
Myw3IEBACiAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291
bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0
aWMgSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+JiBkaXNhYmxlZFN1YnRyZWVSb290cygp
CiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaENvdW50
ZWRTZXQ8Q29udGFpbmVyTm9kZSo+LCBub2RlcywgKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaENvdW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+PiBub2RlczsKICAgICAgICAg
cmV0dXJuIG5vZGVzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVt
ZW50LmNwcAppbmRleCBhYTA5MWZiLi44OTQ0YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxLZXlnZW5FbGVtZW50LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNTTEtleUdl
bmVyYXRvci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgcHJvdGVj
dGVkOgogICAgIEtleWdlblNlbGVjdEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAg
ICA6IEhUTUxTZWxlY3RFbGVtZW50KHNlbGVjdFRhZywgZG9jdW1lbnQsIDApCiAgICAgewotICAg
ICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwc2V1ZG9J
ZCwgKCItd2Via2l0LWtleWdlbi1zZWxlY3QiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBz
ZXVkb0lkKCItd2Via2l0LWtleWdlbi1zZWxlY3QiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICAgICAgc2V0UHNldWRvKHBzZXVkb0lkKTsKICAgICB9CiAKQEAgLTEx
Miw3ICsxMTMsNyBAQCBib29sIEhUTUxLZXlnZW5FbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3Jt
RGF0YUxpc3QmIGVuY29kZWRfdmFsdWVzLCBib29sKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhU
TUxLZXlnZW5FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGtleWdlbiwgKCJrZXln
ZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4ga2V5Z2VuKCJrZXlnZW4iLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4ga2V5Z2VuOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggYjU4MzIyMy4uMWM0OWVh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNjIsNyArNjIs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgTGlua0V2ZW50U2VuZGVy
JiBsaW5rTG9hZEV2ZW50U2VuZGVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoTGlua0V2ZW50U2VuZGVyLCBzaGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVz
KCkubG9hZEV2ZW50KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExpbmtFdmVudFNlbmRl
cj4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwogICAgIHJl
dHVybiBzaGFyZWRMb2FkRXZlbnRTZW5kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCmluZGV4IDgxNTE2ZmEuLjY4NGQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiB0eXBlZGVmIEhhc2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PEhUTUxN
ZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVtZW50U2V0TWFwOwogc3RhdGljIERvY3VtZW50RWxl
bWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1lbnRTZXRNYXAoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChEb2N1bWVudEVsZW1lbnRTZXRNYXAsIG1hcCwgKCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEb2N1bWVudEVsZW1lbnRTZXRNYXA+IG1hcDsKICAgICBy
ZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
CmluZGV4IGFiYTAwMWIuLmM0NTZlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuY3BwCkBAIC00MDQsOCArNDA0LDggQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6
cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVk
LCBhbGwgY2FsbGVycyBhcmUgYWxtb3N0IGNlcnRhaW5seSB3cm9uZy4KIHN0YXRpYyBib29sIGlz
UmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4s
IHRhZ0xpc3QsICgpKTsKLSAgICBpZiAodGFnTGlzdC5pc0VtcHR5KCkpIHsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4+IHRhZ0xpc3Q7CisgICAg
aWYgKHRhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8qIHRhZ3MgPSBIVE1M
TmFtZXM6OmdldEhUTUxUYWdzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRN
TE5hbWVzOjpIVE1MVGFnc0NvdW50OyBpKyspIHsKICAgICAgICAgICAgIGlmICgqdGFnc1tpXSA9
PSBiZ3NvdW5kVGFnCkBAIC00MjAsMTAgKzQyMCwxMCBAQCBzdGF0aWMgYm9vbCBpc1JlY29nbml6
ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiAgICAgICAgICAgICAgICAg
Ly8gYmVjYXVzZSB0aGF0IGNoYW5nZXMgaG93IHdlIHBhcnNlIGRvY3VtZW50cy4KICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRhZ0xpc3QuYWRk
KHRhZ3NbaV0tPmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgICAgICB0YWdMaXN0LmdldCgp
LmFkZCh0YWdzW2ldLT5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAgICB9CiAgICAgfQotICAg
IHJldHVybiB0YWdMaXN0LmNvbnRhaW5zKHRhZ05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAg
ICByZXR1cm4gdGFnTGlzdC5nZXQoKS5jb250YWlucyh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwo
KSk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAppbmRleCBlMGJkOGNm
Li44NjIyNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBIVE1MT3B0R3JvdXBFbGVtZW50Ojppc0ZvY3VzYWJs
ZSgpIGNvbnN0CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6Zm9y
bUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcHRncm91cCwgKCJvcHRncm91cCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiBvcHRncm91cCgib3B0Z3JvdXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gb3B0Z3JvdXA7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggMmY2YmE3Yi4uZWRkYTRmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJIVE1M
Rm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1NSw3IEBA
IFJlZjxIVE1MT3V0cHV0RWxlbWVudD4gSFRNTE91dHB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE91dHB1
dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgb3V0cHV0LCAoIm91dHB1dCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBvdXRwdXQoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBvdXRwdXQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggMDExNzVkOS4uNTdhNTMyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTMzNiw3ICsz
MzYsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3RyYXIoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4mKTsK
IAogc3RhdGljIFZlY3RvcjxSZXBsYWNlbWVudFBsdWdpbio+JiByZWdpc3RlcmVkUGx1Z2luUmVw
bGFjZW1lbnRzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9y
PFJlcGxhY2VtZW50UGx1Z2luKj4sIHJlZ2lzdGVyZWRSZXBsYWNlbWVudHMsICgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFJlcGxhY2VtZW50UGx1Z2luKj4+IHJlZ2lzdGVy
ZWRSZXBsYWNlbWVudHM7CiAgICAgc3RhdGljIGJvb2wgZW5naW5lc1F1ZXJpZWQgPSBmYWxzZTsK
ICAgICAKICAgICBpZiAoZW5naW5lc1F1ZXJpZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBkNjhhNTk5Li4wOWU3YWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTc0LDI5
ICs3NCwyOSBAQCBzdGF0aWMgY29uc3QgYXV0byByZW1vdmVTbmFwc2hvdFRpbWVyRGVsYXkgPSBz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHsgMTUwMCB9OwogCiBzdGF0aWMgY29uc3QgU3RyaW5n
IHRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJpbmcgbWltZVR5cGUpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKE1pbWVUeXBlVG9Mb2NhbGl6ZWRTdHJpbmdNYXAsIG1pbWVU
eXBlVG9MYWJlbFRpdGxlTWFwLCAoKSk7Ci0gICAgU3RyaW5nIHRpdGxlVGV4dCA9IG1pbWVUeXBl
VG9MYWJlbFRpdGxlTWFwLmdldChtaW1lVHlwZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PE1pbWVUeXBlVG9Mb2NhbGl6ZWRTdHJpbmdNYXA+IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwOwor
ICAgIFN0cmluZyB0aXRsZVRleHQgPSBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5nZXQo
bWltZVR5cGUpOwogICAgIGlmICghdGl0bGVUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHRpdGxlVGV4dDsKIAogICAgIHRpdGxlVGV4dCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnBs
dWdJblN0YXJ0TGFiZWxUaXRsZShtaW1lVHlwZSk7CiAgICAgaWYgKHRpdGxlVGV4dC5pc0VtcHR5
KCkpCiAgICAgICAgIHRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpOwot
ICAgIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLnNldChtaW1lVHlwZSwgdGl0bGVUZXh0KTsKKyAg
ICBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5zZXQobWltZVR5cGUsIHRpdGxlVGV4dCk7
CiAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIH07CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgc3VidGl0
bGVUZXh0KFBhZ2UqIHBhZ2UsIFN0cmluZyBtaW1lVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoTWltZVR5cGVUb0xvY2FsaXplZFN0cmluZ01hcCwgbWltZVR5cGVU
b0xhYmVsU3VidGl0bGVNYXAsICgpKTsKLSAgICBTdHJpbmcgc3VidGl0bGVUZXh0ID0gbWltZVR5
cGVUb0xhYmVsU3VidGl0bGVNYXAuZ2V0KG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8TWltZVR5cGVUb0xvY2FsaXplZFN0cmluZ01hcD4gbWltZVR5cGVUb0xhYmVsU3VidGl0
bGVNYXA7CisgICAgU3RyaW5nIHN1YnRpdGxlVGV4dCA9IG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxl
TWFwLmdldCgpLmdldChtaW1lVHlwZSk7CiAgICAgaWYgKCFzdWJ0aXRsZVRleHQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gc3VidGl0bGVUZXh0OwogCiAgICAgc3VidGl0bGVUZXh0ID0gcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBlKTsK
ICAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgc3VidGl0bGVUZXh0ID0g
c25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCk7Ci0gICAgbWltZVR5cGVUb0xhYmVsU3Vi
dGl0bGVNYXAuc2V0KG1pbWVUeXBlLCBzdWJ0aXRsZVRleHQpOworICAgIG1pbWVUeXBlVG9MYWJl
bFN1YnRpdGxlTWFwLmdldCgpLnNldChtaW1lVHlwZSwgc3VidGl0bGVUZXh0KTsKICAgICByZXR1
cm4gc3VidGl0bGVUZXh0OwogfTsKIApAQCAtNDA4LDExICs0MDgsMTEgQEAgdm9pZCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJv
b3QpCiAKIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVybGF5
KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0b3IsICgiLnNuYXBzaG90LW92ZXJsYXkiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gc2VsZWN0b3IoIi5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgU2hhZG93Um9vdCogc2hhZG93ID0gdXNl
ckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlmICghc2hhZG93KQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHNuYXBzaG90TGFiZWwgPSBzaGFkb3ctPnF1ZXJ5U2Vs
ZWN0b3Ioc2VsZWN0b3IsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIFJlZlB0cjxFbGVtZW50
PiBzbmFwc2hvdExhYmVsID0gc2hhZG93LT5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yLmdldCgpLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICByZXR1cm4gbm9kZSAmJiBzbmFwc2hvdExhYmVsICYm
IChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yoc25h
cHNob3RMYWJlbC5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCmluZGV4IDU3MzA0N2YuLmFlZGVkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2Ugc3R5bGVDaGFuZ2UpCiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
Zywgc2VsZWN0TXVsdGlwbGUsICgic2VsZWN0LW11bHRpcGxlIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIHNlbGVjdE9uZSwgKCJzZWxlY3Qtb25lIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IHNlbGVjdE11bHRpcGxlKCJzZWxlY3QtbXVsdGlwbGUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBzZWxlY3RPbmUoInNlbGVjdC1vbmUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbV9tdWx0aXBsZSA/IHNlbGVjdE11
bHRpcGxlIDogc2VsZWN0T25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmNwcAppbmRleCBhY2VkZWQ0Li41MWM2ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFN0eWxlRWxlbWVudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAogc3RhdGljIFN0eWxlRXZlbnRTZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVFdmVudFNlbmRlciwg
c2hhcmVkTG9hZEV2ZW50U2VuZGVyLCAoZXZlbnROYW1lcygpLmxvYWRFdmVudCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHlsZUV2ZW50U2VuZGVyPiBzaGFyZWRMb2FkRXZlbnRTZW5k
ZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7CiAgICAgcmV0dXJuIHNoYXJlZExvYWRFdmVudFNl
bmRlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
aW5kZXggNzg5NDM3Yy4uMmM4Y2U0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVt
ZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgSFRNTFRleHRBcmVhRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29u
c3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCB0ZXh0YXJlYSwgKCJ0ZXh0YXJlYSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0
ZXh0YXJlYSgidGV4dGFyZWEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gdGV4dGFyZWE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggZDdmMDczNy4uMDk2MzcyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKQEAgLTM3NSw5ICszNzUsOSBAQCBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNv
bXB1dGVTZWxlY3Rpb25FbmQoKSBjb25zdAogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBk
aXJlY3Rpb25TdHJpbmcoVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBu
b25lLCAoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9yd2Fy
ZCwgKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJhY2t3
YXJkLCAoImJhY2t3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBmb3J3YXJkKCJmb3J3YXJkIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gYmFja3dhcmQoImJhY2t3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2Ug
U2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUu
Y3BwCmluZGV4IDEzMTBjZTkuLjVjYmYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1
dFR5cGUuY3BwCkBAIC02NCwxMCArNjQsMTAgQEAgYm9vbCBJbWFnZUlucHV0VHlwZTo6YXBwZW5k
Rm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCkgY29uc3QKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgZG90WFN0cmluZywgKEFTQ0lJTGl0ZXJhbCgiLngiKSkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRvdFlTdHJpbmcsIChBU0NJSUxpdGVyYWwoIi55
IikpKTsKLSAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUgKyBkb3RYU3RyaW5nLCBtX2NsaWNr
TG9jYXRpb24ueCgpKTsKLSAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUgKyBkb3RZU3RyaW5n
LCBtX2NsaWNrTG9jYXRpb24ueSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiBkb3RYU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiLngiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gZG90WVN0cmluZyhBU0NJSUxpdGVyYWwoIi55IikpOworICAgIGVuY29kaW5n
LmFwcGVuZERhdGEobmFtZSArIGRvdFhTdHJpbmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi54KCkp
OworICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSArIGRvdFlTdHJpbmcuZ2V0KCksIG1fY2xp
Y2tMb2NhdGlvbi55KCkpOwogCiAgICAgaWYgKCFlbGVtZW50KCkudmFsdWUoKS5pc0VtcHR5KCkp
CiAgICAgICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSwgZWxlbWVudCgpLnZhbHVlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGVOYW1lcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcAppbmRleCBhYzA4OTZhLi40Mzg3NjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcApAQCAtMjIsNiArMjIsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBu
YW1lc3BhY2UgSW5wdXRUeXBlTmFtZXMgewpAQCAtMzEsMTM5ICszMywxMzkgQEAgbmFtZXNwYWNl
IElucHV0VHlwZU5hbWVzIHsKIAogY29uc3QgQXRvbWljU3RyaW5nJiBidXR0b24oKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiYnV0
dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIGNoZWNrYm94KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImNoZWNrYm94IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoImNoZWNrYm94IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgY29sb3IoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiY29s
b3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBkYXRlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBuYW1lLCAoImRhdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiZGF0
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1l
OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImRhdGV0aW1lIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImRhdGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZGF0ZXRpbWVsb2NhbCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRldGltZS1sb2NhbCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBuYW1lKCJkYXRldGltZS1sb2NhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGVtYWls
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBu
YW1lLCAoImVtYWlsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImVtYWlsIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgZmlsZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJmaWxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoImZpbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBy
ZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBoaWRkZW4oKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiaGlkZGVu
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImhpZGRlbiIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIGltYWdlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBuYW1lLCAoImltYWdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImlt
YWdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5h
bWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgbW9udGgoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgibW9udGgiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gbmFtZSgibW9udGgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBudW1i
ZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IG5hbWUsICgibnVtYmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoIm51bWJlciIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3N3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInBhc3N3b3JkIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IG5hbWUoInBhc3N3b3JkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgcmFk
aW8oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IG5hbWUsICgicmFkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgicmFkaW8iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiByYW5nZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJyYW5nZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBuYW1lKCJyYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHJlc2V0KCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInJl
c2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBuYW1lLCAoInNlYXJjaCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1l
KCJzZWFyY2giLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBzdWJtaXQoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgic3VibWl0Iiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInN1Ym1pdCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJp
bmcmIHRlbGVwaG9uZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgbmFtZSwgKCJ0ZWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGVs
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ0ZXh0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5hbWUoInRleHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiB0aW1lKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAo
InRpbWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGltZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIHVybCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgbmFtZSwgKCJ1cmwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidXJs
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgd2VlaygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ3ZWVrIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5hbWUoIndlZWsiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gbmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xs
ZXIuY3BwCmluZGV4IGRiYjAyYWIuLjQ3YTk1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
Q29udHJvbGxlci5jcHAKQEAgLTI5MCwxOSArMjkwLDE5IEBAIHZvaWQgTWVkaWFDb250cm9sbGVy
OjpzZXRNdXRlZChib29sIGZsYWcpCiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBsYXli
YWNrU3RhdGVXYWl0aW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCB3YWl0aW5nLCAoIndhaXRpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
d2FpdGluZygid2FpdGluZyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIHJldHVybiB3YWl0aW5nOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwbGF5
YmFja1N0YXRlUGxheWluZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgcGxheWluZywgKCJwbGF5aW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IHBsYXlpbmcoInBsYXlpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gcGxheWluZzsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGxh
eWJhY2tTdGF0ZUVuZGVkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBlbmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbmRl
ZCgiZW5kZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gZW5kZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXgg
NDcyOTg3Mi4uMDIwOTI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAK
QEAgLTkwLDcgKzkwLDcgQEAgRGVjaW1hbCBNb250aElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9y
U3RlcFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIE1vbnRoSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFu
Z2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24s
IHN0ZXBEZXNjcmlwdGlvbiwgKG1vbnRoRGVmYXVsdFN0ZXAsIG1vbnRoRGVmYXVsdFN0ZXBCYXNl
LCBtb250aFN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRC
ZUludGVnZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpT
dGVwRGVzY3JpcHRpb24+IHN0ZXBEZXNjcmlwdGlvbihtb250aERlZmF1bHRTdGVwLCBtb250aERl
ZmF1bHRTdGVwQmFzZSwgbW9udGhTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3Rl
cFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFs
Ojpmcm9tRG91YmxlKG1vbnRoRGVmYXVsdFN0ZXBCYXNlKSk7CiAgICAgY29uc3QgRGVjaW1hbCBt
aW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRy
KSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11bU1vbnRoKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAppbmRleCBmZDM1YmI4Li5mNjYw
NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC0xNTIsNyAr
MTUyLDcgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiAKIFN0
ZXBSYW5nZSBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAo
bnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxl
RmFjdG9yKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6U3Rl
cERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRpb24obnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRl
ZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKTsKICAgICBjb25zdCBEZWNpbWFs
IHN0ZXBCYXNlID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3RlcEJhc2UpOwogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVtYmVyIGlu
cHV0IHR5cGUuCiAgICAgY29uc3QgRGVjaW1hbCBmbG9hdE1heCA9IERlY2ltYWw6OmZyb21Eb3Vi
bGUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9S
YW5nZUlucHV0VHlwZS5jcHAKaW5kZXggMjRmN2JiYy4uZTBkNzcwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBib29sIFJhbmdlSW5w
dXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QKIAogU3RlcFJhbmdlIFJhbmdlSW5wdXRU
eXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29u
c3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdl
OjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKHJhbmdlRGVmYXVsdFN0ZXAsIHJh
bmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3RvcikpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERlc2Ny
aXB0aW9uKHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBT
Y2FsZUZhY3Rvcik7CiAKICAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVy
KGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCByYW5nZURlZmF1bHRNaW5pbXVt
KTsKICAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBlbnN1cmVNYXhpbXVtKHBhcnNlVG9OdW1i
ZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIHJhbmdlRGVmYXVsdE1heGlt
dW0pLCBtaW5pbXVtLCByYW5nZURlZmF1bHRNYXhpbXVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdl
LmNwcAppbmRleCBjNDc3MThhLi5lYmYzMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1N0ZXBSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3Bw
CkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRN
TFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjUsMTMg
KzY2LDEzIEBAIFN0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IERlY2ltYWwmIHN0ZXBCYXNlLCBj
b25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25zdCBEZWNpCiBEZWNpbWFsIFN0ZXBSYW5nZTo6YWNj
ZXB0YWJsZUVycm9yKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBEQkxf
TUFOVF9ESUcgaW5zdGVhZCBvZiBGTFRfTUFOVF9ESUcgcmVnYXJkaW5nIHRvIEhUTUw1IHNwZWNp
ZmljYXRpb24uCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IERlY2lt
YWwsIHR3b1Bvd2VyT2ZGbG9hdE1hbnRpc3NhQml0cywgKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBV
SU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgRGVjaW1hbD4gdHdvUG93ZXJPZkZsb2F0TWFudGlzc2FCaXRzKERlY2ltYWw6OlBvc2l0
aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcpOwogICAgIHJldHVybiBtX3N0ZXBE
ZXNjcmlwdGlvbi5zdGVwVmFsdWVTaG91bGRCZSA9PSBTdGVwVmFsdWVTaG91bGRCZVJlYWwgPyBt
X3N0ZXAgLyB0d29Qb3dlck9mRmxvYXRNYW50aXNzYUJpdHMgOiBEZWNpbWFsKDApOwogfQogCiBE
ZWNpbWFsIFN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAoY29uc3QgRGVjaW1hbCYgY3VycmVu
dFZhbHVlLCBjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdGVuUG93ZXJPZjIxLCAoRGVjaW1h
bDo6UG9zaXRpdmUsIDIxLCAxKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IERl
Y2ltYWw+IHRlblBvd2VyT2YyMShEZWNpbWFsOjpQb3NpdGl2ZSwgMjEsIDEpOwogICAgIGlmIChu
ZXdWYWx1ZSA+PSB0ZW5Qb3dlck9mMjEpCiAgICAgICAgIHJldHVybiBuZXdWYWx1ZTsKIApAQCAt
MTUwLDcgKzE1MSw3IEBAIGJvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2goY29uc3QgRGVjaW1h
bCYgdmFsdWVGb3JDaGVjaykgY29uc3QKICAgICAvLyBEZWNpbWFsJ3MgZnJhY3Rpb25hbCBwYXJ0
IHNpemUgaXMgREJMX01BTl9ESUctYml0LiBJZiB0aGUgY3VycmVudCB2YWx1ZQogICAgIC8vIGlz
IGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJMX01BTlRfRElHLCB0aGUgZm9sbG93aW5nIGNvbXB1dGF0
aW9uIGZvcgogICAgIC8vIHJlbWFpbmRlciBtYWtlcyBubyBzZW5zZS4KLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdHdvUG93ZXJPZkRvdWJsZU1hbnRp
c3NhQml0cywgKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBEQkxfTUFOVF9E
SUcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgRGVjaW1hbD4gdHdvUG93ZXJP
ZkRvdWJsZU1hbnRpc3NhQml0cyhEZWNpbWFsOjpQb3NpdGl2ZSwgMCwgVUlOVDY0X0MoMSkgPDwg
REJMX01BTlRfRElHKTsKICAgICBpZiAodmFsdWUgLyB0d29Qb3dlck9mRG91YmxlTWFudGlzc2FC
aXRzID4gbV9zdGVwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gVGhlIGNvbXB1dGF0
aW9uIGZvbGxvd3MgSFRNTDUgNC4xMC43LjIuMTAgYFRoZSBzdGVwIGF0dHJpYnV0ZScgOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKaW5kZXggYzA5MDQxOS4uODczYmM2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIERlY2lt
YWwgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3RlcFJh
bmdlIFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3Rl
cEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAodGltZURl
ZmF1bHRTdGVwLCB0aW1lRGVmYXVsdFN0ZXBCYXNlLCB0aW1lU3RlcFNjYWxlRmFjdG9yLCBTdGVw
UmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0
aW9uKHRpbWVEZWZhdWx0U3RlcCwgdGltZURlZmF1bHRTdGVwQmFzZSwgdGltZVN0ZXBTY2FsZUZh
Y3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpOwogCiAgICAg
Y29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRB
dHRyaWJ1dGUobWluQXR0ciksIDApOwogICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNl
VG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2ltYWw6OmZy
b21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1UaW1lKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1dlZWtJbnB1dFR5cGUuY3BwCmluZGV4IDg0Y2E5ODguLjE4YzA0MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9XZWVrSW5wdXRUeXBlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBEYXRlQ29tcG9uZW50czo6
VHlwZSBXZWVrSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0CiAKIFN0ZXBSYW5nZSBXZWVrSW5w
dXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykg
Y29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJh
bmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKHdlZWtEZWZhdWx0U3RlcCwg
d2Vla0RlZmF1bHRTdGVwQmFzZSwgd2Vla1N0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJz
ZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0ZXBEZXNjcmlwdGlvbih3ZWVrRGVm
YXVsdFN0ZXAsIHdlZWtEZWZhdWx0U3RlcEJhc2UsIHdlZWtTdGVwU2NhbGVGYWN0b3IsIFN0ZXBS
YW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0IERlY2lt
YWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1p
bkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlKTsKICAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0g
PSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNp
bWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjptaW5pbXVtV2VlaygpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAppbmRleCA2NTQyN2ExLi5hNjAzMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTU4LDYgKzU4
LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgVVNFKENHKQpAQCAtMTk1OSw3ICsx
OTYwLDcgQEAgUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp3ZWJr
aXRHZXRJbWFnZURhdGFIRChmbG9hdCBzeCwgZmxvYXQKIFJlZlB0cjxJbWFnZURhdGE+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRhKEltYWdlQnVmZmVyOjpDb29yZGluYXRl
U3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0sIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZs
b2F0IHNoLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAoIWNhbnZhcygpLT5v
cmlnaW5DbGVhbigpKSB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZ2V0IGltYWdl
IGRhdGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0aGUgY2FudmFzIGhhcyBiZWVuIHRhaW50ZWQgYnkg
Y3Jvc3Mtb3JpZ2luIGRhdGEuIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZ2V0IGltYWdlIGRh
dGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0aGUgY2FudmFzIGhhcyBiZWVuIHRhaW50ZWQgYnkgY3Jv
c3Mtb3JpZ2luIGRhdGEuIikpOwogICAgICAgICBjYW52YXMoKS0+ZG9jdW1lbnQoKS5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwg
Y29uc29sZU1lc3NhZ2UpOwogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmlu
ZGV4IGQ5YWUxMmEuLmExOTFmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3IuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0yNzMsNyArMjc0LDcgQEAgdm9pZCBYU1NBdWRpdG9yOjppbml0KERvY3VtZW50KiBkb2N1bWVu
dCwgWFNTQXVkaXRvckRlbGVnYXRlKiBhdWRpdG9yRGVsZWdhdGUpCiAKICAgICBTdHJpbmcgaHR0
cEJvZHlBc1N0cmluZzsKICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0g
ZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpIHsKLSAgICAgICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgWFNTUHJvdGVjdGlvbkhlYWRl
ciwgKEFTQ0lJTGl0ZXJhbCgiWC1YU1MtUHJvdGVjdGlvbiIpKSk7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IFhTU1Byb3RlY3Rpb25IZWFkZXIoQVNDSUlMaXRlcmFsKCJY
LVhTUy1Qcm90ZWN0aW9uIikpOwogICAgICAgICBTdHJpbmcgaGVhZGVyVmFsdWUgPSBkb2N1bWVu
dExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoWFNTUHJvdGVjdGlvbkhlYWRlcik7
CiAgICAgICAgIFN0cmluZyBlcnJvckRldGFpbHM7CiAgICAgICAgIHVuc2lnbmVkIGVycm9yUG9z
aXRpb24gPSAwOwpAQCAtNTIzLDcgKzUyNCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQnV0
dG9uVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1
ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5qZWN0ZWQoY29uc3QgRmlsdGVyVG9r
ZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHNhZmVKYXZhU2NyaXB0VVJMLCAoQVNDSUlMaXRlcmFsKCJqYXZhc2NyaXB0OnZv
aWQoMCkiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNhZmVKYXZhU2Ny
aXB0VVJMKEFTQ0lJTGl0ZXJhbCgiamF2YXNjcmlwdDp2b2lkKDApIikpOwogCiAgICAgYm9vbCBk
aWRCbG9ja1NjcmlwdCA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVz
dC50b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyArK2kpIHsKQEAgLTUzOCw3ICs1MzksNyBAQCBi
b29sIFhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5qZWN0ZWQoY29uc3Qg
RmlsdGVyVG9rZW5SZXF1ZXN0JiByZQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHJl
cXVlc3QudG9rZW4uZXJhc2VWYWx1ZU9mQXR0cmlidXRlKGkpOwogICAgICAgICBpZiAodmFsdWVD
b250YWluc0phdmFTY3JpcHRVUkwpCi0gICAgICAgICAgICByZXF1ZXN0LnRva2VuLmFwcGVuZFRv
QXR0cmlidXRlVmFsdWUoaSwgc2FmZUphdmFTY3JpcHRVUkwpOworICAgICAgICAgICAgcmVxdWVz
dC50b2tlbi5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGksIHNhZmVKYXZhU2NyaXB0VVJMLmdldCgp
KTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgPSB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZGlk
QmxvY2tTY3JpcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKaW5kZXggMDc5YmMwZi4uZjdhM2M3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtNzIx
LDcgKzcyMSw3IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVuCiB2b2lkIE1lZGlhQ29udHJvbENs
b3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRlRGlzcGxheSgpCiB7CiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIHNlbGVjdGVkQ2xhc3NWYWx1ZSwgKCJzZWxlY3RlZCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBzZWxlY3RlZENsYXNzVmFsdWUoInNlbGVjdGVkIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAoIW1lZGlhQ29udHJvbGxlcigpLT5oYXNDbG9z
ZWRDYXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC0xMDM4LDcgKzEwMzgsNyBAQCBSZWY8
TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1l
UmVtYWluaW5nRGlzcGxheUVsZQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRNZWRp
YUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdl
YmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IGlkKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3Bs
YXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gaWQ7
CiB9CiAKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIFJlZjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURp
c3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGdldE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxh
eUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50
LXRpbWUtZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpZCgiLXdlYmtpdC1tZWRpYS1j
b250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBpZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKaW5kZXggMTY0NWI4Mi4uODA4MmNlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTWV0ZXJTaGFkb3dFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIE1ldGVySW5uZXJFbGVtZW50OjpNZXRl
cklubmVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBNZXRlclNoYWRvd0VsZW1l
bnQoZG9jdW1lbnQpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgcHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1pbm5lci1lbGVtZW50IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LW1ldGVyLWlubmVyLWVsZW1lbnQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzZXRQc2V1ZG8ocHNldWRv
SWQpOwogfQogCkBAIC04MCw5ICs4MCw5IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZXRl
cklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsCiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgTWV0ZXJWYWx1ZUVsZW1lbnQ6OnZhbHVlUHNldWRvSWQoKSBjb25z
dAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9w
dGltdW1Qc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLW9wdGltdW0tdmFsdWUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc3Vib3B0aW11bVBzZXVkb0lkLCAoIi13ZWJraXQtbWV0ZXIt
c3Vib3B0aW11bS12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBldmVuTGVz
c0dvb2RQc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLWV2ZW4tbGVzcy1nb29kLXZhbHVlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IG9wdGltdW1Qc2V1ZG9JZCgiLXdlYmtpdC1tZXRlci1vcHRpbXVt
LXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc3Vib3B0aW11bVBzZXVkb0lkKCItd2Via2l0
LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBldmVuTGVzc0dv
b2RQc2V1ZG9JZCgiLXdlYmtpdC1tZXRlci1ldmVuLWxlc3MtZ29vZC12YWx1ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgSFRNTE1ldGVyRWxlbWVudCogbWV0
ZXIgPSBtZXRlckVsZW1lbnQoKTsKICAgICBpZiAoIW1ldGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAppbmRleCA0ZjliMzA0Li43NzA2YjFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQu
aApAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQogI2luY2x1ZGUg
IkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NSw3ICs3
Niw3IEBAIHByaXZhdGU6CiAgICAgTWV0ZXJCYXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICAgICAgOiBNZXRlclNoYWRvd0VsZW1lbnQoZG9jdW1lbnQpCiAgICAgewotICAgICAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwc2V1ZG9JZCwgKCIt
d2Via2l0LW1ldGVyLWJhciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcHNldWRvSWQoIi13
ZWJraXQtbWV0ZXItYmFyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgICAgIHNldFBzZXVkbyhwc2V1ZG9JZCk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IGZiNTgzMzYuLjBk
ODkxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcApAQCAtNTc2LDEzICs1NzYsMTMgQEAgSFRNTElucHV0RWxlbWVudCogU2xpZGVy
VGh1bWJFbGVtZW50Ojpob3N0SW5wdXQoKSBjb25zdAogCiBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBzbGlkZXJUaHVtYlNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzbGlkZXJUaHVtYiwgKCItd2Via2l0
LXNsaWRlci10aHVtYiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzbGlkZXJUaHVtYigi
LXdlYmtpdC1zbGlkZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gc2xpZGVyVGh1bWI7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIG1lZGlhU2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWVkaWFTbGlkZXJUaHVtYiwg
KCItd2Via2l0LW1lZGlhLXNsaWRlci10aHVtYiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBtZWRpYVNsaWRlclRodW1iKCItd2Via2l0LW1lZGlhLXNsaWRlci10aHVtYiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBtZWRpYVNsaWRlclRodW1i
OwogfQogCkBAIC02NDIsOCArNjQyLDggQEAgY29uc3QgQXRvbWljU3RyaW5nJiBTbGlkZXJDb250
YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiAgICAgLy8gdGhhdCB2YWx1ZSBk
ZXBlbmRzIG9uIHRoZSBzdHlsZSwgd2hpY2ggbWVhbnMgdGhlIHN0eWxlIG5lZWRzIHRvIGJlIGNv
bXB1dGVkIHR3aWNlIHRvIGdldAogICAgIC8vIGEgY29ycmVjdCB2YWx1ZTogb25jZSB0byBnZXQg
dGhlIElucHV0J3MgYXBwZWFyYW5jZSwgdGhlbiBhIHNlY29uZCB0aW1lIHRvIHN0eWxlIHRoZSBz
aGFkb3cgdHJlZSBjb3JyZWN0bHkuCiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBtZWRpYVNsaWRlckNvbnRhaW5lciwgKCItd2Via2l0LW1l
ZGlhLXNsaWRlci1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
Zywgc2xpZGVyQ29udGFpbmVyLCAoIi13ZWJraXQtc2xpZGVyLWNvbnRhaW5lciIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBtZWRpYVNsaWRlckNvbnRhaW5lcigiLXdlYmtpdC1tZWRpYS1z
bGlkZXItY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc2xpZGVyQ29udGFp
bmVyKCItd2Via2l0LXNsaWRlci1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKIAogICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4oKnNoYWRvd0hvc3Qo
KSkpCiAgICAgICAgIHJldHVybiBzbGlkZXJDb250YWluZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9BdWRpb1RyYWNrLmNwcAppbmRleCA4NzMyOTI1Li5hNDJlMTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTM4LDQyICszOCw0MyBAQAogI2luY2x1
ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJIVE1M
TWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRlcm5h
dGl2ZUtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZlLCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRlc2NyaXB0aW9u
LCAoImRlc2NyaXB0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGRlc2NyaXB0aW9uKCJkZXNj
cmlwdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBkZXNjcmlwdGlvbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjptYWlu
S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgbWFpbiwgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG1haW4oIm1h
aW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbWFp
bjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIG1haW5EZXNjLCAoIm1haW4tZGVzYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBtYWluRGVz
YygibWFpbi1kZXNjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIG1haW5EZXNjOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OnRy
YW5zbGF0aW9uS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgdHJhbnNsYXRpb24sICgidHJhbnNsYXRpb24iLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gdHJhbnNsYXRpb24oInRyYW5zbGF0aW9uIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHRyYW5zbGF0aW9uOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50
YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gY29tbWVudGFyeSgiY29t
bWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBjb21tZW50YXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAK
aW5kZXggMGQ5YTJiNi4uNzI5ZjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmNwcApAQCAtNDksNTUgKzQ5LDU1IEBAIHN0YXRpYyBjb25zdCBpbnQgaW52YWxpZFRyYWNr
SW5kZXggPSAtMTsKIAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OnN1YnRpdGxlc0tl
eXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gc3VidGl0bGVzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJjYXB0aW9ucyIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjYXB0aW9ucygiY2FwdGlvbnMiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY2FwdGlvbnM7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpkZXNjcmlwdGlvbnNLZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZXNj
cmlwdGlvbnMsICgiZGVzY3JpcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRl
c2NyaXB0aW9ucygiZGVzY3JpcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uczsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBUZXh0VHJhY2s6OmNoYXB0ZXJzS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2hhcHRlcnMsICgiY2hhcHRlcnMiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2hhcHRlcnMoImNoYXB0ZXJzIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNoYXB0ZXJzOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6bWV0YWRhdGFLZXl3b3JkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtZXRhZGF0
YSwgKCJtZXRhZGF0YSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBtZXRhZGF0YSgibWV0
YWRhdGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4g
bWV0YWRhdGE7CiB9CiAgICAgCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6Zm9yY2Vk
S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgZm9yY2VkLCAoImZvcmNlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBmb3JjZWQoImZvcmNlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIHJldHVybiBmb3JjZWQ7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpk
aXNhYmxlZEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIG9wZW4sICgiZGlzYWJsZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gb3BlbigiZGlzYWJsZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gb3BlbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJh
Y2s6OmhpZGRlbktleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGNsb3NlZCwgKCJoaWRkZW4iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gY2xvc2VkKCJoaWRkZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gY2xvc2VkOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRl
eHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGVuZGVkLCAoInNob3dpbmciLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gZW5kZWQoInNob3dpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IDY0ZTZmZDIuLjdlNTkyM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3
dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTEs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjdWVTaGFkb3dQ
c2V1ZG9JZCgpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgQXRvbWljU3RyaW5nLCBjdWUsICgiY3VlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBjdWUoImN1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgICAgICByZXR1cm4gY3VlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUu
Y3BwCmluZGV4IDdhYzg2NjEuLjAyMzBmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1
ZS5jcHAKQEAgLTcyLDMxICs3MiwzMSBAQCBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RI
KGRpc3BsYXlBbGlnbm1lbnRNYXApID09IFZUVEN1ZTo6TnVtYmVyT2ZBbGlnbm1lbgogCiBzdGF0
aWMgY29uc3QgU3RyaW5nJiBzdGFydEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0YXJ0LCAoQVNDSUlMaXRlcmFsKCJzdGFydCIp
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc3RhcnQoQVNDSUlM
aXRlcmFsKCJzdGFydCIpKTsKICAgICByZXR1cm4gc3RhcnQ7CiB9CiAKIHN0YXRpYyBjb25zdCBT
dHJpbmcmIG1pZGRsZUtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIG1pZGRsZSwgKEFTQ0lJTGl0ZXJhbCgibWlkZGxlIikpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBtaWRkbGUoQVNDSUlMaXRlcmFs
KCJtaWRkbGUiKSk7CiAgICAgcmV0dXJuIG1pZGRsZTsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmlu
ZyYgZW5kS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgZW5kLCAoQVNDSUlMaXRlcmFsKCJlbmQiKSkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGVuZChBU0NJSUxpdGVyYWwoImVuZCIpKTsKICAgICBy
ZXR1cm4gZW5kOwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiBsZWZ0S2V5d29yZCgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbGVmdCwgKCJs
ZWZ0IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGxlZnQoImxl
ZnQiKTsKICAgICByZXR1cm4gbGVmdDsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyYgcmlnaHRL
ZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCByaWdodCwgKCJyaWdodCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiByaWdodCgicmlnaHQiKTsKICAgICByZXR1cm4gcmlnaHQ7CiB9CiAKQEAgLTEwNywx
MyArMTA3LDEzIEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGhvcml6b250YWxLZXl3b3JkKCkKIAog
c3RhdGljIGNvbnN0IFN0cmluZyYgdmVydGljYWxHcm93aW5nTGVmdEtleXdvcmQoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHZlcnRpY2Fscmws
IChBU0NJSUxpdGVyYWwoInJsIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiB2ZXJ0aWNhbHJsKEFTQ0lJTGl0ZXJhbCgicmwiKSk7CiAgICAgcmV0dXJuIHZlcnRp
Y2Fscmw7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHZlcnRpY2FsR3Jvd2luZ1JpZ2h0S2V5
d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
ZywgdmVydGljYWxsciwgKEFTQ0lJTGl0ZXJhbCgibHIiKSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBTdHJpbmc+IHZlcnRpY2FsbHIoQVNDSUlMaXRlcmFsKCJsciIpKTsKICAg
ICByZXR1cm4gdmVydGljYWxscjsKIH0KIApAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgVlRUQ3Vl
Qm94OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIFZUVEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHRy
YWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkLCAoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1k
aXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHRyYWNrRGlzcGxheUJveFNoYWRv
d1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiB0cmFja0Rpc3BsYXlCb3hTaGFk
b3dQc2V1ZG9JZDsKIH0KIApAQCAtMjM4LDcgKzIzOCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVlRUQ3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVk
b0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkLCAoIi13ZWJraXQtbWVkaWEtdGV4dC10
cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGN1ZUJh
Y2tkcm9wU2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5LWJh
Y2tkcm9wIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQ7CiB9CiAKQEAgLTU5Nyw3ICs1OTcsNyBAQCBzdGF0
aWMgYm9vbCBpc0N1ZVBhcmFncmFwaFNlcGFyYXRvcihVQ2hhciBjaGFyYWN0ZXIpCiAKIHZvaWQg
VlRUQ3VlOjpkZXRlcm1pbmVUZXh0RGlyZWN0aW9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBydFRhZywgKEFTQ0lJTGl0ZXJhbCgicnQiKSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHJ0VGFnKEFTQ0lJTGl0
ZXJhbCgicnQiKSk7CiAgICAgY3JlYXRlV2ViVlRUTm9kZVRyZWUoKTsKICAgICBpZiAoIW1fd2Vi
VlRUTm9kZVRyZWUpCiAgICAgICAgIHJldHVybjsKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFZU
VEN1ZTo6Y2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKQogICAgIAogdm9pZCBWVFRDdWU6Om1h
cmtGdXR1cmVBbmRQYXN0Tm9kZXMoQ29udGFpbmVyTm9kZSogcm9vdCwgY29uc3QgTWVkaWFUaW1l
JiBwcmV2aW91c1RpbWVzdGFtcCwgY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdGltZXN0YW1wVGFn
LCAoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBTdHJpbmc+IHRpbWVzdGFtcFRhZyhBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpKTsK
ICAgICAKICAgICBib29sIGlzUGFzdE5vZGUgPSB0cnVlOwogICAgIE1lZGlhVGltZSBjdXJyZW50
VGltZXN0YW1wID0gcHJldmlvdXNUaW1lc3RhbXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZU
VFJlZ2lvbi5jcHAKaW5kZXggODU3OTg2OC4uOTQxMWY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgVlRUUmVnaW9uOjpz
ZXRWaWV3cG9ydEFuY2hvclkoZG91YmxlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIAogY29u
c3QgQXRvbWljU3RyaW5nIFZUVFJlZ2lvbjo6c2Nyb2xsKCkgY29uc3QKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB1cFNjcm9sbFZhbHVl
S2V5d29yZCwgKCJ1cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB1cFNjcm9sbFZhbHVl
S2V5d29yZCgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAg
IGlmIChtX3Njcm9sbCkKICAgICAgICAgcmV0dXJuIHVwU2Nyb2xsVmFsdWVLZXl3b3JkOwpAQCAt
MTk4LDcgKzE5OCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyBWVFRSZWdpb246OnNjcm9sbCgpIGNv
bnN0CiAKIHZvaWQgVlRUUmVnaW9uOjpzZXRTY3JvbGwoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgdXBTY3JvbGxWYWx1ZUtleXdvcmQsICgidXAiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdXBTY3JvbGxWYWx1ZUtleXdvcmQoInVwIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAodmFsdWUgIT0gZW1wdHlT
dHJpbmcoKSAmJiB2YWx1ZSAhPSB1cFNjcm9sbFZhbHVlS2V5d29yZCkgewogICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CkBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIGlubGluZSBib29sIHBhcnNl
ZEVudGlyZVJ1bihjb25zdCBWVFRTY2FubmVyJiBpbnB1dCwgY29uc3QgVlRUU2Nhbm5lcjo6UnUK
IAogdm9pZCBWVFRSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVlKFJlZ2lvblNldHRpbmcgc2V0dGlu
ZywgVlRUU2Nhbm5lciYgaW5wdXQpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2Nyb2xsVXBWYWx1ZUtleXdvcmQsICgidXAiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc2Nyb2xsVXBWYWx1ZUtleXdvcmQoInVwIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBWVFRTY2FubmVyOjpSdW4gdmFs
dWVSdW4gPSBpbnB1dC5jb2xsZWN0VW50aWw8aXNIVE1MU3BhY2U8VUNoYXI+PigpOwogCkBAIC0z
MTIsNyArMzEyLDcgQEAgdm9pZCBWVFRSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVlKFJlZ2lvblNl
dHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIFNjcm9sbDoKLSAgICAgICAgaWYgKGlucHV0LnNjYW5SdW4odmFsdWVSdW4sIHNj
cm9sbFVwVmFsdWVLZXl3b3JkKSkKKyAgICAgICAgaWYgKGlucHV0LnNjYW5SdW4odmFsdWVSdW4s
IHNjcm9sbFVwVmFsdWVLZXl3b3JkLmdldCgpKSkKICAgICAgICAgICAgIG1fc2Nyb2xsID0gdHJ1
ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HKE1lZGlhLCAiVlRUUmVnaW9uOjpwYXJz
ZVNldHRpbmdWYWx1ZSwgaW52YWxpZCBTY3JvbGwiKTsKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lk
IFZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUoUmVnaW9uU2V0dGluZyBzZXR0aW5nLCBWVFRT
Y2FubmVyJiBpbnB1dCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBWVFRSZWdpb246OnRleHRUcmFj
a0N1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNj
cm9sbGluZ0NsYXNzLCAoInNjcm9sbGluZyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0
cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzKCJzY3JvbGxpbmciLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIHJldHVybiB0cmFja1JlZ2lvbkN1
ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFjay5jcHAKaW5kZXggOTc0ZTQ5Ny4uNzM0MDkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBAIC00NywzNyArNDcsMzcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29y
ZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4gYWx0ZXJuYXRpdmUoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGFsdGVybmF0aXZlOwogfQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlvbnMsICgiY2FwdGlv
bnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2FwdGlvbnMoImNhcHRpb25zIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNhcHRpb25zOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0
aW9ucywgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNhcHRpb25zKCJtYWlu
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNhcHRp
b25zOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBzaWduLCAoInNpZ24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc2lnbigic2lnbiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzaWduOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3Vi
dGl0bGVzKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gc3VidGl0bGVzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJh
Y2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAppbmRleCBhM2Mw
MzY2Li4xZjYxMGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBj
b25zdCBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFnTmFtZShXZWJWVFROb2RlVHlwZSBub2Rl
VHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFt
ZSwgY1RhZywgKG51bGxBdG9tLCAiYyIsIG51bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZUYWcsIChudWxsQXRvbSwgInYiLCBudWxs
QXRvbSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1l
LCBsYW5nVGFnLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20pKTsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgYlRhZywgKG51bGxBdG9tLCAiYiIs
IG51bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmll
ZE5hbWUsIHVUYWcsIChudWxsQXRvbSwgInUiLCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBpVGFnLCAobnVsbEF0b20sICJpIiwg
bnVsbEF0b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVk
TmFtZSwgcnVieVRhZywgKG51bGxBdG9tLCAicnVieSIsIG51bGxBdG9tKSk7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHJ0VGFnLCAobnVsbEF0b20s
ICJydCIsIG51bGxBdG9tKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGNUYWcobnVsbEF0b20sICJjIiwgbnVsbEF0b20pOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxRdWFsaWZpZWROYW1lPiB2VGFnKG51bGxBdG9tLCAidiIsIG51bGxBdG9tKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbGFuZ1RhZyhudWxsQXRvbSwgImxh
bmciLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+
IGJUYWcobnVsbEF0b20sICJiIiwgbnVsbEF0b20pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxBdG9tLCAidSIsIG51bGxBdG9tKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gaVRhZyhudWxsQXRvbSwgImkiLCBudWxs
QXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHJ1YnlUYWco
bnVsbEF0b20sICJydWJ5IiwgbnVsbEF0b20pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxR
dWFsaWZpZWROYW1lPiBydFRhZyhudWxsQXRvbSwgInJ0IiwgbnVsbEF0b20pOwogICAgIHN3aXRj
aCAobm9kZVR5cGUpIHsKICAgICBjYXNlIFdlYlZUVE5vZGVUeXBlQ2xhc3M6CiAgICAgICAgIHJl
dHVybiBjVGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAppbmRl
eCA4OWQzZDJjLi41ZWZkYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVs
ZW1lbnQuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsMTMgKzYzLDEzIEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUF0dHJpYnV0ZU5hbWUoKQogICAgIHsK
LSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZv
aWNlQXR0ciwgKG51bGxBdG9tLCAidm9pY2UiLCBudWxsQXRvbSkpOworICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9tLCAidm9pY2Ui
LCBudWxsQXRvbSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7CiAgICAgfQogICAgIAogICAg
IHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0cmlidXRlTmFtZSgpCiAgICAgewot
ICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgdm9p
Y2VBdHRyLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20pKTsKKyAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZvaWNlQXR0cihudWxsQXRvbSwgImxhbmciLCBu
dWxsQXRvbSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMTkyMjAxMC4uOWViMTU5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMjYxLDcg
KzI2MSw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpoYXNSZXF1aXJlZEZpbGVJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgbGluZSkKIHZvaWQgV2ViVlRUUGFyc2VyOjpjb2xsZWN0TWV0YWRhdGFIZWFk
ZXIoY29uc3QgU3RyaW5nJiBsaW5lKQogewogICAgIC8vIFdlYlZUVCBoZWFkZXIgcGFyc2luZyAo
V2ViVlRUIHBhcnNlciBhbGdvcml0aG0gc3RlcCAxMikKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCByZWdpb25IZWFkZXJOYW1lLCAoIlJlZ2lv
biIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiByZWdpb25IZWFkZXJOYW1lKCJSZWdpb24i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIC8vIFN0ZXAgMTIu
NCBJZiBsaW5lIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgIjoiIChBIFUrMDAzQSBDT0xPTiksIHRo
ZW4gc2V0IG1ldGFkYXRhJ3MKICAgICAvLyBuYW1lIHRvIHRoZSBzdWJzdHJpbmcgb2YgbGluZSBi
ZWZvcmUgdGhlIGZpcnN0ICI6IiBjaGFyYWN0ZXIgYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAxMWU1MjQ5Li5lOWIzMmFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTc5
LDEwICs3OSwxMCBAQCBlbnVtIEZvcmNlUHNldWRvQ2xhc3NGbGFncyB7CiAKIHN0YXRpYyB1bnNp
Z25lZCBjb21wdXRlUHNldWRvQ2xhc3NNYXNrKGNvbnN0IEluc3BlY3RvckFycmF5JiBwc2V1ZG9D
bGFzc0FycmF5KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGFjdGl2ZSwgKEFTQ0lJTGl0ZXJhbCgiYWN0aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBob3ZlciwgKEFTQ0lJTGl0ZXJhbCgiaG92ZXIiKSkpOwot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZvY3VzLCAoQVNDSUlM
aXRlcmFsKCJmb2N1cyIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgdmlzaXRlZCwgKEFTQ0lJTGl0ZXJhbCgidmlzaXRlZCIpKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gYWN0aXZlKEFTQ0lJTGl0ZXJhbCgiYWN0aXZlIikpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGhvdmVyKEFTQ0lJTGl0ZXJhbCgiaG92ZXIi
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZm9jdXMoQVNDSUlMaXRlcmFs
KCJmb2N1cyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2aXNpdGVkKEFT
Q0lJTGl0ZXJhbCgidmlzaXRlZCIpKTsKICAgICBpZiAoIXBzZXVkb0NsYXNzQXJyYXkubGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiBQc2V1ZG9DbGFzc05vbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggNWNlOGMyNi4uZDY2MDIy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKQEAgLTIzMCw4ICsyMzAsOCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VD
b250ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lLAogLy9zdGF0aWMK
IFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIVFRQSGVhZGVyLCAoQVNDSUlMaXRlcmFsKCJTb3Vy
Y2VNYXAiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNv
dXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkLCAoQVNDSUlMaXRlcmFsKCJYLVNvdXJjZU1hcCIp
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc291cmNlTWFwSFRUUEhlYWRl
cihBU0NJSUxpdGVyYWwoIlNvdXJjZU1hcCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRlZChBU0NJSUxpdGVyYWwoIlgtU291
cmNlTWFwIikpOwogCiAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuY3BwCmluZGV4IDQxODMzMzAuLjQ3NjFlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTg4MCw3ICs4ODAsNyBAQCBzdGF0
aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IGJ1aWxkT2JqZWN0
Rm9yU2VsZWN0b3JIZWxwZXIoYwogCiBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+PiBzZWxlY3RvcnNGcm9t
U291cmNlKGNvbnN0IENTU1J1bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcm
IHNoZWV0VGV4dCwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QsIEVsZW1lbnQq
IGVsZW1lbnQpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEpTQzo6WWFy
cjo6UmVndWxhckV4cHJlc3Npb24sIGNvbW1lbnQsICgiL1xcKlteXSo/XFwqLyIsIFRleHRDYXNl
U2Vuc2l0aXZlLCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gY29tbWVudCgiL1xcKlte
XSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJsZWQp
OwogCiAgICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3JlYXRlKCk7CiAgICAgY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBmMWFkZjFkLi4yMDBl
YmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KICNpbmNs
dWRlIDxwcm9maWxlci9Qcm9maWxlLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKQEAgLTczLDggKzc0LDggQEAgdm9pZCBQ
YWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAKIFN0cmlu
ZyBQYWdlRGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYg
c2NyaXB0KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNv
dXJjZU1hcEhUVFBIZWFkZXIsIChBU0NJSUxpdGVyYWwoIlNvdXJjZU1hcCIpKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc291cmNlTWFwSFRUUEhlYWRlckRl
cHJlY2F0ZWQsIChBU0NJSUxpdGVyYWwoIlgtU291cmNlTWFwIikpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVyKEFTQ0lJTGl0ZXJhbCgiU291
cmNlTWFwIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNvdXJjZU1hcEhU
VFBIZWFkZXJEZXByZWNhdGVkKEFTQ0lJTGl0ZXJhbCgiWC1Tb3VyY2VNYXAiKSk7CiAKICAgICBp
ZiAoIXNjcmlwdC51cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgIENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSA9IG1fcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZSgmbV9wYWdlLm1haW5GcmFtZSgpLCBV
UkwoUGFyc2VkVVJMU3RyaW5nLCBzY3JpcHQudXJsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdl
TG9hZGVyLmNwcAppbmRleCBlZDE3ZmE5Li4yOGVmMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgICAgIG1faGFzUGVuZGlu
Z0Vycm9yRXZlbnQgPSB0cnVlOwogICAgICAgICBlcnJvckV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hF
dmVudFNvb24oKnRoaXMpOwogCi0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4gaW1h
Z2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIp
KSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdl
KEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIGltYWdlIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9y
aWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAgICAgIGVsZW1lbnQoKS5kb2N1
bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7CiAKICAgICAgICAgQVNTRVJUKCFtX2hhc1Bl
bmRpbmdMb2FkRXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNw
cAppbmRleCA0MGU5YWQ1Li42ZGExMDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRy
YWNrTG9hZGVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpk
ZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJj
CiAKIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJldmVudGVkTG9hZCgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2Us
IChBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiB0ZXh0IHRyYWNrIGxvYWQgZGVuaWVkIGJ5IENy
b3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3Jp
Z2luIHRleHQgdHJhY2sgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJp
bmcgcG9saWN5LiIpKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVu
dD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNv
bGVNZXNzYWdlKTsKICAgICBtX3N0YXRlID0gRmFpbGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCA1YWQ1N2Vj
Li5hMDVkYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVt
ZW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtODcsNyArODgsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIENhY2hlZFJlc291
cmNlUmVxdWVzdDo6aW5pdGlhdG9yTmFtZSgpIGNvbnN0CiAgICAgaWYgKCFtX2luaXRpYXRvck5h
bWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9pbml0aWF0b3JOYW1lOwogCi0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGVmYXVsdE5hbWUsICgi
cmVzb3VyY2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZGVmYXVsdE5hbWUoInJlc291cmNlIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGRlZmF1bHRO
YW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApp
bmRleCBmZWYzOGQ3Li4yYjY0M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25EYXRhYmFzZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJTdWRkZW5UZXJtaW5h
dGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogLy8gRm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8g
c3VwcG9ydCBBUEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgLSBzaG91bGQgbm90IGJlIGNhbGxlZCBp
bnRlcm5hbGx5CkBAIC04NzksOCArODgwLDggQEAgU3RyaW5nIEljb25EYXRhYmFzZTo6ZGF0YWJh
c2VQYXRoKCkgY29uc3QKIAogU3RyaW5nIEljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmls
ZW5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRl
ZmF1bHREYXRhYmFzZUZpbGVuYW1lLCAoQVNDSUlMaXRlcmFsKCJXZWJwYWdlSWNvbnMuZGIiKSkp
OwotICAgIHJldHVybiBkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZS5pc29sYXRlZENvcHkoKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZShB
U0NJSUxpdGVyYWwoIldlYnBhZ2VJY29ucy5kYiIpKTsKKyAgICByZXR1cm4gZGVmYXVsdERhdGFi
YXNlRmlsZW5hbWUuZ2V0KCkuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIC8vIFVubGlrZSBnZXRPckNy
ZWF0ZVBhZ2VVUkxSZWNvcmQoKSwgZ2V0T3JDcmVhdGVJY29uUmVjb3JkKCkgZG9lcyBub3QgbWFy
ayB0aGUgaWNvbiBhcyAiaW50ZXJlc3RlZCBpbiBpbXBvcnQiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAppbmRleCBhOTc0Y2Q4Li4xNjNlYmI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKQEAg
LTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJVc2VyU3R5bGVTaGVldFR5cGVzLmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMjg0LDcgKzI4NSw3IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6c2V0Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBvdmVycmlkCiB2
b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3Zlcmlk
ZSgpCiB7CiAgICAgLy8gSWRlbnRpZnkgb3VyIG92ZXJyaWRlIHN0eWxlIHNoZWV0IHdpdGggYSB1
bmlxdWUgVVJMIC0gYSBuZXcgc2NoZW1lIGFuZCBhIFVVSUQuCi0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFVSTCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJMU3Ry
aW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0Uw
MDIzNERDMjMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gY2FwdGlvbnNTdHls
ZVNoZWV0VVJMKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFGNkFG
MTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIik7CiAKICAgICBhdXRvJiBwYWdlcyA9IG1f
cGFnZUdyb3VwLnBhZ2VzKCk7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5j
cHAKaW5kZXggNmExZTliNy4uNzJjYWIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTQxLDYgKzQxLDcgQEAK
ICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBl
cy5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMjQ2LDcgKzI0Nyw3
IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNCYWNrZ3Jv
dW5kQ1NTKCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUg
c2FtZSBhcyB0aGUgb25lIHNwZWNpZmllZCBpbiBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtp
dC1tZWRpYS10ZXh0LXRyYWNrLXBhc3Qtbm9kZXMKICAgICAvLyBhbmQgd2Via2l0LW1lZGlhLXRl
eHQtdHJhY2stZnV0dXJlLW5vZGVzLgotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKENvbG9yKDAsIDAsIDAsIDAuOCAqIDI1
NSkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q29sb3I+IGRlZmF1bHRCYWNrZ3JvdW5k
Q29sb3IoMCwgMCwgMCwgMC44ICogMjU1KTsKIAogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciBiZWhhdmlvcjsKIApAQCAtMzQ5LDEwICszNTAsMTAgQEAgU3RyaW5nIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGOjpjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5SUQgaWQsIGNv
bnN0IEMKIAogU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1Rl
eHRFZGdlQ1NTKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCBlZGdlU3R5bGVSYWlzZWQsICgiIC0uMDVlbSAtLjA1ZW0gMCAiLCBTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlRGVwcmVzc2VkLCAoIiAuMDVlbSAuMDVlbSAw
ICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVEcm9wU2hhZG93LCAoIiAuMDc1
ZW0gLjA3NWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZVVuaWZvcm0s
ICgiIC4wM2VtICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlZGdlU3R5bGVSYWlzZWQoQVNDSUlMaXRlcmFs
KCIgLS4wNWVtIC0uMDVlbSAwICIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiBlZGdlU3R5bGVEZXByZXNzZWQoQVNDSUlMaXRlcmFsKCIgLjA1ZW0gLjA1ZW0gMCAi
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gZWRnZVN0eWxlRHJv
cFNoYWRvdyhBU0NJSUxpdGVyYWwoIiAuMDc1ZW0gLjA3NWVtIDAgIikpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGVkZ2VTdHlsZVVuaWZvcm0oQVNDSUlMaXRlcmFs
KCIgLjAzZW0gIikpOwogCiAgICAgYm9vbCB1bnVzZWQ7CiAgICAgQ29sb3IgY29sb3IgPSBjYXB0
aW9uc1RleHRDb2xvcih1bnVzZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwCmluZGV4IGM0NjExOGQuLjQxMWM2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIApAQCAtOTk0
LDcgKzk5NSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2VBbmRSZXBvcnRW
aW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0CiAKIGJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0
IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJh
bCgiUmVmdXNlZCB0byBleGVjdXRlIEphdmFTY3JpcHQgVVJMIGJlY2F1c2UgaXQgdmlvbGF0ZXMg
dGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRl
cmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBVUkwgYmVjYXVzZSBpdCB2aW9sYXRl
cyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpOwog
ICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja0lubGluZUFuZFJlcG9ydFZp
b2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVz
c2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIHRydWUpCiAgICAgICAgIDogKG1fcmVwb3J0
T25seSB8fCBjaGVja0lubGluZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkp
KSk7CkBAIC0xMDAyLDcgKzEwMDMsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2
YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6OgogCiBib29s
IENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhjb25zdCBTdHJpbmcm
IGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVz
c2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIGlubGluZSBldmVudCBoYW5k
bGVyIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBv
bGljeSBkaXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
Y29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIGV2
ZW50IGhhbmRsZXIgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2Vj
dXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpOwogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMg
PT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQgPwog
ICAgICAgICBjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUo
bV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExp
bmUsIHRydWUpCiAgICAgICAgIDogKG1fcmVwb3J0T25seSB8fCBjaGVja0lubGluZShvcGVyYXRp
dmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpKSk7CkBAIC0xMDEwLDcgKzEwMTEsNyBAQCBi
b29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhjb25zdCBTdHJp
bmcmIGNvbnRleHRVUkwsIGNvbnN0CiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxp
bmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1i
ZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhl
Y3V0ZSBpbmxpbmUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250
ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4
ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29u
dGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7CiAgICAgcmV0dXJuIHJlcG9ydGlu
Z1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJl
cG9ydCA/CiAgICAgICAgIGNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURp
cmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJMLCBj
b250ZXh0TGluZSwgdHJ1ZSkgOgogICAgICAgICAobV9yZXBvcnRPbmx5IHx8IGNoZWNrSW5saW5l
KG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSkpKTsKQEAgLTEwMTgsNyArMTAx
OSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3Ry
aW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yCiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3Jk
aW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNl
ZCB0byBhcHBseSBpbmxpbmUgc3R5bGUgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5n
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwoIlJlZnVzZWQg
dG8gYXBwbHkgaW5saW5lIHN0eWxlIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBD
b250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKICAgICByZXR1cm4gcmVwb3J0
aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5k
UmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZl
RGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwg
Y29udGV4dExpbmUsIGZhbHNlKSA6CiAgICAgICAgIChtX3JlcG9ydE9ubHkgfHwgY2hlY2tJbmxp
bmUob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpKSk7CkBAIC0xMDI2LDcgKzEw
MjcsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUoY29uc3QgU3Ry
aW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZAogCiBib29sIENTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93RXZhbChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJh
bCgiUmVmdXNlZCB0byBldmFsdWF0ZSBzY3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9s
bG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwoIlJl
ZnVzZWQgdG8gZXZhbHVhdGUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2lu
ZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKICAgICByZXR1cm4gcmVw
b3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpT
ZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tFdmFsQW5kUmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2
ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwg
V1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBzdGF0ZSkgOgogICAgICAgICAobV9y
ZXBvcnRPbmx5IHx8IGNoZWNrRXZhbChvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0
KCkpKSk7CkBAIC0xNjc2LDEyICsxNjc3LDEyIEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTCiAK
IHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRVbnN1cHBvcnRlZERpcmVjdGl2ZShj
b25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgYWxsb3csIChBU0NJSUxpdGVyYWwoImFsbG93IikpKTsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBvcHRpb25zLCAoQVNDSUlMaXRlcmFs
KCJvcHRpb25zIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBwb2xpY3lVUkksIChBU0NJSUxpdGVyYWwoInBvbGljeS11cmkiKSkpOwotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFsbG93TWVzc2FnZSwgKEFTQ0lJTGl0ZXJh
bCgiVGhlICdhbGxvdycgZGlyZWN0aXZlIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggJ2RlZmF1bHQt
c3JjJy4gUGxlYXNlIHVzZSB0aGF0IGRpcmVjdGl2ZSBpbnN0ZWFkLCBhcyAnYWxsb3cnIGhhcyBu
byBlZmZlY3QuIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBvcHRpb25zTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiVGhlICdvcHRpb25zJyBkaXJlY3RpdmUg
aGFzIGJlZW4gcmVwbGFjZWQgd2l0aCAndW5zYWZlLWlubGluZScgYW5kICd1bnNhZmUtZXZhbCcg
c291cmNlIGV4cHJlc3Npb25zIGZvciB0aGUgJ3NjcmlwdC1zcmMnIGFuZCAnc3R5bGUtc3JjJyBk
aXJlY3RpdmVzLiBQbGVhc2UgdXNlIHRob3NlIGRpcmVjdGl2ZXMgaW5zdGVhZCwgYXMgJ29wdGlv
bnMnIGhhcyBubyBlZmZlY3QuIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBwb2xpY3lVUklNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJUaGUgJ3BvbGljeS11
cmknIGRpcmVjdGl2ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHNwZWNpZmljYXRpb24uIFBs
ZWFzZSBzcGVjaWZ5IGEgY29tcGxldGUgcG9saWN5IHZpYSB0aGUgQ29udGVudC1TZWN1cml0eS1Q
b2xpY3kgaGVhZGVyLiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWxs
b3coQVNDSUlMaXRlcmFsKCJhbGxvdyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBvcHRpb25zKEFTQ0lJTGl0ZXJhbCgib3B0aW9ucyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBwb2xpY3lVUkkoQVNDSUlMaXRlcmFsKCJwb2xpY3ktdXJpIikpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFsbG93TWVzc2FnZShBU0NJSUxpdGVy
YWwoIlRoZSAnYWxsb3cnIGRpcmVjdGl2ZSBoYXMgYmVlbiByZXBsYWNlZCB3aXRoICdkZWZhdWx0
LXNyYycuIFBsZWFzZSB1c2UgdGhhdCBkaXJlY3RpdmUgaW5zdGVhZCwgYXMgJ2FsbG93JyBoYXMg
bm8gZWZmZWN0LiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBvcHRpb25z
TWVzc2FnZShBU0NJSUxpdGVyYWwoIlRoZSAnb3B0aW9ucycgZGlyZWN0aXZlIGhhcyBiZWVuIHJl
cGxhY2VkIHdpdGggJ3Vuc2FmZS1pbmxpbmUnIGFuZCAndW5zYWZlLWV2YWwnIHNvdXJjZSBleHBy
ZXNzaW9ucyBmb3IgdGhlICdzY3JpcHQtc3JjJyBhbmQgJ3N0eWxlLXNyYycgZGlyZWN0aXZlcy4g
UGxlYXNlIHVzZSB0aG9zZSBkaXJlY3RpdmVzIGluc3RlYWQsIGFzICdvcHRpb25zJyBoYXMgbm8g
ZWZmZWN0LiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwb2xpY3lVUklN
ZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiVGhlICdwb2xpY3ktdXJpJyBkaXJlY3RpdmUgaGFzIGJlZW4g
cmVtb3ZlZCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uLiBQbGVhc2Ugc3BlY2lmeSBhIGNvbXBsZXRl
IHBvbGljeSB2aWEgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGhlYWRlci4iKSk7CiAKICAg
ICBTdHJpbmcgbWVzc2FnZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgYWxsb3cp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDk5YTlmNWEuLjg2MmI5MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTExMCw2ICsxMTAsNyBAQAogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xODUsMTMgKzE4NiwxMyBAQCB0eXBlZGVmIEhhc2hD
b3VudGVkU2V0PERPTVdpbmRvdyo+IERPTVdpbmRvd1NldDsKIAogc3RhdGljIERPTVdpbmRvd1Nl
dCYgd2luZG93c1dpdGhVbmxvYWRFdmVudExpc3RlbmVycygpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKERPTVdpbmRvd1NldCwgd2luZG93c1dpdGhVbmxvYWRFdmVudExp
c3RlbmVycywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxET01XaW5kb3dTZXQ+IHdp
bmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnM7CiAgICAgcmV0dXJuIHdpbmRvd3NXaXRoVW5s
b2FkRXZlbnRMaXN0ZW5lcnM7CiB9CiAKIHN0YXRpYyBET01XaW5kb3dTZXQmIHdpbmRvd3NXaXRo
QmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChET01XaW5kb3dTZXQsIHdpbmRvd3NXaXRoQmVmb3JlVW5sb2FkRXZlbnRMaXN0
ZW5lcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE9NV2luZG93U2V0PiB3aW5k
b3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzOwogICAgIHJldHVybiB3aW5kb3dzV2l0
aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKaW5kZXggMWNlN2I1NC4uOTE4MmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENv
ZGVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00MDEsNyArNDAyLDcgQEAgRXZlbnRIYW5kbGVyOjp+RXZl
bnRIYW5kbGVyKCkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogRHJhZ1N0YXRlJiBFdmVudEhh
bmRsZXI6OmRyYWdTdGF0ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KERyYWdTdGF0ZSwgc3RhdGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RHJhZ1N0
YXRlPiBzdGF0ZTsKICAgICByZXR1cm4gc3RhdGU7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdf
U1VQUE9SVCkKQEAgLTMwNzYsMTAgKzMwNzcsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2
ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50KQogCiBzdGF0
aWMgRm9jdXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb25Gb3JLZXkoY29uc3QgQXRvbWljU3RyaW5n
JiBrZXlJZGVudGlmaWVyKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIERvd24sICgiRG93biIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBVcCwgKCJVcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBMZWZ0LCAoIkxlZnQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgUmlnaHQsICgiUmlnaHQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gRG93bigiRG93biIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IFVwKCJVcCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IExlZnQoIkxlZnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBS
aWdodCgiUmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAg
IEZvY3VzRGlyZWN0aW9uIHJldFZhbCA9IEZvY3VzRGlyZWN0aW9uTm9uZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAppbmRleCBiNzYzMzY4Li43NDBlOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAt
MzA2LDcgKzMwNiw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0
ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICAvLyBSRVZJRVctIHZl
cnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBvbiB0aGUgTlNB
cnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAgV2UgY2FuJ3Qg
ZG8gdGhhdC4KIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChKU0M6OllhcnI6
OlJlZ3VsYXJFeHByZXNzaW9uLCB3b3JkUmVnRXhwLCAoIlxcdyIsIFRleHRDYXNlU2Vuc2l0aXZl
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Np
b24+IHdvcmRSZWdFeHAoIlxcdyIsIFRleHRDYXNlU2Vuc2l0aXZlKTsKICAgICBTdHJpbmdCdWls
ZGVyIHBhdHRlcm47CiAgICAgcGF0dGVybi5hcHBlbmQoJygnKTsKICAgICB1bnNpZ25lZCBpbnQg
bnVtTGFiZWxzID0gbGFiZWxzLnNpemUoKTsKQEAgLTMxNyw4ICszMTcsOCBAQCBzdGF0aWMgSlND
OjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVj
dG9yPFN0cmluZz4mCiAgICAgICAgIGJvb2wgc3RhcnRzV2l0aFdvcmRDaGFyID0gZmFsc2U7CiAg
ICAgICAgIGJvb2wgZW5kc1dpdGhXb3JkQ2hhciA9IGZhbHNlOwogICAgICAgICBpZiAobGFiZWwu
bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAu
bWF0Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAwOwotICAgICAgICAgICAgZW5kc1dpdGhX
b3JkQ2hhciA9IHdvcmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3RyaW5nKGxhYmVsLmxlbmd0aCgp
IC0gMSwgMSkpID49IDA7CisgICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXIgPSB3b3JkUmVn
RXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKKyAgICAgICAgICAg
IGVuZHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmlu
ZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAppbmRleCAwZjVlMmJlLi43Nzg3
MDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTkzLDcgKzkzLDcg
QEAgU3RyaW5nIE5hdmlnYXRvckJhc2U6OnBsYXRmb3JtKCkgY29uc3QKICAgICBpZiAoIVN0cmlu
ZyhXRUJDT1JFX05BVklHQVRPUl9QTEFURk9STSkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
V0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk07CiAgICAgc3RydWN0IHV0c25hbWUgb3NuYW1lOwot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHBsYXRmb3JtTmFtZSwg
KHVuYW1lKCZvc25hbWUpID49IDAgPyBTdHJpbmcob3NuYW1lLnN5c25hbWUpICsgU3RyaW5nKCIg
IikgKyBTdHJpbmcob3NuYW1lLm1hY2hpbmUpIDogZW1wdHlTdHJpbmcoKSkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHBsYXRmb3JtTmFtZSh1bmFtZSgmb3NuYW1lKSA+PSAw
ID8gU3RyaW5nKG9zbmFtZS5zeXNuYW1lKSArIFN0cmluZygiICIpICsgU3RyaW5nKG9zbmFtZS5t
YWNoaW5lKSA6IGVtcHR5U3RyaW5nKCkpOwogICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7CiAjZWxz
ZQogICAgIHJldHVybiBXRUJDT1JFX05BVklHQVRPUl9QTEFURk9STTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwCmluZGV4IGY2Y2NjMTQuLjc0NTBjMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcApAQCAtMzEsMTQg
KzMxLDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlT
dGF0ZS5oIgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU3RyaW5nIHBhZ2VWaXNpYmlsaXR5U3RhdGVTdHJpbmcoUGFnZVZpc2liaWxp
dHlTdGF0ZSBzdGF0ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCB2aXNpYmxlLCAoQVNDSUlMaXRlcmFsKCJ2aXNpYmxlIikpKTsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBoaWRkZW4sIChBU0NJSUxp
dGVyYWwoImhpZGRlbiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgcHJlcmVuZGVyLCAoQVNDSUlMaXRlcmFsKCJwcmVyZW5kZXIiKSkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZpc2libGUoQVNDSUlMaXRlcmFs
KCJ2aXNpYmxlIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGhp
ZGRlbihBU0NJSUxpdGVyYWwoImhpZGRlbiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgU3RyaW5nPiBwcmVyZW5kZXIoQVNDSUlMaXRlcmFsKCJwcmVyZW5kZXIiKSk7CiAKICAg
ICBzd2l0Y2ggKHN0YXRlKSB7CiAgICAgY2FzZSBQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggZTM5ODE0Yi4uM2JkMzIw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDUsNyArNDYsNyBAQCB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9w
dHI8T3JpZ2luQWNjZXNzV2hpdGVMaXN0Pj4gT3JpZ2luQWNjZXNzTWFwOwogCiBzdGF0aWMgT3Jp
Z2luQWNjZXNzTWFwJiBvcmlnaW5BY2Nlc3NNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChPcmlnaW5BY2Nlc3NNYXAsIG9yaWdpbkFjY2Vzc01hcCwgKCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcmlnaW5BY2Nlc3NNYXA+IG9yaWdpbkFjY2Vzc01hcDsK
ICAgICByZXR1cm4gb3JpZ2luQWNjZXNzTWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggMmVhMThlYy4uNjU2OWNkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCiAjaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Miw3ICs2Myw3IEBAIGJv
b2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAKIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJz
ZShjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgc2NoZW1lU2VwYXJhdG9yLCAoQVNDSUlMaXRlcmFsKCI6Ly8i
KSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNjaGVtZVNlcGFy
YXRvcihBU0NJSUxpdGVyYWwoIjovLyIpKTsKIAogICAgIHNpemVfdCBzY2hlbWVFbmRQb3MgPSBw
YXR0ZXJuLmZpbmQoc2NoZW1lU2VwYXJhdG9yKTsKICAgICBpZiAoc2NoZW1lRW5kUG9zID09IG5v
dEZvdW5kKQpAQCAtNzAsNyArNzEsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFy
c2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQogCiAgICAgbV9zY2hlbWUgPSBwYXR0ZXJuLmxlZnQo
c2NoZW1lRW5kUG9zKTsKIAotICAgIHVuc2lnbmVkIGhvc3RTdGFydFBvcyA9IHNjaGVtZUVuZFBv
cyArIHNjaGVtZVNlcGFyYXRvci5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRQb3Mg
PSBzY2hlbWVFbmRQb3MgKyBzY2hlbWVTZXBhcmF0b3IuZ2V0KCkubGVuZ3RoKCk7CiAgICAgaWYg
KGhvc3RTdGFydFBvcyA+PSBwYXR0ZXJuLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5
QW5pbWF0aW9uLmNwcAppbmRleCA3ODdmMGEwLi40NzQ1MWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC01
Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyQ29t
cGFyaXNvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC02NDUsMTkgKzY0Niwx
OCBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBzaGFkb3dMaXN0TGVuZ3RoKGNvbnN0IFNoYWRvd0Rh
dGEqIHNoYWRvdykKIAogc3RhdGljIGlubGluZSBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dGb3JC
bGVuZGluZyhjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90
aGVyU2hhZG93KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dE
YXRhLCBkZWZhdWx0U2hhZG93RGF0YSwgKEludFBvaW50KCksIDAsIDAsIE5vcm1hbCwgZmFsc2Us
IENvbG9yOjp0cmFuc3BhcmVudCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTaGFkb3dEYXRhLCBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwg
SW5zZXQsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKLQotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YSwg
KEludFBvaW50KCksIDAsIDAsIE5vcm1hbCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFNoYWRvd0RhdGEsIGRlZmF1bHRJbnNl
dFdlYktpdEJveFNoYWRvd0RhdGEsIChJbnRQb2ludCgpLCAwLCAwLCBJbnNldCwgdHJ1ZSwgQ29s
b3I6OnRyYW5zcGFyZW50KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+
IGRlZmF1bHRTaGFkb3dEYXRhKEludFBvaW50KCksIDAsIDAsIE5vcm1hbCwgZmFsc2UsIENvbG9y
Ojp0cmFuc3BhcmVudCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRl
ZmF1bHRJbnNldFNoYWRvd0RhdGEoSW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIGZhbHNlLCBDb2xv
cjo6dHJhbnNwYXJlbnQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBk
ZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YShJbnRQb2ludCgpLCAwLCAwLCBOb3JtYWwsIHRydWUs
IENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0Rh
dGE+IGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEoSW50UG9pbnQoKSwgMCwgMCwgSW5z
ZXQsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCk7CiAKICAgICBpZiAoc3JjU2hhZG93KQogICAg
ICAgICByZXR1cm4gc3JjU2hhZG93OwogCiAgICAgaWYgKG90aGVyU2hhZG93LT5zdHlsZSgpID09
IEluc2V0KQotICAgICAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkg
PyAmZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YSA6ICZkZWZhdWx0SW5zZXRTaGFkb3dE
YXRhOworICAgICAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyAm
ZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6ICZkZWZhdWx0SW5zZXRTaGFk
b3dEYXRhLmdldCgpOwogCi0gICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRv
dygpID8gJmRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhIDogJmRlZmF1bHRTaGFkb3dEYXRhOwor
ICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/ICZkZWZhdWx0V2Vi
S2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6ICZkZWZhdWx0U2hhZG93RGF0YS5nZXQoKTsKIH0KIAog
Y2xhc3MgUHJvcGVydHlXcmFwcGVyU2hhZG93IDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3Jh
cHBlckJhc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29t
cG9zaXRlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBv
c2l0ZUFuaW1hdGlvbi5jcHAKaW5kZXggYjgyMjI1Ni4uNjU1MWQ2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMjIxLDcgKzIyMiw3IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVL
ZXlmcmFtZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIFJlbmRlCiAgICAgICAg
IC8vIFRvc3MgdGhlIGFuaW1hdGlvbiBvcmRlciBtYXAuCiAgICAgICAgIG1fa2V5ZnJhbWVBbmlt
YXRpb25PcmRlck1hcC5jbGVhcigpOwogCi0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG5vbmUsICgibm9uZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gbm9uZSgibm9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgICAgICAKICAgICAgICAgLy8gTm93IG1hcmsgYW55IHN0aWxsIGFjdGl2
ZSBhbmltYXRpb25zIGFzIGFjdGl2ZSBhbmQgYWRkIGFueSBuZXcgYW5pbWF0aW9ucy4KICAgICAg
ICAgaWYgKHRhcmdldFN0eWxlLT5hbmltYXRpb25zKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJz
b3IuY3BwCmluZGV4IDkzNTkzYWQuLjYwYTYxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0N1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29y
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTg5LDI1OSArMTkwLDI1
OSBAQCBQbGF0Zm9ybUN1cnNvciBDdXJzb3I6OnBsYXRmb3JtQ3Vyc29yKCkgY29uc3QKIAogY29u
c3QgQ3Vyc29yJiBwb2ludGVyQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpQb2ludGVyKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlBvaW50ZXIpOwogICAgIHJldHVybiBjOwogfQog
CiBjb25zdCBDdXJzb3ImIGNyb3NzQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpDcm9zcykpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpDcm9zcyk7CiAgICAgcmV0dXJuIGM7CiB9CiAK
IGNvbnN0IEN1cnNvciYgaGFuZEN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6SGFuZCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpIYW5kKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiBtb3ZlQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpNb3ZlKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok1vdmUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIHZlcnRpY2FsVGV4dEN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6VmVydGljYWxUZXh0KSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlZlcnRpY2FsVGV4dCk7CiAgICAgcmV0
dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY2VsbEN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Q2VsbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpDZWxsKTsKICAgICByZXR1cm4g
YzsKIH0KIAogY29uc3QgQ3Vyc29yJiBjb250ZXh0TWVudUN1cnNvcigpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Q29udGV4dE1lbnUp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Q29udGV4dE1l
bnUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGFsaWFzQ3Vyc29yKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpB
bGlhcykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpBbGlh
cyk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgem9vbUluQ3Vyc29yKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpa
b29tSW4pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Wm9v
bUluKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiB6b29tT3V0Q3Vyc29yKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29y
Ojpab29tT3V0KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6
Olpvb21PdXQpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNvcHlDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6OkNvcHkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
Q29weSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9uZUN1cnNvcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6
Tm9uZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb25l
KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBwcm9ncmVzc0N1cnNvcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6
UHJvZ3Jlc3MpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
UHJvZ3Jlc3MpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vRHJvcEN1cnNv
cigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1
cnNvcjo6Tm9Ecm9wKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6Ok5vRHJvcCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm90QWxsb3dl
ZEN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwg
YywgKEN1cnNvcjo6Tm90QWxsb3dlZCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJz
b3I+IGMoQ3Vyc29yOjpOb3RBbGxvd2VkKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vy
c29yJiBpQmVhbUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEN1cnNvciwgYywgKEN1cnNvcjo6SUJlYW0pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Q3Vyc29yPiBjKEN1cnNvcjo6SUJlYW0pOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJz
b3ImIHdhaXRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChD
dXJzb3IsIGMsIChDdXJzb3I6OldhaXQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vy
c29yPiBjKEN1cnNvcjo6V2FpdCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYg
aGVscEN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNv
ciwgYywgKEN1cnNvcjo6SGVscCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+
IGMoQ3Vyc29yOjpIZWxwKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBlYXN0
UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vy
c29yLCBjLCAoQ3Vyc29yOjpFYXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEN1cnNvcj4gYyhDdXJzb3I6OkVhc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25z
dCBDdXJzb3ImIG5vcnRoUmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aFJlc2l6ZSkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3J0aFJlc2l6ZSk7CiAgICAgcmV0
dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9ydGhFYXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0
aEVhc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNv
cjo6Tm9ydGhFYXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBu
b3J0aFdlc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoV2VzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3J0aFdlc3RSZXNpemUpOwogICAgIHJl
dHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNvdXRoUmVzaXplQ3Vyc29yKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpTb3V0aFJl
c2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpTb3V0
aFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgc291dGhFYXN0UmVz
aXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29y
LCBjLCAoQ3Vyc29yOjpTb3V0aEVhc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6U291dGhFYXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0K
IAogY29uc3QgQ3Vyc29yJiBzb3V0aFdlc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlNvdXRoV2VzdFJlc2l6
ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpTb3V0aFdl
c3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHdlc3RSZXNpemVD
dXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMs
IChDdXJzb3I6Oldlc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29y
PiBjKEN1cnNvcjo6V2VzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNv
ciYgbm9ydGhTb3V0aFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhTb3V0aFJlc2l6ZSkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3J0aFNvdXRoUmVzaXplKTsK
ICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBlYXN0V2VzdFJlc2l6ZUN1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6RWFzdFdlc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBj
KEN1cnNvcjo6RWFzdFdlc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJz
b3ImIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhFYXN0U291dGhXZXN0
UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5v
cnRoRWFzdFNvdXRoV2VzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNv
ciYgbm9ydGhXZXN0U291dGhFYXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aFdlc3RTb3V0aEVhc3RS
ZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9y
dGhXZXN0U291dGhFYXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29y
JiBjb2x1bW5SZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkNvbHVtblJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpDb2x1bW5SZXNpemUpOwogICAgIHJldHVybiBj
OwogfQogCiBjb25zdCBDdXJzb3ImIHJvd1Jlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Um93UmVzaXplKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlJvd1Jlc2l6ZSk7CiAg
ICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbWlkZGxlUGFubmluZ0N1cnNvcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6
TWlkZGxlUGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vy
c29yOjpNaWRkbGVQYW5uaW5nKTsKICAgICByZXR1cm4gYzsKIH0KICAgICAKIGNvbnN0IEN1cnNv
ciYgZWFzdFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkVhc3RQYW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkVhc3RQYW5uaW5nKTsKICAgICByZXR1cm4gYzsK
IH0KICAgICAKIGNvbnN0IEN1cnNvciYgbm9ydGhQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aFBhbm5p
bmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhQ
YW5uaW5nKTsKICAgICByZXR1cm4gYzsKIH0KICAgICAKIGNvbnN0IEN1cnNvciYgbm9ydGhFYXN0
UGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhFYXN0UGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3J0aEVhc3RQYW5uaW5nKTsKICAgICByZXR1cm4g
YzsKIH0KICAgICAKIGNvbnN0IEN1cnNvciYgbm9ydGhXZXN0UGFubmluZ0N1cnNvcigpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9y
dGhXZXN0UGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vy
c29yOjpOb3J0aFdlc3RQYW5uaW5nKTsKICAgICByZXR1cm4gYzsKIH0KICAgICAKIGNvbnN0IEN1
cnNvciYgc291dGhQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpTb3V0aFBhbm5pbmcpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6U291dGhQYW5uaW5nKTsKICAgICByZXR1
cm4gYzsKIH0KICAgICAKIGNvbnN0IEN1cnNvciYgc291dGhFYXN0UGFubmluZ0N1cnNvcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6
U291dGhFYXN0UGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMo
Q3Vyc29yOjpTb3V0aEVhc3RQYW5uaW5nKTsKICAgICByZXR1cm4gYzsKIH0KICAgICAKIGNvbnN0
IEN1cnNvciYgc291dGhXZXN0UGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6U291dGhXZXN0UGFubmluZykpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpTb3V0aFdlc3RQYW5u
aW5nKTsKICAgICByZXR1cm4gYzsKIH0KICAgICAKIGNvbnN0IEN1cnNvciYgd2VzdFBhbm5pbmdD
dXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMs
IChDdXJzb3I6Oldlc3RQYW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNv
cj4gYyhDdXJzb3I6Oldlc3RQYW5uaW5nKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vy
c29yJiBncmFiQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Q3Vyc29yLCBjLCAoQ3Vyc29yOjpHcmFiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1
cnNvcj4gYyhDdXJzb3I6OkdyYWIpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3Im
IGdyYWJiaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Q3Vyc29yLCBjLCAoQ3Vyc29yOjpHcmFiYmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDdXJzb3I+IGMoQ3Vyc29yOjpHcmFiYmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAppbmRleCA1ODkxN2ZmLi42NTU3OGQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFN0cmluZyBkZWZh
dWx0TGFuZ3VhZ2UoKQogCiBzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdl
c092ZXJyaWRlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9y
PFN0cmluZz4sIG92ZXJyaWRlLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3Rv
cjxTdHJpbmc+PiBvdmVycmlkZTsKICAgICByZXR1cm4gb3ZlcnJpZGU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKaW5kZXggOTNkMmU5MC4uNzk1
MWZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0
ZXJOYW1lcy5oPgogCiAjaWYgVVNFKENGKQpAQCAtNzksMTEgKzgwLDExIEBAIHN0YXRpYyBTdHJp
bmcgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0oY29uc3QgU3RyaW5nJiBvcmlnaW5h
bCkKIAogICAgIC8vIFRydW5jYXRlIHRoZSBzdHJpbmcgaWYgaXQncyB0b28gbG9uZy4gVGhpcyBp
cyBpbiBjb25zaXN0ZW5jeSB3aXRoIEFwcEtpdC4KICAgICB1bnNpZ25lZCBtYXhOdW1iZXJPZkdy
YXBoZW1lQ2x1c3RlcnNJbkxvb2t1cE1lbnVJdGVtID0gMjQ7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZWxsaXBzaXMsICgmaG9yaXpvbnRhbEVsbGlwc2lzLCAx
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZWxsaXBzaXMoJmhvcml6b250
YWxFbGxpcHNpcywgMSk7CiAKICAgICBTdHJpbmcgdHJpbW1lZCA9IG9yaWdpbmFsLnN0cmlwV2hp
dGVTcGFjZSgpOwogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhcmFjdGVycyA9IG51bUNoYXJhY3Rl
cnNJbkdyYXBoZW1lQ2x1c3RlcnModHJpbW1lZCwgbWF4TnVtYmVyT2ZHcmFwaGVtZUNsdXN0ZXJz
SW5Mb29rdXBNZW51SXRlbSk7Ci0gICAgcmV0dXJuIG51bWJlck9mQ2hhcmFjdGVycyA9PSB0cmlt
bWVkLmxlbmd0aCgpID8gdHJpbW1lZCA6IHRyaW1tZWQubGVmdChudW1iZXJPZkNoYXJhY3RlcnMp
ICsgZWxsaXBzaXM7CisgICAgcmV0dXJuIG51bWJlck9mQ2hhcmFjdGVycyA9PSB0cmltbWVkLmxl
bmd0aCgpID8gdHJpbW1lZCA6IHRyaW1tZWQubGVmdChudW1iZXJPZkNoYXJhY3RlcnMpICsgZWxs
aXBzaXMuZ2V0KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcAppbmRleCAxMjdjYzVhLi5jYzI1NDAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMzUyLDE2ICszNTIsMTYgQEAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCkKIAogc3Rh
dGljIE1lZGlhTUlNRVR5cGVNYXAmIG1lZGlhTUlNRVR5cGVNYXAoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChNZWRpYU1JTUVUeXBlTWFwLCBtZWRpYU1JTUVUeXBlRm9y
RXh0ZW5zaW9uTWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1lZGlhTUlNRVR5
cGVNYXA+IG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXA7CiAKLSAgICBpZiAoIW1lZGlhTUlN
RVR5cGVGb3JFeHRlbnNpb25NYXAuaXNFbXB0eSgpKQorICAgIGlmICghbWVkaWFNSU1FVHlwZUZv
ckV4dGVuc2lvbk1hcC5nZXQoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtZWRpYU1JTUVU
eXBlRm9yRXh0ZW5zaW9uTWFwOwogCiAgICAgY29uc3QgdW5zaWduZWQgbnVtUGFpcnMgPSBzaXpl
b2YoY29tbW9uTWVkaWFUeXBlcykgLyBzaXplb2YoY29tbW9uTWVkaWFUeXBlc1swXSk7CiAgICAg
Zm9yICh1bnNpZ25lZCBuZHggPSAwOyBuZHggPCBudW1QYWlyczsgKytuZHgpIHsKIAotICAgICAg
ICBpZiAobWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5jb250YWlucyhjb21tb25NZWRpYVR5
cGVzW25keF0uZXh0ZW5zaW9uKSkKLSAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNp
b25NYXAuZ2V0KGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24pLT5hcHBlbmQoY29tbW9u
TWVkaWFUeXBlc1tuZHhdLnR5cGUpOworICAgICAgICBpZiAobWVkaWFNSU1FVHlwZUZvckV4dGVu
c2lvbk1hcC5nZXQoKS5jb250YWlucyhjb21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uKSkK
KyAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuZ2V0KCkuZ2V0KGNvbW1v
bk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24pLT5hcHBlbmQoY29tbW9uTWVkaWFUeXBlc1tuZHhd
LnR5cGUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+KiBzeW5v
bnltcyA9IG5ldyBWZWN0b3I8U3RyaW5nPjsKIApAQCAtMzcxLDcgKzM3MSw3IEBAIHN0YXRpYyBN
ZWRpYU1JTUVUeXBlTWFwJiBtZWRpYU1JTUVUeXBlTWFwKCkKICAgICAgICAgICAgIGlmICghc3lz
dGVtVHlwZS5pc0VtcHR5KCkgJiYgY29tbW9uTWVkaWFUeXBlc1tuZHhdLnR5cGUgIT0gc3lzdGVt
VHlwZSkKICAgICAgICAgICAgICAgICBzeW5vbnltcy0+YXBwZW5kKHN5c3RlbVR5cGUpOwogICAg
ICAgICAgICAgc3lub255bXMtPmFwcGVuZChjb21tb25NZWRpYVR5cGVzW25keF0udHlwZSk7Ci0g
ICAgICAgICAgICBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmFkZChjb21tb25NZWRpYVR5
cGVzW25keF0uZXh0ZW5zaW9uLCBzeW5vbnltcyk7CisgICAgICAgICAgICBtZWRpYU1JTUVUeXBl
Rm9yRXh0ZW5zaW9uTWFwLmdldCgpLmFkZChjb21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9u
LCBzeW5vbnltcyk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY0Miw3ICs2NDIsNyBAQCBIYXNo
U2V0PFN0cmluZz4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFVuc3VwcG9ydGVkVGV4dE1JTUVUeXBl
cygpCiAKIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1JTUVUeXBlKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkZWZhdWx0TUlNRVR5cGUsIChBU0NJ
SUxpdGVyYWwoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0cmluZz4gZGVmYXVsdE1JTUVUeXBlKEFTQ0lJTGl0ZXJhbCgiYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtIikpOwogICAgIHJldHVybiBkZWZhdWx0TUlNRVR5cGU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAppbmRleCBhOGIw
YTExLi5iNjQ2NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVS
ZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnku
Y3BwCkBAIC0zNiwxMiArMzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgVVJM
U2NoZW1lc01hcCYgbG9jYWxVUkxTY2hlbWVzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgbG9jYWxTY2hlbWVzLCAoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGxvY2FsU2NoZW1lczsKIAotICAgIGlmIChs
b2NhbFNjaGVtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoImZpbGUi
KTsKKyAgICBpZiAobG9jYWxTY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBsb2Nh
bFNjaGVtZXMuZ2V0KCkuYWRkKCJmaWxlIik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAg
IGxvY2FsU2NoZW1lcy5hZGQoImFwcGxld2ViZGF0YSIpOworICAgICAgICBsb2NhbFNjaGVtZXMu
Z2V0KCkuYWRkKCJhcHBsZXdlYmRhdGEiKTsKICNlbmRpZgogICAgIH0KIApAQCAtNTAsMjEgKzUw
LDIxIEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBsb2NhbFVSTFNjaGVtZXMoKQogCiBzdGF0aWMg
VVJMU2NoZW1lc01hcCYgZGlzcGxheUlzb2xhdGVkVVJMU2NoZW1lcygpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIGRpc3BsYXlJc29sYXRlZFNj
aGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gZGlz
cGxheUlzb2xhdGVkU2NoZW1lczsKICAgICByZXR1cm4gZGlzcGxheUlzb2xhdGVkU2NoZW1lczsK
IH0KIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNlY3VyZVNjaGVtZXMoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBzZWN1cmVTY2hlbWVzLCAo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNlY3VyZVNjaGVt
ZXM7CiAKLSAgICBpZiAoc2VjdXJlU2NoZW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2VjdXJl
U2NoZW1lcy5hZGQoImh0dHBzIik7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuYWRkKCJhYm91dCIp
OwotICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZCgiZGF0YSIpOwotICAgICAgICBzZWN1cmVTY2hl
bWVzLmFkZCgid3NzIik7CisgICAgaWYgKHNlY3VyZVNjaGVtZXMuZ2V0KCkuaXNFbXB0eSgpKSB7
CisgICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJodHRwcyIpOworICAgICAgICBzZWN1
cmVTY2hlbWVzLmdldCgpLmFkZCgiYWJvdXQiKTsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5nZXQo
KS5hZGQoImRhdGEiKTsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoIndzcyIpOwog
I2lmIFVTRShRVUlDS19MT09LKQotICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZChRTFByZXZpZXdQ
cm90b2NvbCgpKTsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoUUxQcmV2aWV3UHJv
dG9jb2woKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTczLDE0ICs3MywxNCBAQCBzdGF0aWMgVVJM
U2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hl
bWVzV2l0aFVuaXF1ZU9yaWdpbnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChVUkxTY2hlbWVzTWFwLCBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMsICgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lc1dpdGhVbmlxdWVPcmln
aW5zOwogCi0gICAgaWYgKHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZCgiYWJvdXQiKTsKLSAgICAgICAgc2No
ZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZCgiamF2YXNjcmlwdCIpOworICAgIGlmIChzY2hlbWVz
V2l0aFVuaXF1ZU9yaWdpbnMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNjaGVtZXNXaXRo
VW5pcXVlT3JpZ2lucy5nZXQoKS5hZGQoImFib3V0Iik7CisgICAgICAgIHNjaGVtZXNXaXRoVW5p
cXVlT3JpZ2lucy5nZXQoKS5hZGQoImphdmFzY3JpcHQiKTsKICAgICAgICAgLy8gVGhpcyBpcyBh
IHdpbGxmdWwgdmlvbGF0aW9uIG9mIEhUTUw1LgogICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODg1Ci0gICAgICAgIHNjaGVtZXNXaXRoVW5p
cXVlT3JpZ2lucy5hZGQoImRhdGEiKTsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
LmdldCgpLmFkZCgiZGF0YSIpOwogICAgIH0KIAogICAgIHJldHVybiBzY2hlbWVzV2l0aFVuaXF1
ZU9yaWdpbnM7CkBAIC04OCwyNiArODgsMjYgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBlbXB0eURvY3Vt
ZW50U2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNj
aGVtZXNNYXAsIGVtcHR5RG9jdW1lbnRTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFVSTFNjaGVtZXNNYXA+IGVtcHR5RG9jdW1lbnRTY2hlbWVzOwogCi0gICAgaWYgKGVt
cHR5RG9jdW1lbnRTY2hlbWVzLmlzRW1wdHkoKSkKLSAgICAgICAgZW1wdHlEb2N1bWVudFNjaGVt
ZXMuYWRkKCJhYm91dCIpOworICAgIGlmIChlbXB0eURvY3VtZW50U2NoZW1lcy5nZXQoKS5pc0Vt
cHR5KCkpCisgICAgICAgIGVtcHR5RG9jdW1lbnRTY2hlbWVzLmdldCgpLmFkZCgiYWJvdXQiKTsK
IAogICAgIHJldHVybiBlbXB0eURvY3VtZW50U2NoZW1lczsKIH0KIAogc3RhdGljIEhhc2hTZXQ8
U3RyaW5nPiYgc2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBzY2hlbWVzLCAo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gc2NoZW1lczsK
ICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhbkRpc3Bs
YXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1l
cywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBjYW5EaXNw
bGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXM7CiAKLSAgICBpZiAoY2FuRGlzcGxheU9ubHlJZkNh
blJlcXVlc3RTY2hlbWVzLmlzRW1wdHkoKSkgewotICAgICAgICBjYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdFNjaGVtZXMuYWRkKCJibG9iIik7CisgICAgaWYgKGNhbkRpc3BsYXlPbmx5SWZDYW5S
ZXF1ZXN0U2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2FuRGlzcGxheU9ubHlJ
ZkNhblJlcXVlc3RTY2hlbWVzLmdldCgpLmFkZCgiYmxvYiIpOwogICAgIH0KIAogICAgIHJldHVy
biBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXM7CkBAIC0xMTUsNyArMTE1LDcgQEAg
c3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygp
CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1l
cygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAs
IG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVz
OwogICAgIHJldHVybiBub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lczsKIH0KIApAQCAt
MTQyLDI0ICsxNDIsMjQgQEAgY29uc3QgVVJMU2NoZW1lc01hcCYgU2NoZW1lUmVnaXN0cnk6Omxv
Y2FsU2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzQWxsb3dpbmdMb2Nh
bFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIHNjaGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFn
ZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFVSTFNjaGVtZXNNYXA+IHNjaGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0
ZUJyb3dzaW5nOwogICAgIHJldHVybiBzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJ
blByaXZhdGVCcm93c2luZzsKIH0KIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNBbGxv
d2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBzY2hlbWVzQWxsb3dpbmdEYXRhYmFz
ZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFVSTFNjaGVtZXNNYXA+IHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJv
d3Npbmc7CiAgICAgcmV0dXJuIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRl
QnJvd3Npbmc7CiB9CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMo
KQogewogICAgIC8vIEZJWE1FOiBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NzE2MAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFw
LCBDT1JTRW5hYmxlZFNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJM
U2NoZW1lc01hcD4gQ09SU0VuYWJsZWRTY2hlbWVzOwogCi0gICAgaWYgKENPUlNFbmFibGVkU2No
ZW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmFkZCgiaHR0cCIp
OwotICAgICAgICBDT1JTRW5hYmxlZFNjaGVtZXMuYWRkKCJodHRwcyIpOworICAgIGlmIChDT1JT
RW5hYmxlZFNjaGVtZXMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIENPUlNFbmFibGVkU2No
ZW1lcy5nZXQoKS5hZGQoImh0dHAiKTsKKyAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmdldCgp
LmFkZCgiaHR0cHMiKTsKICAgICB9CiAKICAgICByZXR1cm4gQ09SU0VuYWJsZWRTY2hlbWVzOwpA
QCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVt
ZXMoKQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNz
aW5nU2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNj
aGVtZXNNYXAsIHNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2No
ZW1lc01hcD4gc2NoZW1lczsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IGQ3MzdlMmQuLjQzOGYzNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTI4LDEzICsy
OCwxNCBAQAogCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVNb2NrLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBTY3JvbGxiYXJUaGVtZSYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkKIHsKICAg
ICBpZiAoU2V0dGluZ3M6Om1vY2tTY3JvbGxiYXJzRW5hYmxlZCgpKSB7Ci0gICAgICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTY3JvbGxiYXJUaGVtZU1vY2ssIG1vY2tUaGVtZSwg
KCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2Nyb2xsYmFyVGhlbWVNb2NrPiBt
b2NrVGhlbWU7CiAgICAgICAgIHJldHVybiBtb2NrVGhlbWU7CiAgICAgfQogICAgIHJldHVybiBu
YXRpdmVUaGVtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKaW5kZXggNGQxYzc3YS4uODg5Yjc0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCkBAIC0xOTgxLDcgKzE5ODEsNyBAQCBib29sIHBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpCiAKIGNvbnN0IFVSTCYgYmxh
bmtVUkwoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkwsIHN0YXRp
Y0JsYW5rVVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6YmxhbmsiKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJv
dXQ6YmxhbmsiKTsKICAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKaW5kZXggZDY3NzBhNC4u
MTIwNjE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvbi5jcHAKQEAgLTIyLDYgKzIyLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJBbmltYXRpb24uaCIKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEFuaW1hdGlvbjo6QW5pbWF0aW9uKCkKQEAgLTE2MCw3ICsxNjIs
NyBAQCBib29sIEFuaW1hdGlvbjo6YW5pbWF0aW9uc01hdGNoKGNvbnN0IEFuaW1hdGlvbiYgb3Ro
ZXIsIGJvb2wgbWF0Y2hQbGF5U3RhdGVzKSBjbwogCiBjb25zdCBTdHJpbmcmIEFuaW1hdGlvbjo6
aW5pdGlhbE5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGluaXRpYWxWYWx1ZSwgKEFTQ0lJTGl0ZXJhbCgibm9uZSIpKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gaW5pdGlhbFZhbHVlKEFTQ0lJTGl0ZXJhbCgibm9uZSIpKTsK
ICAgICByZXR1cm4gaW5pdGlhbFZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAppbmRleCBhZTk1NTAyLi4zYzJkYWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTI5LDEy
ICsyOSwxMyBAQAogI2lmIFVTRShBVURJT19TRVNTSU9OKQogCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBBdWRpb1Nlc3Npb24mIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF1ZGlvU2Vzc2lvbiwgc2Vzc2lv
biwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdWRpb1Nlc3Npb24+IHNlc3Npb247
CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmgKaW5kZXggZDFmNTI0Ni4uMGJiNGU2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBy
ZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
TmV2ZXJEZXN0cm95ZWQ8QXVkaW9TZXNzaW9uPjsKICAgICBBdWRpb1Nlc3Npb24oKTsKICAgICB+
QXVkaW9TZXNzaW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZFbGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHAKaW5kZXggYWY5OTJmYi4uOTk4MzhkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTY4LDE4ICs2OCwxOCBA
QCBjb25zdCBmbG9hdCBSZXNwb25zZVNhbXBsZVJhdGUgPSA0NDEwMDsKIHN0YXRpYyBBdWRpb0J1
cyogZ2V0Q29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlc0ZvclN1YmplY3QoY29uc3QgU3RyaW5n
JiBzdWJqZWN0TmFtZSkKIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBdWRpb0J1cyo+
IEF1ZGlvQnVzTWFwOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdWRpb0J1
c01hcCwgYXVkaW9CdXNNYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXVkaW9C
dXNNYXA+IGF1ZGlvQnVzTWFwOwogCiAgICAgQXVkaW9CdXMqIGJ1czsKLSAgICBBdWRpb0J1c01h
cDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBhdWRpb0J1c01hcC5maW5kKHN1YmplY3ROYW1lKTsKLSAg
ICBpZiAoaXRlcmF0b3IgPT0gYXVkaW9CdXNNYXAuZW5kKCkpIHsKKyAgICBBdWRpb0J1c01hcDo6
aXRlcmF0b3IgaXRlcmF0b3IgPSBhdWRpb0J1c01hcC5nZXQoKS5maW5kKHN1YmplY3ROYW1lKTsK
KyAgICBpZiAoaXRlcmF0b3IgPT0gYXVkaW9CdXNNYXAuZ2V0KCkuZW5kKCkpIHsKICAgICAgICAg
UmVmUHRyPEF1ZGlvQnVzPiBjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzID0gQXVkaW9CdXM6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKHN1YmplY3ROYW1lLnV0ZjgoKS5kYXRhKCksIFJlc3BvbnNl
U2FtcGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2Vz
KTsKICAgICAgICAgaWYgKCFjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNl
cy5yZWxlYXNlKCkubGVha1JlZigpOwotICAgICAgICBhdWRpb0J1c01hcC5zZXQoc3ViamVjdE5h
bWUsIGJ1cyk7CisgICAgICAgIGF1ZGlvQnVzTWFwLmdldCgpLnNldChzdWJqZWN0TmFtZSwgYnVz
KTsKICAgICB9IGVsc2UKICAgICAgICAgYnVzID0gaXRlcmF0b3ItPnZhbHVlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHAKaW5kZXggOWQ4ZDFlMS4uMzc0ZjgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAt
NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAjaW5jbHVkZSA8QXVkaW9U
b29sYm94L0F1ZGlvU2VydmljZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUksoQXVkaW9Ub29sYm94KQpA
QCAtNjIsNyArNjMsNyBAQCBjb25zdCBpbnQga1ByZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7CiB0
eXBlZGVmIEhhc2hTZXQ8QXVkaW9EZXN0aW5hdGlvbklPUyo+IEF1ZGlvRGVzdGluYXRpb25TZXQ7
CiBzdGF0aWMgQXVkaW9EZXN0aW5hdGlvblNldCYgYXVkaW9EZXN0aW5hdGlvbnMoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdWRpb0Rlc3RpbmF0aW9uU2V0LCBhdWRp
b0Rlc3RpbmF0aW9uU2V0LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF1ZGlvRGVz
dGluYXRpb25TZXQ+IGF1ZGlvRGVzdGluYXRpb25TZXQ7CiAgICAgcmV0dXJuIGF1ZGlvRGVzdGlu
YXRpb25TZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggZTNlYTg2YS4uZmU2YjY3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Nyw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBHcmFwaGljc0xheWVyKiwgVmVjdG9yPEZsb2F0
UmVjdD4+IFJlcGFpbnRNYXA7CiBzdGF0aWMgUmVwYWludE1hcCYgcmVwYWludFJlY3RNYXAoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChSZXBhaW50TWFwLCBtYXAsICgp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVwYWludE1hcD4gbWFwOwogICAgIHJldHVy
biBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmNwcAppbmRleCA4MzVkZWEwLi4yNjhiODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC04OCw4ICs4OCw4IEBAIEZs
b2F0U2l6ZSBJbWFnZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0aW9uU2l6ZShGbG9hdFNpemUgc2l6
ZSkgY29uc3QKIAogdm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNw
YWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPGludD4sIGRldmljZVJnYkxVVCwgKCkp
OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8aW50PiwgbGluZWFy
UmdiTFVULCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxpbnQ+PiBkZXZp
Y2VSZ2JMVVQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxpbnQ+PiBsaW5lYXJS
Z2JMVVQ7CiAKICAgICBpZiAoc3JjQ29sb3JTcGFjZSA9PSBkc3RDb2xvclNwYWNlKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKaW5kZXggMjFkODBhZS4uZmJmOWUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMjM1LDE5ICsyMzUsMTkgQEAg
c3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3Ry
dWN0b3IsIE1lZGlhRW5naW5lU3VwcG8KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBw
bGljYXRpb25PY3RldFN0cmVhbSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgYXBwbGljYXRpb25PY3RldFN0cmVhbSwgKCJhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYXBwbGljYXRp
b25PY3RldFN0cmVhbSgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW07
CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRQbGFpbigpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdGV4dFBsYWlu
LCAoInRleHQvcGxhaW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdGV4dFBsYWluKCJ0
ZXh0L3BsYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIHRleHRQbGFpbjsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY29kZWNzKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBjb2RlY3MsICgiY29kZWNzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNvZGVjcygi
Y29kZWNzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IGNvZGVjczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcAppbmRleCA3YzBjMDcwLi44OThkNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTUsNyArMTU2
LDcgQEAgcHJpdmF0ZToKIAogU2NyYXRjaEJ1ZmZlciYgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9u
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU2NyYXRjaEJ1ZmZlciwg
c2NyYXRjaEJ1ZmZlciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3JhdGNoQnVm
ZmVyPiBzY3JhdGNoQnVmZmVyOwogICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQppbmRleCAxZmFjNzA0Li4zZDZjZTcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTM5Miw3ICszOTIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqYm9vbFN0cmlu
Zyhib29sIHZhbCkKIHR5cGVkZWYgSGFzaE1hcDxNZWRpYVBsYXllciosIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMqPiBQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlOwogc3RhdGljIFBs
YXllclRvUHJpdmF0ZU1hcFR5cGUmIHBsYXllclRvUHJpdmF0ZU1hcCgpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFBsYXllclRvUHJpdmF0ZU1hcFR5cGUsIG1hcCwgKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlPiBtYXA7
CiAgICAgcmV0dXJuIG1hcDsKIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXggNzI0ODkz
Yi4uNjE0MDI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRl
ICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0
U3RyZWFtLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0z
Niw3ICszNyw3IEBAIFJlZjxTb3VyY2VBbHBoYT4gU291cmNlQWxwaGE6OmNyZWF0ZShGaWx0ZXJF
ZmZlY3QmIHNvdXJjZUVmZmVjdCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTb3VyY2VBbHBoYTo6
ZWZmZWN0TmFtZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgc19lZmZlY3ROYW1lLCAoIlNvdXJjZUFscGhhIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IHNfZWZmZWN0TmFtZSgiU291cmNlQWxwaGEiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19lZmZlY3ROYW1lOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUdyYXBoaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VHcmFwaGljLmNwcAppbmRleCA2MWJiMWI4Li4yMzEzYjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNSw3ICszNiw3IEBAIFJlZjxTb3VyY2VH
cmFwaGljPiBTb3VyY2VHcmFwaGljOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIpCiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgU291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc19lZmZlY3ROYW1lLCAo
IlNvdXJjZUdyYXBoaWMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc19lZmZlY3ROYW1l
KCJTb3VyY2VHcmFwaGljIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIHNfZWZmZWN0TmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1t
CmluZGV4IDA4MGE5MTIuLjVjNWU2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0K
QEAgLTEyNzEsNyArMTI3MSw3IEBAIHN0YXRpYyB2b2lkIGFkZEZpbGVUeXBlc1RvQ2FjaGUoTlNB
cnJheSAqIGZpbGVUeXBlcywgSGFzaFNldDxTdHJpbmc+ICZjYWNoZSkKIAogc3RhdGljIEhhc2hT
ZXQ8U3RyaW5nPiBtaW1lQ29tbW9uVHlwZXNDYWNoZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwgY2FjaGUsICgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZTsKICAgICBzdGF0aWMgYm9vbCB0
eXBlTGlzdEluaXRpYWxpemVkID0gZmFsc2U7CiAKICAgICBpZiAoIXR5cGVMaXN0SW5pdGlhbGl6
ZWQpIHsKQEAgLTEyODUsNyArMTI4NSw3IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gbWltZUNv
bW1vblR5cGVzQ2FjaGUoKQogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IG1pbWVNb2Rlcm5UeXBl
c0NhY2hlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxT
dHJpbmc+LCBjYWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0
cmluZz4+IGNhY2hlOwogICAgIHN0YXRpYyBib29sIHR5cGVMaXN0SW5pdGlhbGl6ZWQgPSBmYWxz
ZTsKICAgICAKICAgICBpZiAoIXR5cGVMaXN0SW5pdGlhbGl6ZWQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHAKaW5kZXggZjk2YmZhZi4uYzlmMGUyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHAKQEAgLTI2LDExICsyNiwxMyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgogCisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IEN1cnNvciYgY3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQ3Vyc29yLCBjdXJzb3IsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQ3Vyc29yPiBjdXJzb3I7CiAgICAgcmV0dXJuIGN1cnNvcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxl
cklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1v
cnlIYW5kbGVySU9TLmNwcAppbmRleCBkZTdiNGUwLi41YzM2NjNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlI
YW5kbGVySU9TLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiVGlsZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03OSw3ICs4MCw3
IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyOjp0cmltVW5wYXJlbnRlZFRpbGVz
VG9UYXJnZXQoaW50IHRhcmdldCkKIAogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyJiB0aWxl
Q29udHJvbGxlck1lbW9yeUhhbmRsZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIsIHN0YXRpY1RpbGVDb250cm9sbGVy
TWVtb3J5SGFuZGxlciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaWxlQ29udHJv
bGxlck1lbW9yeUhhbmRsZXI+IHN0YXRpY1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjsKICAg
ICByZXR1cm4gc3RhdGljVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KaW5k
ZXggYmUwZGMxNS4uMzg3NTUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgY29u
c3QgZG91YmxlIGtHcmF2aXR5ID0gOS44MDY2NTsKIAogKyAoV2ViQ29yZU1vdGlvbk1hbmFnZXIg
KilzaGFyZWRNYW5hZ2VyCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFJl
dGFpblB0cjxXZWJDb3JlTW90aW9uTWFuYWdlcj4sIHNoYXJlZE1vdGlvbk1hbmFnZXIsIChbW1dl
YkNvcmVNb3Rpb25NYW5hZ2VyIGFsbG9jXSBpbml0XSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8V2ViQ29yZU1vdGlvbk1hbmFnZXI+PiBzaGFyZWRNb3Rpb25NYW5hZ2Vy
KFtbV2ViQ29yZU1vdGlvbk1hbmFnZXIgYWxsb2NdIGluaXRdKTsKICAgICByZXR1cm4gc2hhcmVk
TW90aW9uTWFuYWdlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
Lm1tCmluZGV4IDA5ZmI4MjkuLmUzYWQzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQubW0KQEAgLTE1Niw4ICsxNTYsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdAogICAg
ICAgICBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZTsKIAogICAgICAgICBpZiAobV92aWRlb0Vs
ZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpIHsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFpcnBsYXksIChBU0NJSUxpdGVyYWwoImFpcnBsYXki
KSkpOwotICAgICAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
dHZvdXQsIChBU0NJSUxpdGVyYWwoInR2b3V0IikpKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGFpcnBsYXkoQVNDSUlMaXRlcmFsKCJhaXJwbGF5IikpOworICAg
ICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFs
KCJ0dm91dCIpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgU3RyaW5nIHR5cGUgPSBtX3Zp
ZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCk7CiAg
ICAgICAgICAgICBpZiAodHlwZSA9PSBhaXJwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcAppbmRleCAwZmI4
YWU5Li5kM2E2ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dLQ29udGVudE9ic2VydmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMg
SGFzaE1hcDx2b2lkICosIHZvaWQgKj4gKiBXZWJUaHJlYWRHZXRPYnNlcnZlZENvbnRlbnRNb2Rp
ZmllcnMoKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPHZvaWQgKiwgdm9pZCAqPiBWb2lkVm9pZE1hcDsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVm9pZFZvaWRNYXAsIG9ic2VydmVkQ29udGVudE1v
ZGlmaWVycywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWb2lkVm9pZE1hcD4gb2Jz
ZXJ2ZWRDb250ZW50TW9kaWZpZXJzOwogICAgIHJldHVybiAmb2JzZXJ2ZWRDb250ZW50TW9kaWZp
ZXJzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0lt
YWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpp
bmRleCA0MTZkNWRkLi5mNmZjY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnSW1hZ2VNYWMubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIlJlc291cmNlUmVzcG9u
c2UuaCIKICNpbXBvcnQgIlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9ydCAiVGV4dFJ1bi5oIgor
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTYwLDcgKzE2MSw3IEBAIGNvbnN0IGZsb2F0IERyYWdMaW5rVXJsRm9udFNpemUgPSAxMDsK
IHN0YXRpYyBGb250Q2FzY2FkZSYgZm9udEZyb21OU0ZvbnQoTlNGb250ICpmb250KQogewogICAg
IHN0YXRpYyBOU0ZvbnQgKmN1cnJlbnRGb250OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChGb250Q2FzY2FkZSwgY3VycmVudFJlbmRlcmVyLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlPiBjdXJyZW50UmVuZGVyZXI7CiAgICAgCiAgICAgaWYg
KFtmb250IGlzRXF1YWw6Y3VycmVudEZvbnRdKQogICAgICAgICByZXR1cm4gY3VycmVudFJlbmRl
cmVyOwpAQCAtMTY4LDcgKzE2OSw3IEBAIHN0YXRpYyBGb250Q2FzY2FkZSYgZm9udEZyb21OU0Zv
bnQoTlNGb250ICpmb250KQogICAgICAgICBDRlJlbGVhc2UoY3VycmVudEZvbnQpOwogICAgIGN1
cnJlbnRGb250ID0gZm9udDsKICAgICBDRlJldGFpbihjdXJyZW50Rm9udCk7Ci0gICAgY3VycmVu
dFJlbmRlcmVyID0gRm9udENhc2NhZGUoRm9udFBsYXRmb3JtRGF0YSh0b0NURm9udChmb250KSwg
W2ZvbnQgcG9pbnRTaXplXSkpOworICAgIGN1cnJlbnRSZW5kZXJlci5nZXQoKSA9IEZvbnRDYXNj
YWRlKEZvbnRQbGF0Zm9ybURhdGEodG9DVEZvbnQoZm9udCksIFtmb250IHBvaW50U2l6ZV0pKTsK
ICAgICByZXR1cm4gY3VycmVudFJlbmRlcmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW0KaW5kZXggYThlNmExMS4uOGNkOTczYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiU2Nyb2xs
Vmlldy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8Q2Fy
Ym9uL0NhcmJvbi5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKIHN0YXRpYyBOU1JlY3QgZm9jdXNSaW5nQ2xpcFJlY3Q7CkBA
IC0xMzIsOCArMTMzLDggQEAgZW51bSB7CiAKIFRoZW1lKiBwbGF0Zm9ybVRoZW1lKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVGhlbWVNYWMsIHRoZW1lTWFjLCAoKSk7
Ci0gICAgcmV0dXJuICZ0aGVtZU1hYzsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGhlbWVN
YWM+IHRoZW1lTWFjOworICAgIHJldHVybiAmdGhlbWVNYWMuZ2V0KCk7CiB9CiAKIC8vIEhlbHBl
ciBmdW5jdGlvbnMgdXNlZCBieSBhIGJ1bmNoIG9mIGRpZmZlcmVudCBjb250cm9sIHBhcnRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCmluZGV4IDM2ODY0NTIu
LmMyODRhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRD
aGVjay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW0K
QEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIlRocmVhZENoZWNrLmgiCiAKICNpbXBvcnQgPHd0
Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAg
LTk4LDEyICs5OSwxMiBAQCB2b2lkIFdlYkNvcmVSZXBvcnRUaHJlYWRWaW9sYXRpb24oY29uc3Qg
Y2hhciogZnVuY3Rpb24sIFdlYkNvcmU6OlRocmVhZFZpb2xhdGlvbgogICAgIGlmIChyb3VuZCA+
PSBNYXhpbXVtVGhyZWFkVmlvbGF0aW9uUm91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4sIGxvZ2dlZEZ1bmN0
aW9ucywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGxv
Z2dlZEZ1bmN0aW9uczsKICAgICBzd2l0Y2ggKHRocmVhZFZpb2xhdGlvbkJlaGF2aW9yW3JvdW5k
XSkgewogICAgICAgICBjYXNlIE5vVGhyZWFkQ2hlY2s6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBMb2dPbkZpcnN0VGhyZWFkVmlvbGF0aW9uOgotICAgICAgICAgICAgaWYgKGxv
Z2dlZEZ1bmN0aW9ucy5hZGQoZnVuY3Rpb24pLmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgIGlm
IChsb2dnZWRGdW5jdGlvbnMuZ2V0KCkuYWRkKGZ1bmN0aW9uKS5pc05ld0VudHJ5KSB7CiAgICAg
ICAgICAgICAgICAgTlNMb2coQCJXZWJLaXQgVGhyZWFkaW5nIFZpb2xhdGlvbiAtICVzIGNhbGxl
ZCBmcm9tIHNlY29uZGFyeSB0aHJlYWQiLCBmdW5jdGlvbik7CiAgICAgICAgICAgICAgICAgTlNM
b2coQCJBZGRpdGlvbmFsIHRocmVhZGluZyB2aW9sYXRpb25zIGZvciB0aGlzIGZ1bmN0aW9uIHdp
bGwgbm90IGJlIGxvZ2dlZC4iKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5oCmluZGV4IGI4ZTQ0Y2IuLjc5NmMxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdENsaWVudC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
ICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUzLDYgKzU0LDcgQEAgcHJp
dmF0ZToKIH07CiAKIGNsYXNzIEFWQ2FwdHVyZURldmljZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMg
Q2FwdHVyZURldmljZU1hbmFnZXIgeworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyPjsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxDYXB0
dXJlRGV2aWNlSW5mbz4mIGNhcHR1cmVEZXZpY2VMaXN0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggNTdkMjE2MC4uNzNjMzE4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmlj
ZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTIwOSw3ICsyMDksNyBAQCBib29sIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmlzQXZhaWxhYmxlKCkKIAogQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ciYgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQVZDYXB0dXJlRGV2aWNlTWFuYWdlciwgbWFuYWdlciwgKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyPiBtYW5h
Z2VyOwogICAgIHJldHVybiBtYW5hZ2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5jcHAKaW5kZXggYjQ5ZDFmNi4uNjNjOGVlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtNDQsNyArNDQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyJiBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpwbGF0Zm9ybUNlbnRlcigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYywgY2VudGVyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM+IGNlbnRlcjsKICAgICByZXR1cm4gY2VudGVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrQm94LmNwcAppbmRleCBhZWMwNDVjLi4zMTAyODAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9EYXRhVmlldy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSW50OEFycmF5Lmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Niw3ICs3Nyw3IEBAIE1vY2tUcmFja0Jv
eDo6TW9ja1RyYWNrQm94KEFycmF5QnVmZmVyKiBkYXRhKQogCiBjb25zdCBTdHJpbmcmIE1vY2tU
cmFja0JveDo6dHlwZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgdHJhaywgKEFTQ0lJTGl0ZXJhbCgidHJhayIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gdHJhayhBU0NJSUxpdGVyYWwoInRyYWsiKSk7CiAgICAgcmV0dXJuIHRy
YWs7CiB9CiAKQEAgLTEwNSw3ICsxMDYsNyBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJ
bml0aWFsaXphdGlvbkJveChBcnJheUJ1ZmZlciogZGF0YSkKIAogY29uc3QgU3RyaW5nJiBNb2Nr
SW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGluaXQsIChBU0NJSUxpdGVyYWwoImluaXQiKSkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGluaXQoQVNDSUlMaXRlcmFsKCJpbml0IikpOwogICAg
IHJldHVybiBpbml0OwogfQogCkBAIC0xMzMsNyArMTM0LDcgQEAgTW9ja1NhbXBsZUJveDo6TW9j
a1NhbXBsZUJveChBcnJheUJ1ZmZlciogZGF0YSkKIAogY29uc3QgU3RyaW5nJiBNb2NrU2FtcGxl
Qm94Ojp0eXBlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBzbXBsLCAoQVNDSUlMaXRlcmFsKCJzbXBsIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBzbXBsKEFTQ0lJTGl0ZXJhbCgic21wbCIpKTsKICAgICByZXR1cm4gc21wbDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNw
cAppbmRleCA3N2E3MWUzLi44MDRjYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNv
bnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAg
LTM2NSwxNCArMzY2LDE0IEBAIHZvaWQgZmluZENoYXJzZXRJbk1lZGlhVHlwZShjb25zdCBTdHJp
bmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgaW50JiBjaGFyc2V0UG9zLCB1CiAKIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcGFyc2VYU1NQcm90ZWN0aW9uSGVh
ZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24sIHVuc2lnbmVk
JiBmYWlsdXJlUG9zaXRpb24sIFN0cmluZyYgcmVwb3J0VVJMKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkVG9nZ2xlLCAo
QVNDSUlMaXRlcmFsKCJleHBlY3RlZCAwIG9yIDEiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkU2VwYXJhdG9yLCAoQVND
SUlMaXRlcmFsKCJleHBlY3RlZCBzZW1pY29sb24iKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkRXF1YWxzLCAoQVNDSUlM
aXRlcmFsKCJleHBlY3RlZCBlcXVhbHMgc2lnbiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRNb2RlLCAoQVNDSUlMaXRl
cmFsKCJpbnZhbGlkIG1vZGUgZGlyZWN0aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZFJlcG9ydCwgKEFTQ0lJTGl0
ZXJhbCgiaW52YWxpZCByZXBvcnQgZGlyZWN0aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uRHVwbGljYXRlTW9kZSwgKEFTQ0lJ
TGl0ZXJhbCgiZHVwbGljYXRlIG1vZGUgZGlyZWN0aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uRHVwbGljYXRlUmVwb3J0LCAo
QVNDSUlMaXRlcmFsKCJkdXBsaWNhdGUgcmVwb3J0IGRpcmVjdGl2ZSIpKSk7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWREaXJl
Y3RpdmUsIChBU0NJSUxpdGVyYWwoInVucmVjb2duaXplZCBkaXJlY3RpdmUiKSkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkVG9nZ2xlKEFT
Q0lJTGl0ZXJhbCgiZXhwZWN0ZWQgMCBvciAxIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkU2VwYXJhdG9yKEFTQ0lJTGl0ZXJhbCgiZXhw
ZWN0ZWQgc2VtaWNvbG9uIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZh
aWx1cmVSZWFzb25JbnZhbGlkRXF1YWxzKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgZXF1YWxzIHNp
Z24iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNvbklu
dmFsaWRNb2RlKEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBtb2RlIGRpcmVjdGl2ZSIpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZFJlcG9ydChB
U0NJSUxpdGVyYWwoImludmFsaWQgcmVwb3J0IGRpcmVjdGl2ZSIpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uRHVwbGljYXRlTW9kZShBU0NJSUxpdGVy
YWwoImR1cGxpY2F0ZSBtb2RlIGRpcmVjdGl2ZSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uRHVwbGljYXRlUmVwb3J0KEFTQ0lJTGl0ZXJhbCgiZHVw
bGljYXRlIHJlcG9ydCBkaXJlY3RpdmUiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gZmFpbHVyZVJlYXNvbkludmFsaWREaXJlY3RpdmUoQVNDSUlMaXRlcmFsKCJ1bnJlY29n
bml6ZWQgZGlyZWN0aXZlIikpOwogCiAgICAgdW5zaWduZWQgcG9zID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCA1
YTNkZDM4Li4wYTBhMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw3ICs0OSw3IEBAIHN0YXRpYyBCdWls
dGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3Rvck1hcCYgYnVpbHRpblJlc291cmNlSGFuZGxlQ29u
c3RydWN0b3JNYXAoCiAjZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAjZW5kaWYK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQnVpbHRpblJlc291cmNlSGFuZGxl
Q29uc3RydWN0b3JNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCdWls
dGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3Rvck1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9
CiAKQEAgLTYxLDcgKzYyLDcgQEAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVzb3Vy
Y2VIYW5kbGU6OkJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcj4gQnVpbHRpblIKIHN0YXRpYyBCdWls
dGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCYgYnVpbHRpblJlc291cmNlSGFu
ZGxlU3luY2hyb25vdXNMb2FkZXJNYXAoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEJ1aWx0aW5SZXNvdXJjZUhhbmRs
ZVN5bmNocm9ub3VzTG9hZGVyTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXA+IG1hcDsKICAgICBy
ZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCBlYzc1ZWRlLi45NGVkMDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTgzLDE0ICs4MywxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGFsbG93c0FueUhUVFBTQ2VydGlmaWNh
dGVIb3N0cygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8
U3RyaW5nPiwgaG9zdHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxT
dHJpbmc+PiBob3N0czsKICAgICByZXR1cm4gaG9zdHM7CiB9CiAKIHN0YXRpYyBIYXNoTWFwPFN0
cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4+JiBjbGllbnRDZXJ0cygpCiB7CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4+IENlcnRzTWFwOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDZXJ0c01hcCwgY2VydHMsICgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q2VydHNNYXA+IGNlcnRzOwogICAgIHJldHVybiBjZXJ0czsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJp
bmdLZXllZE1SVUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0
cmluZ0tleWVkTVJVQ2FjaGUuaAppbmRleCA5YTUzY2E2Li5kODkyZTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZ0tleWVkTVJVQ2Fj
aGUuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hl
X2gKICNkZWZpbmUgQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZV9oCiAKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgVCBnZXQo
Y29uc3QgQXRvbWljU3RyaW5nJiBrZXkpCiAgICAgewogICAgICAgICBpZiAoa2V5LmlzTnVsbCgp
KSB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVCwgdmFsdWVG
b3JOdWxsLCAoY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkpKTsKKyAgICAgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxUPiB2YWx1ZUZvck51bGwoY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTnVsbDsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAppbmRleCA0MGI4
YmU5Li42MGIyZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2Nm
L0h5cGhlbmF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2Yv
SHlwaGVuYXRpb25DRi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUmV0YWluUHRyPENGTG9jYWxlUmVm
PiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+OjpjcmVh
dGUKIAogc3RhdGljIEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxl
UmVmPj4mIGNmTG9jYWxlQ2FjaGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+LCBj
YWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmdLZXllZE1S
VUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDc0ZTA1
NzIuLmIyOGExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApA
QCAtMTY2MCw4ICsxNjYwLDggQEAgUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpibG9ja0VsZW1l
bnRDb250aW51YXRpb24oKSBjb25zdAogICAgIAogc3RhdGljIENvbnRpbnVhdGlvbk91dGxpbmVU
YWJsZU1hcCogY29udGludWF0aW9uT3V0bGluZVRhYmxlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ29udGludWF0aW9uT3V0bGluZVRhYmxlTWFwLCB0YWJsZSwgKCkp
OwotICAgIHJldHVybiAmdGFibGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnRpbnVh
dGlvbk91dGxpbmVUYWJsZU1hcD4gdGFibGU7CisgICAgcmV0dXJuICZ0YWJsZS5nZXQoKTsKIH0K
IAogdm9pZCBSZW5kZXJCbG9jazo6YWRkQ29udGludWF0aW9uV2l0aE91dGxpbmUoUmVuZGVySW5s
aW5lKiBmbG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmlu
ZGV4IGM3NDU2MzkuLjQwM2NhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291
bnRlck5vZGUoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmkKIAog
c3RhdGljIENvdW50ZXJNYXBzJiBjb3VudGVyTWFwcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKENvdW50ZXJNYXBzLCBzdGF0aWNDb3VudGVyTWFwcywgKCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb3VudGVyTWFwcz4gc3RhdGljQ291bnRlck1hcHM7CiAg
ICAgcmV0dXJuIHN0YXRpY0NvdW50ZXJNYXBzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IGQ5
M2IzZWQuLmFmY2RiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC05ODcsOCArOTg3LDggQEAgdm9p
ZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJdGVy
YXRvciYgaXRlcmF0b3IsIGJvb2wKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGNv
bnN0IFVDaGFyIGVsbGlwc2lzQW5kU3BhY2VbMl0gPSB7IGhvcml6b250YWxFbGxpcHNpcywgJyAn
IH07Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGVsbGlwc2lzQW5kU3BhY2VTdHIsIChlbGxpcHNpc0FuZFNwYWNlLCAyKSk7Ci0gICAgICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGVsbGlwc2lzU3RyLCAo
Jmhvcml6b250YWxFbGxpcHNpcywgMSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBlbGxpcHNpc0FuZFNwYWNlU3RyKGVsbGlwc2lzQW5kU3BhY2UsIDIpOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbGxpcHNpc1N0cigm
aG9yaXpvbnRhbEVsbGlwc2lzLCAxKTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVT
dHlsZSA9IG51bVZpc2libGVMaW5lcyA9PSAxID8gZmlyc3RMaW5lU3R5bGUoKSA6IHN0eWxlKCk7
CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gbGluZVN0eWxlLmZvbnRDYXNjYWRl
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDI1MWIw
ZWUuLmVhMzc5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtMzYzMywxMiArMzYzMywxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNp
emVySW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdQogICAgIFJlZlB0
cjxJbWFnZT4gcmVzaXplQ29ybmVySW1hZ2U7CiAgICAgRmxvYXRTaXplIGNvcm5lclJlc2l6ZXJT
aXplOwogICAgIGlmIChyZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSA+
PSAyKSB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChJbWFnZSosIHJl
c2l6ZUNvcm5lckltYWdlSGlSZXMsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRB
cmVhUmVzaXplQ29ybmVyQDJ4IikubGVha1JlZigpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IHJlc2l6ZUNvcm5lckltYWdlSGlSZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJlc2l6ZUNvcm5lckltYWdlID0gcmVzaXplQ29ybmVySW1hZ2VIaVJlczsKICAgICAgICAgY29y
bmVyUmVzaXplclNpemUgPSByZXNpemVDb3JuZXJJbWFnZS0+c2l6ZSgpOwogICAgICAgICBjb3Ju
ZXJSZXNpemVyU2l6ZS5zY2FsZSgwLjVmKTsKICAgICB9IGVsc2UgewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSW1hZ2UqLCByZXNpemVDb3JuZXJJbWFnZUxvUmVzLCAo
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lciIpLmxlYWtS
ZWYoKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3Ju
ZXJJbWFnZUxvUmVzKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVD
b3JuZXIiKS5sZWFrUmVmKCkpOwogICAgICAgICByZXNpemVDb3JuZXJJbWFnZSA9IHJlc2l6ZUNv
cm5lckltYWdlTG9SZXM7CiAgICAgICAgIGNvcm5lclJlc2l6ZXJTaXplID0gcmVzaXplQ29ybmVy
SW1hZ2UtPnNpemUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclRoZW1lLmNwcAppbmRleCA1NGZlYTBjLi4xNjkyZGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTI2
LDE0ICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9s
bGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNjcm9sbGJhclRoZW1lKiBSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhlbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChSZW5kZXJTY3JvbGxiYXJUaGVtZSwgdGhlbWUsICgpKTsKLSAgICByZXR1cm4g
JnRoZW1lOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW5kZXJTY3JvbGxiYXJUaGVtZT4g
dGhlbWU7CisgICAgcmV0dXJuICZ0aGVtZS5nZXQoKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXImIHNjcm9sbGJhciwg
aW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCmluZGV4IGM2OGJjOGMuLjNhYjlhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtNjgsNyArNjgsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgQ29sb3ImIGN1c3RvbUZvY3VzUmluZ0NvbG9yKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGNvbG9yLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbG9yPiBjb2xvcjsKICAgICByZXR1cm4gY29sb3I7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggZTQ5
NDcxMy4uOTI0ZWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdW5zaWduZWQgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3Bl
bnNpb25TY29wZTo6c193aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ28KIAogV2lkZ2V0SGll
cmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6V2lkZ2V0VG9QYXJlbnRNYXAmIFdpZGdldEhp
ZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OndpZGdldE5ld1BhcmVudE1hcCgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFdpZGdldFRvUGFyZW50TWFwLCBtYXAs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2lkZ2V0VG9QYXJlbnRNYXA+IG1hcDsK
ICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCmluZGV4IDkxMmFhNWMuLjM5NTY0YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUgIlNoYXBl
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzAsNyArMTMxLDcgQEAgcHJpdmF0
ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjp1bmlxdWVfcHRy
PFNoYXBlT3V0c2lkZUluZm8+PiBJbmZvTWFwOwogICAgIHN0YXRpYyBJbmZvTWFwJiBpbmZvTWFw
KCkKICAgICB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChJbmZvTWFw
LCBzdGF0aWNJbmZvTWFwLCAoKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbmZv
TWFwPiBzdGF0aWNJbmZvTWFwOwogICAgICAgICByZXR1cm4gc3RhdGljSW5mb01hcDsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmlu
ZGV4IDY1OGRlZDUuLjBiZDlhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTI0OCw4ICsxMjQ4LDggQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBSZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGh5
cGhlbmF0aW9uU3RyaW5nOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGRlcGVuZCBvbiBs
b2NhbGUuCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
aHlwaGVuTWludXNTdHJpbmcsICgmaHlwaGVuTWludXMsIDEpKTsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBoeXBoZW5TdHJpbmcsICgmaHlwaGVuLCAx
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaHlwaGVuTWludXNT
dHJpbmcoJmh5cGhlbk1pbnVzLCAxKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBoeXBoZW5TdHJpbmcoJmh5cGhlbiwgMSk7CiAgICAgcmV0dXJuIGZvbnRDYXNjYWRl
KCkucHJpbWFyeUZvbnQoKS5nbHlwaEZvckNoYXJhY3RlcihoeXBoZW4pID8gaHlwaGVuU3RyaW5n
IDogaHlwaGVuTWludXNTdHJpbmc7CiB9CiAKQEAgLTEyNjEsMjggKzEyNjEsMjggQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzTWFya1N0cmluZygpIGNvbnN0
CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQ3VzdG9tOgogICAgICAgICByZXR1cm4gdGV4dEVt
cGhhc2lzQ3VzdG9tTWFyaygpOwogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0RvdDogewotICAg
ICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWxsZWRE
b3RTdHJpbmcsICgmYnVsbGV0LCAxKSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIG9wZW5Eb3RTdHJpbmcsICgmd2hpdGVCdWxsZXQsIDEpKTsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkRG90U3Ry
aW5nKCZidWxsZXQsIDEpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBvcGVuRG90U3RyaW5nKCZ3aGl0ZUJ1bGxldCwgMSk7CiAgICAgICAgIHJldHVybiB0ZXh0
RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZERvdFN0cmlu
ZyA6IG9wZW5Eb3RTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0NpcmNs
ZTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBmaWxsZWRDaXJjbGVTdHJpbmcsICgmYmxhY2tDaXJjbGUsIDEpKTsKLSAgICAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb3BlbkNpcmNsZVN0cmluZywg
KCZ3aGl0ZUNpcmNsZSwgMSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBmaWxsZWRDaXJjbGVTdHJpbmcoJmJsYWNrQ2lyY2xlLCAxKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlbkNpcmNsZVN0cmluZygmd2hpdGVD
aXJjbGUsIDEpOwogICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBo
YXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWRDaXJjbGVTdHJpbmcgOiBvcGVuQ2lyY2xlU3RyaW5nOwog
ICAgIH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3VibGVDaXJjbGU6IHsKLSAgICAgICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVkRG91Ymxl
Q2lyY2xlU3RyaW5nLCAoJmZpc2hleWUsIDEpKTsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb3BlbkRvdWJsZUNpcmNsZVN0cmluZywgKCZidWxs
c2V5ZSwgMSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBm
aWxsZWREb3VibGVDaXJjbGVTdHJpbmcoJmZpc2hleWUsIDEpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVuRG91YmxlQ2lyY2xlU3RyaW5nKCZidWxsc2V5
ZSwgMSk7CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lz
RmlsbEZpbGxlZCA/IGZpbGxlZERvdWJsZUNpcmNsZVN0cmluZyA6IG9wZW5Eb3VibGVDaXJjbGVT
dHJpbmc7CiAgICAgfQogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1RyaWFuZ2xlOiB7Ci0gICAg
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpbGxlZFRy
aWFuZ2xlU3RyaW5nLCAoJmJsYWNrVXBQb2ludGluZ1RyaWFuZ2xlLCAxKSk7Ci0gICAgICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9wZW5UcmlhbmdsZVN0
cmluZywgKCZ3aGl0ZVVwUG9pbnRpbmdUcmlhbmdsZSwgMSkpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxsZWRUcmlhbmdsZVN0cmluZygmYmxhY2tVcFBv
aW50aW5nVHJpYW5nbGUsIDEpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBvcGVuVHJpYW5nbGVTdHJpbmcoJndoaXRlVXBQb2ludGluZ1RyaWFuZ2xlLCAxKTsK
ICAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmls
bGVkID8gZmlsbGVkVHJpYW5nbGVTdHJpbmcgOiBvcGVuVHJpYW5nbGVTdHJpbmc7CiAgICAgfQog
ICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTogewotICAgICAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWxsZWRTZXNhbWVTdHJpbmcsICgmc2Vz
YW1lRG90LCAxKSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG9wZW5TZXNhbWVTdHJpbmcsICgmd2hpdGVTZXNhbWVEb3QsIDEpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkU2VzYW1lU3RyaW5n
KCZzZXNhbWVEb3QsIDEpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBvcGVuU2VzYW1lU3RyaW5nKCZ3aGl0ZVNlc2FtZURvdCwgMSk7CiAgICAgICAgIHJldHVy
biB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZFNl
c2FtZVN0cmluZyA6IG9wZW5TZXNhbWVTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgVGV4dEVtcGhh
c2lzTWFya0F1dG86CkBAIC0xMjk3LDEzICsxMjk3LDEzIEBAIGNvbnN0IEF0b21pY1N0cmluZyYg
UmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSBjb25zdAogI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkKIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIFJl
bmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4sIGVtcHR5TGlz
dCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3R5bGVEYXNoYm9hcmRS
ZWdpb24+PiBlbXB0eUxpc3Q7CiAgICAgcmV0dXJuIGVtcHR5TGlzdDsKIH0KIAogY29uc3QgVmVj
dG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdp
b25zKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0eWxl
RGFzaGJvYXJkUmVnaW9uPiwgbm9uZUxpc3QsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPj4gbm9uZUxpc3Q7CiAgICAgc3RhdGljIGJv
b2wgbm9uZUxpc3RJbml0aWFsaXplZCA9IGZhbHNlOwogCiAgICAgaWYgKCFub25lTGlzdEluaXRp
YWxpemVkKSB7CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9h
cmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKQogICAgICAgICBy
ZWdpb24ub2Zmc2V0LmJvdHRvbSgpID0gTGVuZ3RoKCk7CiAgICAgICAgIHJlZ2lvbi5vZmZzZXQu
bGVmdCgpID0gTGVuZ3RoKCk7CiAgICAgICAgIHJlZ2lvbi50eXBlID0gU3R5bGVEYXNoYm9hcmRS
ZWdpb246Ok5vbmU7Ci0gICAgICAgIG5vbmVMaXN0LmFwcGVuZChyZWdpb24pOworICAgICAgICBu
b25lTGlzdC5nZXQoKS5hcHBlbmQocmVnaW9uKTsKICAgICAgICAgbm9uZUxpc3RJbml0aWFsaXpl
ZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiBub25lTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNjU4NWM2ZS4uMzZiZDlmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTY5LDYg
KzY5LDcgQEAKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiVW5p
Y29kZUJpZGkuaCIKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTIwMDgsNyArMjAwOSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbENvbHVtbkNvdW50KCkg
eyByZXR1cm4gMTsgfQogICAgIHN0YXRpYyBDb2x1bW5GaWxsIGluaXRpYWxDb2x1bW5GaWxsKCkg
eyByZXR1cm4gQ29sdW1uRmlsbEJhbGFuY2U7IH0KICAgICBzdGF0aWMgQ29sdW1uU3BhbiBpbml0
aWFsQ29sdW1uU3BhbigpIHsgcmV0dXJuIENvbHVtblNwYW5Ob25lOyB9Ci0gICAgc3RhdGljIGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGluaXRpYWxUcmFuc2Zvcm0oKSB7IERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChUcmFuc2Zvcm1PcGVyYXRpb25zLCBvcHMsICgpKTsgcmV0dXJu
IG9wczsgfQorICAgIHN0YXRpYyBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBpbml0aWFsVHJh
bnNmb3JtKCkgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VHJhbnNmb3JtT3BlcmF0aW9ucz4gb3Bz
OyByZXR1cm4gb3BzOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2lu
WCgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgTGVuZ3Ro
IGluaXRpYWxUcmFuc2Zvcm1PcmlnaW5ZKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjBmLCBQZXJjZW50
KTsgfQogICAgIHN0YXRpYyBFUG9pbnRlckV2ZW50cyBpbml0aWFsUG9pbnRlckV2ZW50cygpIHsg
cmV0dXJuIFBFX0FVVE87IH0KQEAgLTIxMTQsOSArMjExNSw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgaW5pdGlhbERhc2hib2FyZFJl
Z2lvbnMoKTsKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYg
bm9uZURhc2hib2FyZFJlZ2lvbnMoKTsKICNlbmRpZgotICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiBpbml0aWFsRmlsdGVyKCkgeyBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoRmlsdGVyT3BlcmF0aW9ucywgb3BzLCAoKSk7IHJldHVybiBvcHM7IH0KKyAgICBzdGF0aWMg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgaW5pdGlhbEZpbHRlcigpIHsgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEZpbHRlck9wZXJhdGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQogI2lmIEVOQUJMRShG
SUxURVJTX0xFVkVMXzIpCi0gICAgc3RhdGljIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGluaXRp
YWxCYWNrZHJvcEZpbHRlcigpIHsgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZpbHRl
ck9wZXJhdGlvbnMsIG9wcywgKCkpOyByZXR1cm4gb3BzOyB9CisgICAgc3RhdGljIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGluaXRpYWxCYWNrZHJvcEZpbHRlcigpIHsgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEZpbHRlck9wZXJhdGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQogI2VuZGlmCiAjaWYg
RU5BQkxFKENTU19DT01QT1NJVElORykKICAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRpYWxCbGVu
ZE1vZGUoKSB7IHJldHVybiBCbGVuZE1vZGVOb3JtYWw7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCmluZGV4IDNiZTFkN2IuLmVjMmUyODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApAQCAt
MTMxLDE1ICsxMzEsMTUgQEAgYm9vbCBSZW5kZXJTVkdQYXRoOjpzaG91bGRTdHJva2VaZXJvTGVu
Z3RoU3VicGF0aCgpIGNvbnN0CiAKIFBhdGgqIFJlbmRlclNWR1BhdGg6Onplcm9MZW5ndGhMaW5l
Y2FwUGF0aChjb25zdCBGbG9hdFBvaW50JiBsaW5lY2FwUG9zaXRpb24pIGNvbnN0CiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFBhdGgsIHRlbXBQYXRoLCAoKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFBhdGg+IHRlbXBQYXRoOwogCi0gICAgdGVtcFBhdGguY2xl
YXIoKTsKKyAgICB0ZW1wUGF0aC5nZXQoKS5jbGVhcigpOwogICAgIGlmIChzdHlsZSgpLnN2Z1N0
eWxlKCkuY2FwU3R5bGUoKSA9PSBTcXVhcmVDYXApCi0gICAgICAgIHRlbXBQYXRoLmFkZFJlY3Qo
emVyb0xlbmd0aFN1YnBhdGhSZWN0KGxpbmVjYXBQb3NpdGlvbiwgdGhpcy0+c3Ryb2tlV2lkdGgo
KSkpOworICAgICAgICB0ZW1wUGF0aC5nZXQoKS5hZGRSZWN0KHplcm9MZW5ndGhTdWJwYXRoUmVj
dChsaW5lY2FwUG9zaXRpb24sIHRoaXMtPnN0cm9rZVdpZHRoKCkpKTsKICAgICBlbHNlCi0gICAg
ICAgIHRlbXBQYXRoLmFkZEVsbGlwc2UoemVyb0xlbmd0aFN1YnBhdGhSZWN0KGxpbmVjYXBQb3Np
dGlvbiwgdGhpcy0+c3Ryb2tlV2lkdGgoKSkpOworICAgICAgICB0ZW1wUGF0aC5nZXQoKS5hZGRF
bGxpcHNlKHplcm9MZW5ndGhTdWJwYXRoUmVjdChsaW5lY2FwUG9zaXRpb24sIHRoaXMtPnN0cm9r
ZVdpZHRoKCkpKTsKIAotICAgIHJldHVybiAmdGVtcFBhdGg7CisgICAgcmV0dXJuICZ0ZW1wUGF0
aC5nZXQoKTsKIH0KIAogRmxvYXRSZWN0IFJlbmRlclNWR1BhdGg6Onplcm9MZW5ndGhTdWJwYXRo
UmVjdChjb25zdCBGbG9hdFBvaW50JiBsaW5lY2FwUG9zaXRpb24sIGZsb2F0IHN0cm9rZVdpZHRo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmNwcAppbmRleCA4MjI4NTgzLi44YTFmZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMTg3LDEyICsxODcsMTIgQEAgdm9pZCBS
ZW5kZXJTVkdTaGFwZTo6bGF5b3V0KCkKIAogUGF0aCogUmVuZGVyU1ZHU2hhcGU6Om5vblNjYWxp
bmdTdHJva2VQYXRoKGNvbnN0IFBhdGgqIHBhdGgsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ry
b2tlVHJhbnNmb3JtKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChQYXRoLCB0ZW1wUGF0aCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYXRoPiB0
ZW1wUGF0aDsKIAotICAgIHRlbXBQYXRoID0gKnBhdGg7Ci0gICAgdGVtcFBhdGgudHJhbnNmb3Jt
KHN0cm9rZVRyYW5zZm9ybSk7CisgICAgdGVtcFBhdGguZ2V0KCkgPSAqcGF0aDsKKyAgICB0ZW1w
UGF0aC5nZXQoKS50cmFuc2Zvcm0oc3Ryb2tlVHJhbnNmb3JtKTsKIAotICAgIHJldHVybiAmdGVt
cFBhdGg7CisgICAgcmV0dXJuICZ0ZW1wUGF0aC5nZXQoKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdT
aGFwZTo6c2V0dXBOb25TY2FsaW5nU3Ryb2tlQ29udGV4dChBZmZpbmVUcmFuc2Zvcm0mIHN0cm9r
ZVRyYW5zZm9ybSwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciYgc3RhdGVTYXZlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDhiYzBhOTkuLjUzN2ZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjA2LDcgKzIwNiw3IEBAIHZv
aWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgUGFpCiAKIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0mIGN1cnJlbnRD
b250ZW50VHJhbnNmb3JtYXRpb24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBZmZpbmVUcmFuc2Zvcm0sIHNfY3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlvbiwgKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBZmZpbmVUcmFuc2Zvcm0+IHNfY3VycmVudENv
bnRlbnRUcmFuc2Zvcm1hdGlvbjsKICAgICByZXR1cm4gc19jdXJyZW50Q29udGVudFRyYW5zZm9y
bWF0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jlc291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
cy5jcHAKaW5kZXggZTY4Y2UzOC4uMmUxZjJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcApAQCAtNDUsNDQgKzQ1LDQ0IEBAIFNWR1Jlc291cmNl
czo6U1ZHUmVzb3VyY2VzKCkKIAogc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgY2xpcHBl
ckZpbHRlck1hc2tlclRhZ3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChIYXNoU2V0PEF0b21pY1N0cmluZz4sIHNfdGFnTGlzdCwgKCkpOwotICAgIGlmIChzX3RhZ0xp
c3QuaXNFbXB0eSgpKSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPj4gc190YWdMaXN0OworICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7
CiAgICAgICAgIC8vICJjb250YWluZXIgZWxlbWVudHMiOiBodHRwOi8vd3d3LnczLm9yZy9UUi9T
VkcxMS9pbnRyby5odG1sI1Rlcm1Db250YWluZXJFbGVtZW50CiAgICAgICAgIC8vICJncmFwaGlj
cyBlbGVtZW50cyIgOiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9pbnRyby5odG1sI1Rlcm1H
cmFwaGljc0VsZW1lbnQKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6YVRhZy5sb2Nh
bE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmNpcmNsZVRhZy5sb2Nh
bE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmVsbGlwc2VUYWcubG9j
YWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpnbHlwaFRhZy5sb2Nh
bE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmdUYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjppbWFnZVRhZy5sb2NhbE5hbWUo
KSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxOYW1lKCkp
OwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjptYXJrZXJUYWcubG9jYWxOYW1lKCkp
OwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjptYXNrVGFnLmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZy5sb2NhbE5h
bWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5Z29uVGFnLmxvY2FsTmFt
ZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWxpbmVUYWcubG9jYWxO
YW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpyZWN0VGFnLmxvY2FsTmFt
ZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6c3ZnVGFnLmxvY2FsTmFtZSgp
KTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFRhZy5sb2NhbE5hbWUoKSk7
Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnVzZVRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmFUYWcubG9jYWxOYW1lKCkpOwor
ICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpjaXJjbGVUYWcubG9jYWxOYW1l
KCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjplbGxpcHNlVGFnLmxv
Y2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6Z2x5cGhU
YWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpn
VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6
aW1hZ2VUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05h
bWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChT
VkdOYW1lczo6bWFya2VyVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgp
LmFkZChTVkdOYW1lczo6bWFza1RhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6Om1pc3NpbmdfZ2x5cGhUYWcubG9jYWxOYW1lKCkpOworICAgICAg
ICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpKTsKKyAg
ICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5hbWUo
KSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLmxv
Y2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cmVjdFRh
Zy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnN2
Z1RhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6
OnRleHRUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05h
bWVzOjp1c2VUYWcubG9jYWxOYW1lKCkpOwogCiAgICAgICAgIC8vIE5vdCBsaXN0ZWQgaW4gdGhl
IGRlZmluaXRpb25zIGlzIHRoZSBjbGlwUGF0aCBlbGVtZW50LCB0aGUgU1ZHIHNwZWMgc2F5cyB0
aG91Z2g6CiAgICAgICAgIC8vIFRoZSAiY2xpcFBhdGgiIGVsZW1lbnQgb3IgYW55IG9mIGl0cyBj
aGlsZHJlbiBjYW4gc3BlY2lmeSBwcm9wZXJ0eSAiY2xpcC1wYXRoIi4KICAgICAgICAgLy8gU28g
d2UgaGF2ZSB0byBhZGQgY2xpcFBhdGhUYWcgaGVyZSwgb3RoZXJ3aGlzZSBjbGlwLXBhdGggb24g
Y2xpcFBhdGggd2lsbCBmYWlsLgogICAgICAgICAvLyAoQWxyZWFkeSBtYWlsZWQgU1ZHIFdHLCB3
YWl0aW5nIGZvciBhIHNvbHV0aW9uKQotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpj
bGlwUGF0aFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZH
TmFtZXM6OmNsaXBQYXRoVGFnLmxvY2FsTmFtZSgpKTsKIAogICAgICAgICAvLyBOb3QgbGlzdGVk
IGluIHRoZSBkZWZpbml0aW9ucyBhcmUgdGhlIHRleHQgY29udGVudCBlbGVtZW50cywgdGhvdWdo
IGZpbHRlci9jbGlwcGVyL21hc2tlciBvbiB0c3Bhbi90ZXh0Ly4uIGlzIGFsbG93ZWQuCiAgICAg
ICAgIC8vIChBbHJlYWR5IG1haWxlZCBTVkcgV0csIHdhaXRpbmcgZm9yIGEgc29sdXRpb24pCi0g
ICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFBhdGhUYWcubG9jYWxOYW1lKCkp
OwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0cmVmVGFnLmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6dHNwYW5UYWcubG9jYWxOYW1lKCkpOwor
ICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjphbHRHbHlwaFRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRleHRQYXRoVGFn
LmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dHJl
ZlRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6
OnRzcGFuVGFnLmxvY2FsTmFtZSgpKTsKIAogICAgICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBk
ZWZpbml0aW9ucyBpcyB0aGUgZm9yZWlnbk9iamVjdCBlbGVtZW50LCBidXQgY2xpcC1wYXRoCiAg
ICAgICAgIC8vIGlzIGEgc3VwcG9ydGVkIGF0dHJpYnV0ZS4KLSAgICAgICAgc190YWdMaXN0LmFk
ZChTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFn
TGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcubG9jYWxOYW1lKCkpOwog
CiAgICAgICAgIC8vIEVsZW1lbnRzIHRoYXQgd2UgaWdub3JlLCBhcyBpdCBkb2Vzbid0IG1ha2Ug
YW55IHNlbnNlLgogICAgICAgICAvLyBkZWZzLCBwYXR0ZXJuLCBzd2l0Y2ggKEZJWE1FOiBNYWls
IFNWRyBXRyBhYm91dCB0aGVzZSkKQEAgLTk0LDEyICs5NCwxMiBAQCBzdGF0aWMgSGFzaFNldDxB
dG9taWNTdHJpbmc+JiBjbGlwcGVyRmlsdGVyTWFza2VyVGFncygpCiAKIHN0YXRpYyBIYXNoU2V0
PEF0b21pY1N0cmluZz4mIG1hcmtlclRhZ3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChIYXNoU2V0PEF0b21pY1N0cmluZz4sIHNfdGFnTGlzdCwgKCkpOwotICAgIGlm
IChzX3RhZ0xpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6
OmxpbmVUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpw
YXRoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9s
eWdvblRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBv
bHlsaW5lVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxBdG9taWNTdHJpbmc+PiBzX3RhZ0xpc3Q7CisgICAgaWYgKHNfdGFnTGlzdC5nZXQoKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6bGluZVRhZy5s
b2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBhdGhU
YWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpw
b2x5Z29uVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdO
YW1lczo6cG9seWxpbmVUYWcubG9jYWxOYW1lKCkpOwogICAgIH0KIAogICAgIHJldHVybiBzX3Rh
Z0xpc3Q7CkBAIC0xMDcsMjAgKzEwNywyMCBAQCBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+
JiBtYXJrZXJUYWdzKCkKIAogc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgZmlsbEFuZFN0
cm9rZVRhZ3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0
PEF0b21pY1N0cmluZz4sIHNfdGFnTGlzdCwgKCkpOwotICAgIGlmIChzX3RhZ0xpc3QuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLmxvY2Fs
TmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Y2lyY2xlVGFnLmxvY2Fs
TmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6ZWxsaXBzZVRhZy5sb2Nh
bE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxO
YW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFt
ZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5h
bWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLmxvY2Fs
TmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cmVjdFRhZy5sb2NhbE5h
bWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRleHRUYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0ZXh0UGF0aFRhZy5sb2NhbE5h
bWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRyZWZUYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0c3BhblRhZy5sb2NhbE5hbWUo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4gc190
YWdMaXN0OworICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNf
dGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLmxvY2FsTmFtZSgpKTsKKyAg
ICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6Y2lyY2xlVGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6ZWxsaXBzZVRhZy5sb2Nh
bE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcu
bG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwYXRo
VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6
cG9seWdvblRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZH
TmFtZXM6OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgp
LmFkZChTVkdOYW1lczo6cmVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6OnRleHRUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xp
c3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0ZXh0UGF0aFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAg
IHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRyZWZUYWcubG9jYWxOYW1lKCkpOworICAg
ICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0c3BhblRhZy5sb2NhbE5hbWUoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHNfdGFnTGlzdDsKQEAgLTEyOCwxMiArMTI4LDEyIEBAIHN0
YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGZpbGxBbmRTdHJva2VUYWdzKCkKIAogc3RhdGlj
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgY2hhaW5hYmxlUmVzb3VyY2VUYWdzKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBzX3Rh
Z0xpc3QsICgpKTsKLSAgICBpZiAoc190YWdMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICBzX3Rh
Z0xpc3QuYWRkKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmZpbHRlclRhZy5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBhdHRlcm5UYWcubG9jYWxOYW1lKCkpOwotICAg
ICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZy5sb2NhbE5hbWUo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4gc190
YWdMaXN0OworICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNf
dGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6ZmlsdGVyVGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cGF0dGVyblRh
Zy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJh
ZGlhbEdyYWRpZW50VGFnLmxvY2FsTmFtZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gc190YWdM
aXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5jcHAKaW5kZXggNTg4ZjI3Ny4uOWE2OTRkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5nbGUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTIsMTYg
KzExMywxNiBAQCBTdHJpbmcgU1ZHQW5nbGU6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewogICAg
IHN3aXRjaCAobV91bml0VHlwZSkgewogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9ERUc6IHsKLSAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZGVnU3RyaW5nLCAo
QVNDSUlMaXRlcmFsKCJkZWciKSkpOwotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgZGVnU3RyaW5nOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBkZWdTdHJpbmcoQVNDSUlMaXRlcmFsKCJkZWciKSk7CisgICAgICAg
IHJldHVybiBTdHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyBkZWdTdHJp
bmcuZ2V0KCk7CiAgICAgfQogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9SQUQ6IHsKLSAgICAgICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcmFkU3RyaW5nLCAoQVNDSUlM
aXRlcmFsKCJyYWQiKSkpOwotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMpICsgcmFkU3RyaW5nOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiByYWRTdHJpbmcoQVNDSUlMaXRlcmFsKCJyYWQiKSk7CisgICAgICAgIHJldHVy
biBTdHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyByYWRTdHJpbmcuZ2V0
KCk7CiAgICAgfQogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9HUkFEOiB7Ci0gICAgICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGdyYWRTdHJpbmcsIChBU0NJSUxpdGVy
YWwoImdyYWQiKSkpOwotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMpICsgZ3JhZFN0cmluZzsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gZ3JhZFN0cmluZyhBU0NJSUxpdGVyYWwoImdyYWQiKSk7CisgICAgICAgIHJldHVy
biBTdHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyBncmFkU3RyaW5nLmdl
dCgpOwogICAgIH0KICAgICBjYXNlIFNWR19BTkdMRVRZUEVfVU5TUEVDSUZJRUQ6CiAgICAgY2Fz
ZSBTVkdfQU5HTEVUWVBFX1VOS05PV046CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUNvbG9yRWxlbWVudC5jcHAKaW5kZXggZDQ0OTJhZC4uMGZiNmQyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcApAQCAtMzksNyArMzksNyBAQCBS
ZWY8U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudD4gU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmCiAKIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlSXNDdXJy
ZW50Q29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjdXJyZW50Q29sb3IsICgiY3VycmVudENv
bG9yIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGN1cnJlbnRDb2xvcigiY3VycmVudENv
bG9yIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHZh
bHVlID09IGN1cnJlbnRDb2xvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggNDk2YzJmMy4uNzljMDRlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0xMDgsOCArMTA4
LDggQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXQKICAgICAKIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50OjpSb3RhdGVNb2RlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3RhdGVNb2RlKCkgY29u
c3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBhdXRvVmFsLCAoImF1dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgYXV0b1JldmVyc2UsICgiYXV0by1yZXZlcnNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IGF1dG9WYWwoImF1dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBhdXRvUmV2ZXJz
ZSgiYXV0by1yZXZlcnNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiByb3RhdGUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJv
dGF0ZUF0dHIpOwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1ZhbCkKICAgICAgICAgcmV0dXJuIFJv
dGF0ZUF1dG87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKaW5k
ZXggMzQ2MjhhZC4uZWIxMjQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcApAQCAtMjg2LDEwICsyODYsMTAgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50
Ojp1cGRhdGVBbmltYXRpb25Nb2RlKCkKIAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzZXRD
YWxjTW9kZShjb25zdCBBdG9taWNTdHJpbmcmIGNhbGNNb2RlKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRpc2NyZXRlLCAoImRpc2Ny
ZXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGxpbmVhciwgKCJsaW5l
YXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgcGFjZWQsICgicGFjZWQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3BsaW5lLCAoInNwbGluZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBkaXNjcmV0ZSgiZGlzY3JldGUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBsaW5lYXIoImxpbmVhciIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNT
dHJpbmc+IHBhY2VkKCJwYWNlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNwbGluZSgi
c3BsaW5lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGNh
bGNNb2RlID09IGRpc2NyZXRlKQogICAgICAgICBzZXRDYWxjTW9kZShDYWxjTW9kZURpc2NyZXRl
KTsKICAgICBlbHNlIGlmIChjYWxjTW9kZSA9PSBsaW5lYXIpCkBAIC0zMDQsOCArMzA0LDggQEAg
dm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZShjb25zdCBBdG9taWNTdHJpbmcm
IGNhbGNNb2RlKQogCiB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnNldEF0dHJpYnV0ZVR5cGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVUeXBlKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNzcywgKCJDU1MiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgeG1sLCAoIlhNTCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiBjc3MoIkNTUyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHhtbCgi
WE1MIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGF0dHJp
YnV0ZVR5cGUgPT0gY3NzKQogICAgICAgICBtX2F0dHJpYnV0ZVR5cGUgPSBBdHRyaWJ1dGVUeXBl
Q1NTOwogICAgIGVsc2UgaWYgKGF0dHJpYnV0ZVR5cGUgPT0geG1sKQpAQCAtMzMyLDE0ICszMzIs
MTQgQEAgU3RyaW5nIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmZyb21WYWx1ZSgpIGNvbnN0CiAKIGJv
b2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBZGRpdGl2ZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VtLCAoInN1bSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzdW0oInN1bSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBmYXN0
R2V0QXR0cmlidXRlKFNWR05hbWVzOjphZGRpdGl2ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9
PSBzdW0gfHwgYW5pbWF0aW9uTW9kZSgpID09IEJ5QW5pbWF0aW9uOwogfQogCiBib29sIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OmlzQWNjdW11bGF0ZWQoKSBjb25zdAogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1bSwgKCJzdW0iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VtKCJzdW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0
dHJpYnV0ZShTVkdOYW1lczo6YWNjdW11bGF0ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBz
dW0gJiYgYW5pbWF0aW9uTW9kZSgpICE9IFRvQW5pbWF0aW9uOwogfQpAQCAtNjU2LDcgKzY1Niw3
IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YWRqdXN0Rm9ySW5oZXJpdGFuY2UoU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QKIAogc3RhdGljIGJvb2wgaW5oZXJpdHNGcm9tUHJv
cGVydHkoU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgaW5oZXJpdCwgKCJpbmhlcml0IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IGluaGVyaXQoImluaGVyaXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICAKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpIHx8IHZhbHVlICE9IGlu
aGVyaXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDFmYWVhNTMuLmRkZjkyNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNw
cApAQCAtNzUsMjUgKzc1LDI1IEBAIFJlZjxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudD4gU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpCiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhY
SWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0aFgiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJu
ZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3Ro
WSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5n
dGhZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNf
aWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudDo6b3JkZXJYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR09yZGVyWCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR09yZGVyWCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om9yZGVyWUlkZW50
aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIHNfaWRlbnRpZmllciwgKCJTVkdPcmRlclkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19p
ZGVudGlmaWVyKCJTVkdPcmRlclkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IGJhMmEzZDQuLjEyZmEw
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwCkBAIC02MywxMyArNjMsMTMgQEAgUmVmPFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGkKIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVu
aXRMZW5ndGhYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0aFgi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVu
dGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6a2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHS2VybmVs
VW5pdExlbmd0aFkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJu
ZWxVbml0TGVuZ3RoWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCBhZWUwOGRkLi5mOTNkYWNkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcApAQCAtNjIsMTMgKzYyLDEz
IEBAIFJlZjxTVkdGRURyb3BTaGFkb3dFbGVtZW50PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURy
b3BTaGFkb3dFbGVtZW50OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNW
R1N0ZERldmlhdGlvblgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdT
dGREZXZpYXRpb25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURyb3BT
aGFkb3dFbGVtZW50OjpzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1N0
ZERldmlhdGlvblkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGRE
ZXZpYXRpb25ZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCAyMmMxNzhiLi43YjIxZGU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcApAQCAtNTcsMTMgKzU3
LDEzIEBAIFJlZjxTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ+IFNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcigpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVy
LCAoIlNWR1N0ZERldmlhdGlvblgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVy
KCJTVkdTdGREZXZpYXRpb25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVyKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIs
ICgiU1ZHU3RkRGV2aWF0aW9uWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIo
IlNWR1N0ZERldmlhdGlvblkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggNTlmMDdkMi4uMzM3MGUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtNTYsMTMgKzU2
LDEzIEBAIFJlZjxTVkdGRU1vcnBob2xvZ3lFbGVtZW50PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdG
RU1vcnBob2xvZ3lFbGVtZW50OjpyYWRpdXNYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1Jh
ZGl1c1giLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdSYWRpdXNYIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRp
ZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50Ojpy
YWRpdXNZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1JhZGl1c1kiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdSYWRpdXNZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4
IGZlZjdlZWQuLjE5ZjVkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTY3LDEzICs2NywxMyBAQCBSZWY8U1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0tl
cm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZH
S2VybmVsVW5pdExlbmd0aFgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVu
dGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNf
aWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0aFkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKaW5kZXggODZkY2FmMS4uYjgw
OGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNw
cApAQCAtNjEsMTMgKzYxLDEzIEBAIFJlZjxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50PiBTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKIAogY29uc3QgQXRv
bWljU3RyaW5nJiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpiYXNlRnJlcXVlbmN5WElkZW50aWZp
ZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IHNfaWRlbnRpZmllciwgKCJTVkdCYXNlRnJlcXVlbmN5WCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBzX2lkZW50aWZpZXIoIlNWR0Jhc2VGcmVxdWVuY3lYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpiYXNlRnJlcXVlbmN5WUlkZW50aWZp
ZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IHNfaWRlbnRpZmllciwgKCJTVkdCYXNlRnJlcXVlbmN5WSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBzX2lkZW50aWZpZXIoIlNWR0Jhc2VGcmVxdWVuY3lZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCmluZGV4IGYzMmMzMmYuLjBhNzVmNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTgyLDEzICs4MiwxMyBAQCBS
ZWY8U1ZHRmlsdGVyRWxlbWVudD4gU1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvYwogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZpbHRlckVs
ZW1lbnQ6OmZpbHRlclJlc1hJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHRmlsdGVyUmVzWCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0ZpbHRlclJlc1giLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVy
OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZpbHRlckVsZW1lbnQ6OmZpbHRlclJlc1lJ
ZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHRmlsdGVyUmVzWSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBzX2lkZW50aWZpZXIoIlNWR0ZpbHRlclJlc1kiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHbHlwaE1hcC5oCmluZGV4IGI3NDdjNmQuLmNlMGI2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlw
aE1hcC5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFNWR0dseXBoJiBz
dmdHbHlwaEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFn
bHlwaCB8fCBnbHlwaCA+IG1fZ2x5cGhUYWJsZS5zaXplKCkpIHsKLSAgICAgICAgICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTVkdHbHlwaCwgZGVmYXVsdEdseXBoLCAoKSk7Cisg
ICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U1ZHR2x5cGg+IGRlZmF1bHRHbHlwaDsK
ICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0R2x5cGg7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIG1fZ2x5cGhUYWJsZVtnbHlwaCAtIDFdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xhbmdTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNw
cAppbmRleCA0OGJlMGRjLi5iNjUxODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGFuZ1NwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNw
cApAQCAtMzUsNyArMzUsNyBAQCB2b2lkIFNWR0xhbmdTcGFjZTo6c2V0WG1sbGFuZyhjb25zdCBB
dG9taWNTdHJpbmcmIHhtbExhbmcpCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0xhbmdTcGFjZTo6
eG1sc3BhY2UoKSBjb25zdAogewogICAgIGlmICghbV9zcGFjZSkgewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZWZhdWx0U3RyaW5n
LCAoImRlZmF1bHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRlZmF1bHRTdHJp
bmcoImRlZmF1bHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAg
ICAgcmV0dXJuIGRlZmF1bHRTdHJpbmc7CiAgICAgfQogCkBAIC02Miw3ICs2Miw3IEBAIGJvb2wg
U1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogICAgIAogdm9pZCBTVkdMYW5nU3BhY2U6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGFz
aFNldDxRdWFsaWZpZWROYW1lPiYgc3VwcG9ydGVkQXR0cmlidXRlcykKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4bWxQcmVmaXgsICgieG1sIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IHhtbFByZWZpeCgieG1sIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBRdWFsaWZpZWROYW1lIGxhbmdXaXRoUHJlZml4ID0g
WE1MTmFtZXM6OmxhbmdBdHRyOwogICAgIGxhbmdXaXRoUHJlZml4LnNldFByZWZpeCh4bWxQcmVm
aXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCmluZGV4IDA2Njg3ZjIu
LmRmOTZlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKQEAgLTkw
LDEzICs5MCwxMyBAQCBSZWY8U1ZHTWFya2VyRWxlbWVudD4gU1ZHTWFya2VyRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogCiBjb25zdCBBdG9taWNTdHJp
bmcmIFNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlmaWVyKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgi
U1ZHT3JpZW50VHlwZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR09y
aWVudFR5cGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gc19pZGVudGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR01hcmtlckVsZW1l
bnQ6Om9yaWVudEFuZ2xlSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR09yaWVudEFuZ2xlIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHT3JpZW50QW5nbGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVy
OwogfQogCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJv
bml6ZU9yaWVudFR5cGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgaWYgKG93bmVy
VHlwZS5tX29yaWVudFR5cGUudmFsdWUgIT0gU1ZHTWFya2VyT3JpZW50QXV0bykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgYXV0b1N0cmluZywgKCJhdXRvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1dG9TdHJpbmco
ImF1dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBvd25lclR5
cGUubV9vcmllbnRUeXBlLnN5bmNocm9uaXplKCZvd25lclR5cGUsIG9yaWVudFR5cGVQcm9wZXJ0
eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgYXV0b1N0cmluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlRWxlbWVudC5jcHAKaW5kZXggOGFjMjhkYS4uMDQ1YWU2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKQEAgLTYyLDkgKzYyLDkgQEAgdm9pZCBTVkdTdHls
ZUVsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgc2V0RGlzYWJsZWQpCiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgU1ZHU3R5bGVFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZWZhdWx0VmFsdWUsICgidGV4
dC9jc3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZGVmYXVsdFZhbHVlKCJ0ZXh0L2Nz
cyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbiA9IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6dHlwZUF0dHIpOwotICAgIHJldHVy
biBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVlIDogbjsKKyAgICByZXR1cm4gbi5pc051bGwoKSA/
IGRlZmF1bHRWYWx1ZS5nZXQoKSA6IG47CiB9CiAKIHZvaWQgU1ZHU3R5bGVFbGVtZW50OjpzZXRU
eXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC03NCw5ICs3
NCw5IEBAIHZvaWQgU1ZHU3R5bGVFbGVtZW50OjpzZXRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgRXhjZXB0aW9uQ29kZSYpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU3R5bGVFbGVt
ZW50OjptZWRpYSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgZGVmYXVsdFZhbHVlLCAoImFsbCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiBkZWZhdWx0VmFsdWUoImFsbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbiA9IGZhc3RHZXRBdHRyaWJ1
dGUoU1ZHTmFtZXM6Om1lZGlhQXR0cik7Ci0gICAgcmV0dXJuIG4uaXNOdWxsKCkgPyBkZWZhdWx0
VmFsdWUgOiBuOworICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVlLmdldCgpIDog
bjsKIH0KIAogdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnNldE1lZGlhKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcApp
bmRleCBlOGEzZjEyLi4yMTFhZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIlNWR0Fu
Z2xlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTEzNCwyNyArMTM1LDI3IEBAIGNvbnN0IFN0
cmluZyYgU1ZHVHJhbnNmb3JtOjp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyhTVkdUcmFu
c2Zvcm1UeXBlIHR5cGUpCiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1VOS05PV046CiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9NQVRSSVg6IHsK
LSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbWF0cml4U3Ry
aW5nLCAoQVNDSUlMaXRlcmFsKCJtYXRyaXgoIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gbWF0cml4U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWF0cml4KCIpKTsKICAg
ICAgICAgcmV0dXJuIG1hdHJpeFN0cmluZzsKICAgICB9CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JN
X1RSQU5TTEFURTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCB0cmFuc2xhdGVTdHJpbmcsIChBU0NJSUxpdGVyYWwoInRyYW5zbGF0ZSgiKSkpOworICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB0cmFuc2xhdGVTdHJpbmcoQVNDSUlM
aXRlcmFsKCJ0cmFuc2xhdGUoIikpOwogICAgICAgICByZXR1cm4gdHJhbnNsYXRlU3RyaW5nOwog
ICAgIH0KICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0NBTEU6IHsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc2NhbGVTdHJpbmcsIChBU0NJSUxpdGVyYWwo
InNjYWxlKCIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNjYWxl
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NhbGUoIikpOwogICAgICAgICByZXR1cm4gc2NhbGVTdHJp
bmc7CiAgICAgfQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9ST1RBVEU6IHsKLSAgICAgICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcm90YXRlU3RyaW5nLCAoQVNDSUlM
aXRlcmFsKCJyb3RhdGUoIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gcm90YXRlU3RyaW5nKEFTQ0lJTGl0ZXJhbCgicm90YXRlKCIpKTsKICAgICAgICAgcmV0dXJu
IHJvdGF0ZVN0cmluZzsKICAgICB9ICAgIAogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWDog
ewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBza2V3WFN0
cmluZywgKEFTQ0lJTGl0ZXJhbCgic2tld1goIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gc2tld1hTdHJpbmcoQVNDSUlMaXRlcmFsKCJza2V3WCgiKSk7CiAgICAg
ICAgIHJldHVybiBza2V3WFN0cmluZzsKICAgICB9CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NL
RVdZOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNr
ZXdZU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJza2V3WSgiKSkpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBza2V3WVN0cmluZyhBU0NJSUxpdGVyYWwoInNrZXdZKCIpKTsK
ICAgICAgICAgcmV0dXJuIHNrZXdZU3RyaW5nOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1ZpZXdTcGVjLmNwcAppbmRleCBhYzg2ZWUzLi4wMDk4Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdW
aWV3U3BlYy5jcHAKQEAgLTg0LDE5ICs4NCwxOSBAQCBTVkdWaWV3U3BlYzo6U1ZHVmlld1NwZWMo
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHVmll
d1NwZWM6OnZpZXdCb3hJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHVmlld1NwZWNWaWV3Qm94
QXR0cmlidXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHVmlld1Nw
ZWNWaWV3Qm94QXR0cmlidXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdW
aWV3U3BlYzo6cHJlc2VydmVBc3BlY3RSYXRpb0lkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdW
aWV3U3BlY1ByZXNlcnZlQXNwZWN0UmF0aW9BdHRyaWJ1dGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gc19pZGVudGlmaWVyKCJTVkdWaWV3U3BlY1ByZXNlcnZlQXNwZWN0UmF0aW9BdHRyaWJ1dGUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVu
dGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1ZpZXdTcGVjOjp0cmFuc2Zvcm1J
ZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHVmlld1NwZWNUcmFuc2Zvcm1BdHRyaWJ1dGUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdWaWV3U3BlY1RyYW5zZm9ybUF0
dHJpYnV0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBzX2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmlt
YXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9T
VkdTTUlMRWxlbWVudC5jcHAKaW5kZXggMzU2OGJlNC4uNDQxMGI1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTMyOSw3ICszMjks
NyBAQCBTTUlMVGltZSBTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKGNvbnN0IFN0cmlu
ZyYgZGF0YSkKICAgICAKICAgICBTdHJpbmcgcGFyc2UgPSBkYXRhLnN0cmlwV2hpdGVTcGFjZSgp
OwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgaW5kZWZpbml0ZVZhbHVlLCAoImluZGVmaW5pdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4gaW5kZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKHBhcnNlID09IGluZGVmaW5pdGVWYWx1ZSkKICAgICAg
ICAgcmV0dXJuIFNNSUxUaW1lOjppbmRlZmluaXRlKCk7CiAKQEAgLTQ1MiwxOSArNDUyLDE5IEBA
IHZvaWQgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQmVnaW5PckVuZChjb25zdCBTdHJpbmcmIHBhcnNl
U3RyaW5nLCBCZWdpbk9yRW5kIGJlZ2luCiAKIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OmlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFF1YWxpZmllZE5hbWU+LCBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLCAoKSk7Ci0gICAgaWYgKHN1cHBvcnRlZEF0dHJpYnV0ZXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjpiZWdpbkF0dHIp
OwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6ZW5kQXR0cik7Ci0g
ICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjpkdXJBdHRyKTsKLSAgICAg
ICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6OnJlcGVhdER1ckF0dHIpOwotICAg
ICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6cmVwZWF0Q291bnRBdHRyKTsK
LSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6Om1pbkF0dHIpOwotICAg
ICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6bWF4QXR0cik7Ci0gICAgICAg
IHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjphdHRyaWJ1dGVOYW1lQXR0cik7Ci0g
ICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVk
QXR0cmlidXRlczsKKyAgICBpZiAoc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmJlZ2lu
QXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpl
bmRBdHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6
OmR1ckF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1l
czo6cmVwZWF0RHVyQXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRk
KFNWR05hbWVzOjpyZXBlYXRDb3VudEF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVz
LmdldCgpLmFkZChTVkdOYW1lczo6bWluQXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0
ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjptYXhBdHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmli
dXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmF0dHJpYnV0ZU5hbWVBdHRyKTsKKyAgICAgICAgc3Vw
cG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoWExpbmtOYW1lczo6aHJlZkF0dHIpOwogICAgIH0K
LSAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNo
VHJhbnNsYXRvcj4oYXR0ck5hbWUpOworICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdl
dCgpLmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAK
IHZvaWQgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC02NDMsOCArNjQzLDggQEAgYm9v
bCBTVkdTTUlMRWxlbWVudDo6aXNGcm96ZW4oKSBjb25zdAogICAgIAogU1ZHU01JTEVsZW1lbnQ6
OlJlc3RhcnQgU1ZHU01JTEVsZW1lbnQ6OnJlc3RhcnQoKSBjb25zdAogeyAgICAKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBuZXZlciwgKCJu
ZXZlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB3aGVuTm90QWN0aXZl
LCAoIndoZW5Ob3RBY3RpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbmV2ZXIoIm5l
dmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gd2hlbk5vdEFjdGl2ZSgid2hlbk5vdEFj
dGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKFNWR05hbWVzOjpyZXN0YXJ0QXR0
cik7CiAgICAgaWYgKHZhbHVlID09IG5ldmVyKQogICAgICAgICByZXR1cm4gUmVzdGFydE5ldmVy
OwpAQCAtNjU1LDcgKzY1NSw3IEBAIFNWR1NNSUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NNSUxFbGVt
ZW50OjpyZXN0YXJ0KCkgY29uc3QKICAgICAKIFNWR1NNSUxFbGVtZW50OjpGaWxsTW9kZSBTVkdT
TUlMRWxlbWVudDo6ZmlsbCgpIGNvbnN0CiB7ICAgCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZnJlZXplLCAoImZyZWV6ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBmcmVlemUoImZyZWV6ZSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBmYXN0R2V0
QXR0cmlidXRlKFNWR05hbWVzOjpmaWxsQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09IGZyZWV6
ZSA/IEZpbGxGcmVlemUgOiBGaWxsUmVtb3ZlOwogfQpAQCAtNjg4LDcgKzY4OCw3IEBAIFNNSUxU
aW1lIFNWR1NNSUxFbGVtZW50OjpyZXBlYXRDb3VudCgpIGNvbnN0CiAgICAgaWYgKHZhbHVlLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKIAotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGluZGVmaW5p
dGVWYWx1ZSwgKCJpbmRlZmluaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGluZGVm
aW5pdGVWYWx1ZSgiaW5kZWZpbml0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIGlmICh2YWx1ZSA9PSBpbmRlZmluaXRlVmFsdWUpCiAgICAgICAgIHJldHVybiBT
TUlMVGltZTo6aW5kZWZpbml0ZSgpOwogICAgIGJvb2wgb2s7CkBAIC0xMTQzLDE2ICsxMTQzLDE2
IEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OnByb2dyZXNzKFNNSUxUaW1lIGVsYXBzZWQsIFNWR1NN
SUxFbGVtZW50KiByZXN1bHRFbGVtZW50LCBiCiB2b2lkIFNWR1NNSUxFbGVtZW50Ojpub3RpZnlE
ZXBlbmRlbnRzSW50ZXJ2YWxDaGFuZ2VkKE5ld09yRXhpc3RpbmdJbnRlcnZhbCBuZXdPckV4aXN0
aW5nKQogewogICAgIEFTU0VSVChtX2ludGVydmFsQmVnaW4uaXNGaW5pdGUoKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U1ZHU01JTEVsZW1lbnQqPiwgbG9v
cEJyZWFrZXIsICgpKTsKLSAgICBpZiAobG9vcEJyZWFrZXIuY29udGFpbnModGhpcykpCisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U1ZHU01JTEVsZW1lbnQqPj4gbG9vcEJyZWFr
ZXI7CisgICAgaWYgKGxvb3BCcmVha2VyLmdldCgpLmNvbnRhaW5zKHRoaXMpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbG9vcEJyZWFrZXIuYWRkKHRoaXMpOworICAgIGxvb3BCcmVha2VyLmdldCgp
LmFkZCh0aGlzKTsKICAgICAKICAgICBmb3IgKGF1dG8mIGRlcGVuZGVudCA6IG1fdGltZURlcGVu
ZGVudHMpIHsKICAgICAgICAgZGVwZW5kZW50LT5jcmVhdGVJbnN0YW5jZVRpbWVzRnJvbVN5bmNi
YXNlKHRoaXMsIG5ld09yRXhpc3RpbmcpOwogICAgIH0KIAotICAgIGxvb3BCcmVha2VyLnJlbW92
ZSh0aGlzKTsKKyAgICBsb29wQnJlYWtlci5nZXQoKS5yZW1vdmUodGhpcyk7CiB9CiAgICAgCiB2
b2lkIFNWR1NNSUxFbGVtZW50OjpjcmVhdGVJbnN0YW5jZVRpbWVzRnJvbVN5bmNiYXNlKFNWR1NN
SUxFbGVtZW50KiBzeW5jYmFzZSwgTmV3T3JFeGlzdGluZ0ludGVydmFsKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268563</attachid>
            <date>2016-01-08 11:43:23 -0800</date>
            <delta_ts>2016-01-08 11:57:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152902-2.diff</filename>
            <type>text/plain</type>
            <size>261813</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KaW5k
ZXggZWY1NDYwMi4uNzIzNjg3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSVdyYXBwZXJPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSVdyYXBwZXJPYmplY3QubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NhbGxi
YWNrT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCkBAIC00MSw4ICs0Miw4IEBAIHB1YmxpYzoKIAogc3Rh
dGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmplY3RIYW5k
bGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEpTQVBJV3Jh
cHBlck9iamVjdEhhbmRsZU93bmVyLCBqc1dyYXBwZXJPYmplY3RIYW5kbGVPd25lciwgKCkpOwot
ICAgIHJldHVybiAmanNXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyPiBqc1dyYXBwZXJPYmplY3RI
YW5kbGVPd25lcjsKKyAgICByZXR1cm4gJmpzV3JhcHBlck9iamVjdEhhbmRsZU93bmVyLmdldCgp
OwogfQogCiB2b2lkIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRleCBhNzJkMTliLi4xYzFmN2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgIldlYWtIYW5kbGVPd25lci5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRy
YXMuaCIKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9OU01hcFRhYmxlU1BJLmg+CiAKIGNsYXNzIEpT
TWFuYWdlZFZhbHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpA
QCAtNDcsOCArNDgsOCBAQCBwdWJsaWM6CiAKIHN0YXRpYyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyKiBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIsIGpzTWFuYWdlZFZhbHVlSGFu
ZGxlT3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI+IGpzTWFu
YWdlZFZhbHVlSGFuZGxlT3duZXI7CisgICAgcmV0dXJuICZqc01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyLmdldCgpOwogfQogCiBjbGFzcyBXZWFrVmFsdWVSZWYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggYTFlMDlhOC4uYmQ5ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTYtMDEtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTAorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyOTAyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3RseSBt
ZWNoYW5pY2FsIGNvbnZlcnNpb24gdG8gTmV2ZXJEZXN0cm95ZWQgdGhyb3VnaG91dC4KKworICAg
ICAgICAqIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QubW06CisgICAgICAgIChqc0FQSVdyYXBwZXJP
YmplY3RIYW5kbGVPd25lcik6CisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLm1tOgorICAg
ICAgICAobWFuYWdlZFZhbHVlSGFuZGxlT3duZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om9iamVj
dEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbik6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yOjphbGxv
Y2F0b3JzKToKKwogMjAxNi0wMS0wNiAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIERhdGUucHJvdG90eXBlIHNob3VsZCBiZSBhIHBs
YWluIG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlYzc3YTc0
Li44M2Q3ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUyLDggKzUzLDggQEAgY29uc3QgY2hhciogSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXAgPSAiYmFja3RyYWNlIjsKIC8vIGNy
ZWF0ZSBvYmplY3RzIGluIHRoZSBzYW1lIGdyb3VwLgogc3RhdGljIFN0cmluZyBvYmplY3RHcm91
cEZvckJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW9u
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIG9iamVjdEdyb3VwLCAoImJyZWFrcG9pbnQtYWN0aW9uLSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cCwg
U3RyaW5nOjpudW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBvYmplY3RHcm91cChBU0NJSUxpdGVyYWwoImJyZWFrcG9pbnQtYWN0aW9u
LSIpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cC5nZXQoKSwgU3RyaW5nOjpu
dW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKIH0KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBkMjkx
MWEzLi43YWJhZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAKQEAgLTEzNCw4ICsxMzQsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxQYWdlUmVzZXJ2YXRpb24sIDE2PiByZXNlcnZhdGlvbnM7CiAgICAgc3RhdGljIEhhc2hTZXQ8
RGVtYW5kRXhlY3V0YWJsZUFsbG9jYXRvcio+JiBhbGxvY2F0b3JzKCkKICAgICB7Ci0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PERlbWFuZEV4ZWN1dGFibGVB
bGxvY2F0b3IqPiwgc0FsbG9jYXRvcnMsICgpKTsKLSAgICAgICAgcmV0dXJuIHNBbGxvY2F0b3Jz
OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxEZW1hbmRFeGVjdXRhYmxl
QWxsb2NhdG9yKj4+IHNldDsKKyAgICAgICAgcmV0dXJuIHNldDsKICAgICB9CiAKICAgICBzdGF0
aWMgU3RhdGljTG9jayYgYWxsb2NhdG9yc011dGV4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMjY4MjQyZi4uNzM0MzQzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMS0wOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
NTI5MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW9zdGx5IG1lY2hhbmljYWwgY29udmVyc2lvbiB0byBOZXZlckRlc3Ryb3llZCB0aHJvdWdob3V0
LgorCisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpj
dXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAo
V1RGOjp0aHJlYWRNYXBNdXRleCk6CisgICAgICAgIChXVEY6OnRocmVhZE1hcCk6CisKIDIwMTYt
MDEtMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEFsbG93IHRvIHNhdmUgYW5kIHJlc3RvcmUgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApp
bmRleCBlMzUyOTBkLi43MDFjMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29w
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KIApAQCAtNTYsOCArNTcsOCBAQCB2b2lkIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpCiAKIFJ1bkxvb3AmIFJ1bkxvb3A6OmN1cnJlbnQo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlRocmVhZFNwZWNp
ZmljPFJ1bkxvb3A6OkhvbGRlcj4sIHJ1bkxvb3BIb2xkZXIsICgpKTsKLSAgICByZXR1cm4gcnVu
TG9vcEhvbGRlci0+cnVuTG9vcCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaHJlYWRT
cGVjaWZpYzxIb2xkZXI+PiBydW5Mb29wSG9sZGVyOworICAgIHJldHVybiBydW5Mb29wSG9sZGVy
LmdldCgpLT5ydW5Mb29wKCk7CiB9CiAKIFJ1bkxvb3AmIFJ1bkxvb3A6Om1haW4oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IGE5N2NmMzIuLjcwNWYzNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJU
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3BlY2lmaWMu
aCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SYXdQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVh
ZERhdGEuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtOTksNyArMTAwLDcgQEAgdm9pZCB0aHJl
YWRXYXNKb2luZWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIHN0YXRpYyBNdXRleCYgdGhyZWFkTWFw
TXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0
ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0ZXg+IG11dGV4OwogICAgIHJl
dHVybiBtdXRleDsKIH0KIApAQCAtMTI1LDcgKzEyNiw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpCiAKIHN0YXRpYyBUaHJlYWRNYXAmIHRocmVhZE1hcCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRocmVhZE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFRocmVhZE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkYzdlMmNmLi45MGY5NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTI0IEBACisy
MDE2LTAxLTA4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCBvZiBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0bHkgbWVjaGFuaWNhbCBjb252
ZXJzaW9uIHRvIE5ldmVyRGVzdHJveWVkIHRocm91Z2hvdXQuCisKKyAgICAgICAgKiBNb2R1bGVz
L2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmRpcmVjdGlvbk5leHRVbmlxdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJl
Y3Rpb25QcmV2KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVu
aXF1ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5UmVxdWVzdDo6cmVhZHlTdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om9wZW5L
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRlZEtleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKToKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChX
ZWJDb3JlOjpxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNNaW1lVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNGaWxlRXh0
ZW5zaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUpOgor
ICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKToKKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFJlc29sdXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZSk6
CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldCk6CisgICAgICAgICog
ZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjdW11
bGF0b3JNYXApOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc1N1cHBvcnRlZFNWRzEwRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c1N1cHBvcnRlZFNWRzExRmVhdHVyZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWFkeVN0YXRlKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0
KToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayk6CisgICAgICAgICogZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ1NT
Q29udGVudFR5cGUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OnN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNv
cmQuY3BwOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBzZXVkb0VsZW1lbnRUYWdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1l
bnQ6OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVk
TmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdWFsaWZpZWROYW1lQ2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6bnVsbFFOYW1lKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0xlZ2FjeVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dHlsZVNwYW5DbGFzc1N0cmluZyk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFt
ZXNwYWNlRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0ludGVyY2hhbmdlTmV3bGluZU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5nZUNvbnZlcnRlZFNwYWNlU3Bhbik6CisgICAgICAg
ICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub25CcmVha2lu
Z1NwYWNlU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c3R5bGVOb2RlQ2xvc2VUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwSW50ZXJuYWwpOgorICAgICAgICAqIGZpbGVhcGkv
QmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KToK
KyAgICAgICAgKiBodG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAg
ICAgKiBodG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVU
aW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVM
b2NhbElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRU
eXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRW1haWxJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEVtYWlsQWRkcmVzcyk6CisgICAgICAgICogaHRt
bC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtS2V5R2VuZXJhdG9y
Ojpmb3JtS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1TdGF0ZVNpZ25hdHVyZSk6CisgICAg
ICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyb290
RWRpdGFibGVFbGVtZW50TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxv
YWRpbmdEaXNhYmxlcjo6ZGlzYWJsZWRTdWJ0cmVlUm9vdHMpOgorICAgICAgICAqIGh0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6
OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bGlua0xvYWRFdmVudFNlbmRlcik6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50VG9FbGVtZW50
U2V0TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzUmVjb2duaXplZFRhZ05hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpm
b3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGl0bGVUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OnN1YnRpdGxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkpOgorICAgICAgICAqIGh0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmZv
cm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpcmVjdGlvblN0cmluZyk6CisgICAg
ICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlu
cHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlTmFtZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmJ1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6Y2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlTmFtZXM6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVz
OjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpkYXRldGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OmZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Omhp
ZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6aW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Om1vbnRoKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZU5hbWVzOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6
OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpyYWRpbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6cmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5h
bWVzOjpzZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OndlZWspOgorICAgICAgICAqIGh0
bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHBsYXliYWNrU3RhdGVXYWl0aW5nKToK
KyAgICAgICAgKHBsYXliYWNrU3RhdGVQbGF5aW5nKToKKyAgICAgICAgKHBsYXliYWNrU3RhdGVF
bmRlZCk6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb250aElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL051
bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNy
ZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAg
KiBodG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFjY2Vw
dGFibGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JT
dGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3RlcE1pc21hdGNoKToKKyAgICAg
ICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJbWFnZURhdGEpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNT
QXVkaXRvcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRD
YXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50U2hhZG93UHNldWRv
SWQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRv
d0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6Ok1ldGVy
SW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1ldGVyVmFsdWVFbGVtZW50Ojp2YWx1
ZVBzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpt
ZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpjaGFwdGVyc0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjptZXRhZGF0YUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Ojpmb3JjZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6ZGlzYWJsZWRL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6aGlkZGVuS2V5d29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
OjpjdWVTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhcnRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Om1pZGRs
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpyaWdodEtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6dmVydGljYWxHcm93aW5nTGVmdEtleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6dmVydGljYWxHcm93aW5nUmlnaHRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1
ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6Om1h
cmtGdXR1cmVBbmRQYXN0Tm9kZXMpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUUmVnaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNv
cmU6OlZUVFJlZ2lvbjo6c2V0U2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6
cGFyc2VTZXR0aW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjp0ZXh0VHJh
Y2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcyk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRl
b1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6bWFpbktleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2lnbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6c3VidGl0bGVzS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpj
b21tZW50YXJ5S2V5d29yZCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVUeXBlVG9UYWdOYW1lKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNvbGxlY3RNZXRhZGF0YUhl
YWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVQc2V1ZG9DbGFzc01hc2spOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgor
ICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJl
dmVudGVkTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmluaXRpYXRv
ck5hbWUpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKToKKyAgICAg
ICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKToK
KyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tn
cm91bmRDU1MpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MpOgorICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2
YVNjcmlwdFVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJ
bmxpbmVFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6d2luZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyk6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpkcmFnU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9jdXNEaXJlY3Rpb25Gb3JL
ZXkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmFzZTo6cGxhdGZvcm0pOgorICAgICAgICAqIHBhZ2Uv
UGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlVmlzaWJpbGl0
eVN0YXRlU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om9yaWdpbkFjY2Vzc01hcCk6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjpwYXJzZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93Rm9yQmxlbmRpbmcpOgorICAgICAgICAqIHBh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50ZXJDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZEN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptb3ZlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnZlcnRpY2FsVGV4dEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpjZWxsQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmFs
aWFzQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Onpvb21JbkN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjp6b29tT3V0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6bm9uZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpwcm9ncmVz
c0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub0Ryb3BDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6bm90QWxsb3dlZEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjppQmVhbUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjp3YWl0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmhlbHBD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpub3J0aFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aEVhc3RS
ZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9ydGhXZXN0UmVzaXplQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNvdXRoRWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpzb3V0aFdlc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6d2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpub3J0aFNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVh
c3RXZXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoRWFzdFNvdXRoV2Vz
dFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aFdlc3RTb3V0aEVhc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29sdW1uUmVzaXplQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJvd1Jlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptaWRkbGVQ
YW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVhc3RQYW5uaW5nQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6Om5vcnRoUGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpu
b3J0aEVhc3RQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoV2VzdFBhbm5p
bmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6c291dGhQYW5uaW5nQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNvdXRoRWFzdFBhbm5pbmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
c291dGhXZXN0UGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjp3ZXN0UGFubmluZ0N1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpncmFiQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OmdyYWJiaW5nQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZWRT
dHJpbmdGb3JMb29rdXBNZW51SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZWRpYU1JTUVUeXBlTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxVUkxTY2hlbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2VjdXJlU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMpOgorICAgICAgICAoV2ViQ29yZTo6ZW1wdHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6c2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0
ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNPUlNFbmFibGVkU2NoZW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpibGFua1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxOYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25z
ZXNGb3JTdWJqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdWRpb0Rlc3RpbmF0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXBhaW50UmVjdE1hcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9y
U3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFBsYWluKToKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNo
QnVmZmVyOjpzaW5nbGV0b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpwbGF5ZXJUb1ByaXZhdGVNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxw
aGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjplZmZlY3RO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjptaW1lQ29tbW9uVHlwZXNDYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjptaW1lTW9kZXJuVHlwZXNDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0N1cnNvcklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJzb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAgICAgICgrW1dlYkNvcmVNb3Rp
b25NYW5hZ2VyIHNoYXJlZE1hbmFnZXJdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYlRo
cmVhZEdldE9ic2VydmVkQ29udGVudE1vZGlmaWVycyk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRGcm9tTlNGb250KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybVRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW06CisgICAg
ICAgIChXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpwbGF0Zm9ybUNl
bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUcmFja0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Nh
bXBsZUJveDo6dHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXApOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xpZW50Q2VydHMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5
ZWRNUlVDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNo
ZTo6Z2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2ZMb2NhbGVDYWNoZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJs
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y291bnRlck1hcHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVy
SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhl
bWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVu
c2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQ
YXRoOjp6ZXJvTGVuZ3RoTGluZWNhcFBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vblNj
YWxpbmdTdHJva2VQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2xpcHBlckZpbHRlck1hc2tlclRhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6bWFy
a2VyVGFncyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsQW5kU3Ryb2tlVGFncyk6CisgICAgICAg
IChXZWJDb3JlOjpjaGFpbmFibGVSZXNvdXJjZVRhZ3MpOgorICAgICAgICAqIHN2Zy9TVkdBbmds
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6dmFsdWVBc1N0cmluZyk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50Ojpyb3RhdGVNb2RlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRBdHRyaWJ1dGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBY2N1bXVsYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjppbmhlcml0c0Zyb21Qcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
b3JkZXJYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudDo6b3JkZXJZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmll
cik6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9u
WUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRp
b25YSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVyKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50
OjpyYWRpdXNYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpyYWRpdXNZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRp
Zmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVx
dWVuY3lZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWUlkZW50aWZp
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaE1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R2x5cGhNYXA6OnN2Z0dseXBoRm9yR2x5cGgpOgorICAgICAgICAqIHN2Zy9TVkdMYW5nU3BhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGFuZ1NwYWNlOjp4bWxzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtl
ckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01h
cmtlckVsZW1lbnQ6Om9yaWVudEFuZ2xlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUpOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6bWVkaWEpOgorICAgICAg
ICAqIHN2Zy9TVkdUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3Jt
Ojp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdT
cGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjp2aWV3Qm94SWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cHJlc2VydmVBc3BlY3RSYXRpb0lk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OnRyYW5zZm9ybUlkZW50
aWZpZXIpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU01JTEVsZW1lbnQ6OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6
OnJlcGVhdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpub3RpZnlE
ZXBlbmRlbnRzSW50ZXJ2YWxDaGFuZ2VkKToKKwogMjAxNi0wMS0wNSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIHNob3dSZW5kZXJUcmVlOiBhZGQgaW5saW5lLWJs
b2NrL2lubGluZS9ibG9jayBjb2x1bW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5jcHAKaW5kZXggNGFlNDI3ZC4uOGRjMDgzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcApAQCAtMjYsMTQgKzI2LDE2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudC5oIgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5KGJvb2wgYXZhaWxhYmxlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGF2YWlsYWJsZVN0cmluZywgKCJhdmFpbGFibGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgbm90QXZhaWxhYmxlU3RyaW5nLCAoIm5vdC1hdmFpbGFibGUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXZhaWxhYmxlU3RyaW5nKCJhdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBub3RBdmFpbGFibGVTdHJpbmcoIm5vdC1hdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIHJldHVybiBhdmFpbGFibGUg
PyBhdmFpbGFibGVTdHJpbmcgOiBub3RBdmFpbGFibGVTdHJpbmc7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA4NjM4MGUxLi4wMzY2
MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwyNSArMzksMjUgQEAgSURCQ3Vyc29yOjpJ
REJDdXJzb3IoKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4
dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bmV4dCwgKCJuZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5leHQoIm5leHQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmV4dDsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5leHR1bmlxdWUs
ICgibmV4dHVuaXF1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuZXh0dW5pcXVlKCJuZXh0dW5p
cXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5l
eHR1bmlxdWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25Q
cmV2KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBwcmV2LCAoInByZXYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcHJldigicHJldiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBwcmV2OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHJldnVuaXF1
ZSwgKCJwcmV2dW5pcXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHByZXZ1bmlxdWUoInByZXZ1
bmlxdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4g
cHJldnVuaXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDUxNzA3NzcuLjI1OWZiZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwzMSArNDAsMzEgQEAgSURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgicmVhZG9u
bHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZG9ubHkoInJlYWRvbmx5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWRvbmx5OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByZWFkd3JpdGUs
ICgicmVhZHdyaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJlYWR3cml0ZSgicmVhZHdyaXRl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3
cml0ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNp
b25DaGFuZ2UoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHZlcnNpb25jaGFuZ2UsICgidmVyc2lvbmNoYW5nZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiB2ZXJzaW9uY2hhbmdlKCJ2ZXJzaW9uY2hhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHZlcnNpb25jaGFuZ2U7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgi
MCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiByZWFkb25seSgiMCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiByZWFkb25seTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZHdyaXRlLCAo
IjEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZHdyaXRlKCIxIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3cml0ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJl
cXVlc3QuY3BwCmluZGV4IDhiMmYyMGQuLmJmY2RkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5UmVxdWVzdC5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNSwxMyAr
MTM2LDEzIEBAIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gTGVnYWN5UmVxdWVzdDo6dHJhbnNhY3Rp
b24oKSBjb25zdAogY29uc3QgU3RyaW5nJiBMZWdhY3lSZXF1ZXN0OjpyZWFkeVN0YXRlKCkgY29u
c3QKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IElEQlJlcXVlc3RSZWFkeVN0YXRlOjpQ
ZW5kaW5nIHx8IG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6RG9uZSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGVuZGluZywg
KCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRvbmUsICgiZG9uZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBwZW5kaW5nKCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gZG9uZSgiZG9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6UGVuZGluZykK
LSAgICAgICAgcmV0dXJuIHBlbmRpbmc7CisgICAgICAgIHJldHVybiBwZW5kaW5nLmdldCgpOwog
Ci0gICAgcmV0dXJuIGRvbmU7CisgICAgcmV0dXJuIGRvbmUuZ2V0KCk7CiB9CiAKIHZvaWQgTGVn
YWN5UmVxdWVzdDo6bWFya0Vhcmx5RGVhdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggODdi
YzM4Mi4uZjhmM2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCkBAIC00NSwxOSArNDUsMTkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbHNI
b3N0OjphdXRvbWF0aWNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhdXRvbWF0aWMsICgiYXV0b21hdGljIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IGF1dG9tYXRpYygiYXV0b21hdGljIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGF1dG9tYXRpYzsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IGZvcmNlZE9uLCAoImZvcmNlZC1vbmx5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZv
cmNlZE9uKCJmb3JjZWQtb25seSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBmb3JjZWRPbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHdheXNPbiwgKCJhbHdheXMtb24iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx3YXlzT24oImFsd2F5cy1vbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHdheXNPbjsKIH0KIApA
QCAtMjMwLDEyICsyMzAsMTIgQEAgU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERl
dmljZURpc3BsYXlOYW1lKCkgY29uc3QKIAogU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRl
cm5hbERldmljZVR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIG5vbmUsIChBU0NJSUxpdGVyYWwoIm5vbmUiKSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5vbmUoQVNDSUlMaXRlcmFsKCJub25lIikpOwogICAgIFN0
cmluZyB0eXBlID0gbm9uZTsKICAgICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFpcnBsYXks
IChBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHR2b3V0LCAoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXki
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFs
KCJ0dm91dCIpKTsKICAgICAKICAgICBNZWRpYVBsYXllciogcGxheWVyID0gbV9tZWRpYUVsZW1l
bnQtPnBsYXllcigpOwogICAgIGlmICghcGxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDRlMTI1NDMuLjgyOWQx
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCkBAIC05NSwxOSArOTUsMTkgQEAgTWVkaWFTb3VyY2U6On5NZWRpYVNvdXJjZSgp
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcGVu
LCAoIm9wZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gb3Blbigib3BlbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBvcGVuOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjbG9zZWQs
ICgiY2xvc2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNsb3NlZCgiY2xvc2VkIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNsb3NlZDsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZTo6ZW5kZWRLZXl3b3JkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBl
bmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7
CiB9CiAKQEAgLTQ0MCw4ICs0NDAsOCBAQCB2b2lkIE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShj
b25zdCBBdG9taWNTdHJpbmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBNZWRp
YVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3IoY29uc3QgQXRvbWljU3RyaW5nJiBlcnJvciwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgbmV0d29yaywgKCJuZXR3b3JrIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGRlY29kZSwgKCJkZWNvZGUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gbmV0d29yaygibmV0d29yayIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IGRlY29kZSgiZGVjb2RlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICBMT0coTWVkaWFTb3VyY2UsICJNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3Io
JXApIDogJXMiLCB0aGlzLCBlcnJvci5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbQppbmRleCBhYThiMDUyLi41ZTE0NjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50Lm1tCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFW
TWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqLCBKU0NvbnRlCiAKIHN0
YXRpYyBTdHJpbmcgcXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjcmlwdCwgKFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCwgc2l6ZW9mKFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50SmF2YVNjcmlwdCkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3Jp
cHQoUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0LCBzaXplb2YoUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0KSk7CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApA
QCAtODksMTMgKzg5LDEzIEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBv
cnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICAgICAgImF1ZGlvL3gtbTRy
IiwgImF1ZGlvL3gtbXAzIiwgImF1ZGlvL3gtbXBlZyIsICJhdWRpby94LW1wZWczIiwgImF1ZGlv
L3gtbXBlZ3VybCIsICJhdWRpby94LXNjcGxzIiwgImF1ZGlvL3gtd2F2IiwKICAgICAgICAgInZp
ZGVvLzNncHAiLCAidmlkZW8vM2dwcDIiLCAidmlkZW8vbXA0IiwgInZpZGVvL3F1aWNrdGltZSIs
ICJ2aWRlby94LW00diIKICAgICB9OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChIYXNoU2V0PFN0cmluZz4sIHR5cGVIYXNoLCAoKSk7Ci0gICAgaWYgKCF0eXBlSGFzaC5zaXpl
KCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB0eXBlSGFz
aDsKKyAgICBpZiAoIXR5cGVIYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodHlwZXMpOyArK2kpCi0gICAgICAgICAgICB0
eXBlSGFzaC5hZGQodHlwZXNbaV0pOworICAgICAgICAgICAgdHlwZUhhc2guZ2V0KCkuYWRkKHR5
cGVzW2ldKTsKICAgICB9CiAKLSAgICByZXR1cm4gdHlwZUhhc2guY29udGFpbnMobWltZVR5cGUp
OworICAgIHJldHVybiB0eXBlSGFzaC5nZXQoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJv
b2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTEwNSwxMyArMTA1LDEzIEBAIGJvb2wgUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikKICAgICAgICAgIm0zdTgiLCAibTRhIiwgIm00YiIsICJtNHAiLCAibTRyIiwgIm00
diIsICJtb3YiLCAibXAzIiwgIm1wMyIsICJtcDQiLCAibXBlZyIsICJtcGciLCAibXF2IiwgInBs
cyIsICJxdCIsCiAgICAgICAgICJzbmQiLCAic3dhIiwgInRzIiwgInVsdyIsICJ3YXYiCiAgICAg
fTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBl
eHRlbnNpb25IYXNoLCAoKSk7Ci0gICAgaWYgKCFleHRlbnNpb25IYXNoLnNpemUoKSkgeworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGV4dGVuc2lvbkhhc2g7Cisg
ICAgaWYgKCFleHRlbnNpb25IYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZXh0ZW5zaW9ucyk7ICsraSkKLSAgICAgICAg
ICAgIGV4dGVuc2lvbkhhc2guYWRkKGV4dGVuc2lvbnNbaV0pOworICAgICAgICAgICAgZXh0ZW5z
aW9uSGFzaC5nZXQoKS5hZGQoZXh0ZW5zaW9uc1tpXSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGV4
dGVuc2lvbkhhc2guY29udGFpbnMoZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9uSGFz
aC5nZXQoKS5jb250YWlucyhleHRlbnNpb24pOwogfQogCiBRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdp
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXMuY3BwCmluZGV4IDdmYjEzZTguLjdmMTc1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc0V2ZW50LmgiCiAjaW5jbHVkZSAiU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
QEAgLTE5Miw4ICsxOTMsOCBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6aGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuYwogICAgIAogdm9pZCBT
cGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5k
YXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgd29yZEJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ3
b3JkIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzZW50ZW5jZSIpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gd29yZEJvdW5kYXJ5U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgid29yZCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2VudGVuY2UiKSk7
CiAKICAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7CiAgICAgY2FzZSBTcGVlY2hXb3JkQm91bmRhcnk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA5MWJhMzEyLi41NGFjYjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKQEAgLTE4NCw4ICsxODQsOCBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAg
ICAgU3RyaW5nIHN0cmluZ0ZvckNhY2hlID0gU3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZyk7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ1NTUHJvcGVydHlJbmZvPiBDU1NQcm9wZXJ0eUlu
Zm9NYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5SW5m
b01hcCwgcHJvcGVydHlJbmZvQ2FjaGUsICgpKTsKLSAgICBwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0
eUluZm9DYWNoZS5nZXQoc3RyaW5nRm9yQ2FjaGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDU1NQcm9wZXJ0eUluZm9NYXA+IHByb3BlcnR5SW5mb0NhY2hlOworICAgIHByb3BlcnR5SW5m
byA9IHByb3BlcnR5SW5mb0NhY2hlLmdldCgpLmdldChzdHJpbmdGb3JDYWNoZSk7CiAgICAgaWYg
KHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwog
CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlE
Rm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICBpZiAocHJv
cGVydHlJRCkgewogICAgICAgICBwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGhh
ZFBpeGVsT3JQb3NQcmVmaXg7CiAgICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCk7Ci0gICAgICAgIHByb3BlcnR5SW5m
b0NhY2hlLmFkZChzdHJpbmdGb3JDYWNoZSwgcHJvcGVydHlJbmZvKTsKKyAgICAgICAgcHJvcGVy
dHlJbmZvQ2FjaGUuZ2V0KCkuYWRkKHN0cmluZ0ZvckNhY2hlLCBwcm9wZXJ0eUluZm8pOwogICAg
IH0KICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmNwcAppbmRleCA0NGY2NGI2Li5mYWE4OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX2luc3RhbmNlLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01Niw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBCaW5k
aW5ncyB7CiAKIHN0YXRpYyBTdHJpbmcmIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZXhjZXB0aW9uU3RyOwogICAgIHJl
dHVybiBleGNlcHRpb25TdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggYzU1
NzdiNy4uMjgzNGY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgog
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMjg4LDExICsyODksMTEgQEAgc3RhdGljIHZvaWQgYWRkUmVz
b2x1dGlvbldhcm5pbmdNZXNzYWdlVG9Db25zb2xlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
U3RyaW4KICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVCh2YWx1ZSk7CiAKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBtZWRpYVF1ZXJ5TWVzc2FnZSwg
KEFTQ0lJTGl0ZXJhbCgiQ29uc2lkZXIgdXNpbmcgJ2RwcHgnIHVuaXRzIGluc3RlYWQgb2YgJyVy
ZXBsYWNlbWVudFVuaXRzJScsIGFzIGluIENTUyAnJXJlcGxhY2VtZW50VW5pdHMlJyBtZWFucyBk
b3RzLXBlci1DU1MtJWxlbmd0aFVuaXQlLCBub3QgZG90cy1wZXItcGh5c2ljYWwtJWxlbmd0aFVu
aXQlLCBzbyBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIHRoZSBhY3R1YWwgJyVyZXBsYWNlbWVudFVu
aXRzJScgb2YgYSBzY3JlZW4uIEluIG1lZGlhIHF1ZXJ5IGV4cHJlc3Npb246ICIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbWVkaWFWYWx1ZURQSSwgKEFT
Q0lJTGl0ZXJhbCgiZHBpIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBtZWRpYVZhbHVlRFBDTSwgKEFTQ0lJTGl0ZXJhbCgiZHBjbSIpKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbGVuZ3RoVW5pdEluY2gsIChBU0NJ
SUxpdGVyYWwoImluY2giKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGxlbmd0aFVuaXRDZW50aW1ldGVyLCAoQVNDSUlMaXRlcmFsKCJjZW50aW1ldGVyIikp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRpYVF1ZXJ5TWVzc2FnZShB
U0NJSUxpdGVyYWwoIkNvbnNpZGVyIHVzaW5nICdkcHB4JyB1bml0cyBpbnN0ZWFkIG9mICclcmVw
bGFjZW1lbnRVbml0cyUnLCBhcyBpbiBDU1MgJyVyZXBsYWNlbWVudFVuaXRzJScgbWVhbnMgZG90
cy1wZXItQ1NTLSVsZW5ndGhVbml0JSwgbm90IGRvdHMtcGVyLXBoeXNpY2FsLSVsZW5ndGhVbml0
JSwgc28gZG9lcyBub3QgY29ycmVzcG9uZCB0byB0aGUgYWN0dWFsICclcmVwbGFjZW1lbnRVbml0
cyUnIG9mIGEgc2NyZWVuLiBJbiBtZWRpYSBxdWVyeSBleHByZXNzaW9uOiAiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbWVkaWFWYWx1ZURQSShBU0NJSUxpdGVyYWwoImRw
aSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRpYVZhbHVlRFBDTShB
U0NJSUxpdGVyYWwoImRwY20iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
bGVuZ3RoVW5pdEluY2goQVNDSUlMaXRlcmFsKCJpbmNoIikpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGxlbmd0aFVuaXRDZW50aW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY2VudGlt
ZXRlciIpKTsKIAogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGlmICh2YWx1ZS0+aXNEb3RzUGVy
SW5jaCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCA2
MGM1ZDM5Li4zZTMwMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUg
IlN0eWxlUnVsZUltcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzE2LDExICszMTcsMTEgQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBh
cnNlQXV0aG9yU3R5bGVTaGVldChjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWQKIAog
ICAgIGlmIChtX3BhcnNlckNvbnRleHQubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgJiYgaXNTdHJp
Y3RQYXJzZXJNb2RlKG1fcGFyc2VyQ29udGV4dC5tb2RlKSkgewogICAgICAgICAvLyBXb3JrIGFy
b3VuZCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MzUwPi4KLSAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbWVkaWFX
aWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQsIChBU0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHls
ZXNoZWV0ICovXG4vKiB3b3JrIGFyb3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4j
Y29sdW1uLWNvbnRlbnQgeyBtYXJnaW4tbGVmdDogMDsgfVxuXG4iKSkpOworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVT
aGVldChBU0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHlsZXNoZWV0ICovXG4vKiB3b3JrIGFy
b3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4jY29sdW1uLWNvbnRlbnQgeyBtYXJn
aW4tbGVmdDogMDsgfVxuXG4iKSk7CiAgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gdmFyaWFudHMg
b2YgS0hUTUxGaXhlcy5jc3MuIE9uZSBpcyBlcXVhbCB0byBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5
bGVTaGVldCwKICAgICAgICAgLy8gd2hpbGUgdGhlIG90aGVyIGxhY2tzIHRoZSBzZWNvbmQgdHJh
aWxpbmcgbmV3bGluZS4KLSAgICAgICAgaWYgKGJhc2VVUkwoKS5zdHJpbmcoKS5lbmRzV2l0aCgi
L0tIVE1MRml4ZXMuY3NzIikgJiYgIXNoZWV0VGV4dC5pc051bGwoKSAmJiBtZWRpYVdpa2lLSFRN
TEZpeGVzU3R5bGVTaGVldC5zdGFydHNXaXRoKHNoZWV0VGV4dCkKLSAgICAgICAgICAgICYmIHNo
ZWV0VGV4dC5sZW5ndGgoKSA+PSBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVTaGVldC5sZW5ndGgo
KSAtIDEpCisgICAgICAgIGlmIChiYXNlVVJMKCkuc3RyaW5nKCkuZW5kc1dpdGgoIi9LSFRNTEZp
eGVzLmNzcyIpICYmICFzaGVldFRleHQuaXNOdWxsKCkgJiYgbWVkaWFXaWtpS0hUTUxGaXhlc1N0
eWxlU2hlZXQuZ2V0KCkuc3RhcnRzV2l0aChzaGVldFRleHQpCisgICAgICAgICAgICAmJiBzaGVl
dFRleHQubGVuZ3RoKCkgPj0gbWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQuZ2V0KCkubGVu
Z3RoKCkgLSAxKQogICAgICAgICAgICAgY2xlYXJSdWxlcygpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCAzMWU1ZjMxLi5m
NmRlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuaCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlN0YXRpY05v
ZGVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYgSGFzaE1hcDxDb250YWluZXJOb2RlKiwgQ2hp
bGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcio+IEFjY3VtdWxhdG9yTWFwOwogc3RhdGljIEFjY3Vt
dWxhdG9yTWFwJiBhY2N1bXVsYXRvck1hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEFjY3VtdWxhdG9yTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QWNjdW11bGF0b3JNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCBmZTBiY2MxLi5mYWYyZGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTUzLDYgKzUzLDcg
QEAKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHREb2N1bWVudC5o
IgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC04OCw3ICs4OSw3IEBAIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkU1ZHMTBGZWF0dXJlKGNvbnN0
IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZlYXR1cmVTZXQsIHN2Z0ZlYXR1cmVzLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTZXQ+IHN2Z0ZlYXR1cmVzOwogICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICBhZGRTdHJp
bmcoc3ZnRmVhdHVyZXMsICJzdmciKTsKQEAgLTEwOCw3ICsxMDksNyBAQCBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZFNWRzEwRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbgogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmZWF0dXJlLnN0YXJ0c1dpdGgoIm9yZy53M2MuIiwgZmFsc2UpCi0gICAgICAgICYmIHN2Z0Zl
YXR1cmVzLmNvbnRhaW5zKGZlYXR1cmUucmlnaHQoZmVhdHVyZS5sZW5ndGgoKSAtIDgpKTsKKyAg
ICAgICAgJiYgc3ZnRmVhdHVyZXMuZ2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJl
Lmxlbmd0aCgpIC0gOCkpOwogfQogCiBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVy
ZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKQEAgLTExNyw3
ICsxMTgsNyBAQCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVyZShjb25zdCBTdHJp
bmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChGZWF0dXJlU2V0LCBzdmdGZWF0dXJlcywgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxGZWF0dXJlU2V0PiBzdmdGZWF0dXJlczsKICAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CiAgICAgICAgIC8vIFNhZGx5LCB3ZSBjYW5ub3QgY2xhaW0gdG8gaW1wbGVt
ZW50IGFueSBvZiB0aGUgU1ZHIDEuMSBnZW5lcmljIGZlYXR1cmUgc2V0cwogICAgICAgICAvLyBs
YWNrIG9mIEZvbnQgYW5kIEZpbHRlciBzdXBwb3J0LgpAQCAtMTc1LDcgKzE3Niw3IEBAIHN0YXRp
YyBib29sIGlzU3VwcG9ydGVkU1ZHMTFGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZlYXR1cmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy53My5vcmcvdHIvc3ZnMTEv
ZmVhdHVyZSMiLCBmYWxzZSkKLSAgICAgICAgJiYgc3ZnRmVhdHVyZXMuY29udGFpbnMoZmVhdHVy
ZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKKyAgICAgICAgJiYgc3ZnRmVhdHVyZXMu
Z2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKIH0K
IAogRE9NSW1wbGVtZW50YXRpb246OkRPTUltcGxlbWVudGF0aW9uKERvY3VtZW50JiBkb2N1bWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDI4NGU4NzcuLmQwNTYyZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTc3LDYgKzE3Nyw3IEBACiAjaW5jbHVkZSA8Y3RpbWU+CiAj
aW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4K
ICNpbmNsdWRlIDx5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmg+CkBAIC0xMTE4LDkgKzExMTksOSBA
QCBSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaQogCiBTdHJpbmcgRG9jdW1lbnQ6OnJlYWR5U3RhdGUo
KSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGxvYWRpbmcsIChBU0NJSUxpdGVyYWwoImxvYWRpbmciKSkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGludGVyYWN0aXZlLCAoQVNDSUlMaXRl
cmFsKCJpbnRlcmFjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgY29tcGxldGUsIChBU0NJSUxpdGVyYWwoImNvbXBsZXRlIikpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBsb2FkaW5nKEFTQ0lJTGl0ZXJh
bCgibG9hZGluZyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBp
bnRlcmFjdGl2ZShBU0NJSUxpdGVyYWwoImludGVyYWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNvbXBsZXRlKEFTQ0lJTGl0ZXJhbCgiY29tcGxldGUi
KSk7CiAKICAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0ZSkgewogICAgIGNhc2UgTG9hZGluZzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCA5ODllMTRlLi5lOGNiYzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8
d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjkyOCwyMSArMjkyOSwyMSBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIEVsZW1lbnQ6OndlYmtpdFJlZ2lvbk92ZXJzZXQoKSBjb25zdAogewogICAgIGRvY3Vt
ZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB1bmRlZmluZWRTdGF0ZSwg
KCJ1bmRlZmluZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdW5kZWZpbmVkU3RhdGUoInVuZGVm
aW5lZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICghZG9j
dW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpIHx8ICFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgp
KQogICAgICAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7CiAKICAgICBzd2l0Y2ggKHJlZ2lvbk92
ZXJzZXRTdGF0ZSgpKSB7CiAgICAgY2FzZSBSZWdpb25GaXQ6IHsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZml0U3RhdGUsICgiZml0IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaXRTdGF0ZSgiZml0IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiBmaXRTdGF0ZTsKICAgICB9CiAgICAg
Y2FzZSBSZWdpb25FbXB0eTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBlbXB0eVN0YXRlLCAoImVtcHR5IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBlbXB0eVN0YXRlKCJlbXB0eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgICAgICByZXR1cm4gZW1wdHlTdGF0ZTsKICAgICB9CiAgICAgY2FzZSBSZWdp
b25PdmVyc2V0OiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG92ZXJmbG93U3RhdGUsICgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gb3ZlcmZsb3dTdGF0ZSgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gb3ZlcmZsb3dTdGF0ZTsKICAgICB9CiAgICAgY2Fz
ZSBSZWdpb25VbmRlZmluZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmlu
ZGV4IDM0MTg0N2YuLmQ1NGM2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIu
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJT
VkdVc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxMyw4ICsyMTQs
OCBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFbGVtZW50
KiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZwogICAgIGlmIChlbGVtZW50LT5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEhhc2hTZXQ8RWxlbWVudCo+LCBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxh
dGVkQ2xpY2tzLCAoKSk7Ci0gICAgaWYgKCFlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xp
Y2tzLmFkZChlbGVtZW50KS5pc05ld0VudHJ5KQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PEVsZW1lbnQqPj4gZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrczsKKyAg
ICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MuZ2V0KCkuYWRkKGVsZW1l
bnQpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtb3VzZUV2ZW50T3B0
aW9ucyA9PSBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzKQpAQCAtMjMwLDcgKzIzMSw3IEBAIHZv
aWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKEVsZW1lbnQqIGVsZW1l
bnQsIEV2ZW50KiB1bmRlcmx5aW5nCiAgICAgLy8gYWx3YXlzIHNlbmQgY2xpY2sKICAgICBkaXNw
YXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY2xpY2tFdmVudCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5
aW5nRXZlbnQsIGVsZW1lbnQpKTsKIAotICAgIGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRD
bGlja3MucmVtb3ZlKGVsZW1lbnQpOworICAgIGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRD
bGlja3MuZ2V0KCkucmVtb3ZlKGVsZW1lbnQpOwogfQogCiBzdGF0aWMgdm9pZCBjYWxsRGVmYXVs
dEV2ZW50SGFuZGxlcnNJblRoZUJ1YmJsaW5nT3JkZXIoRXZlbnQmIGV2ZW50LCBjb25zdCBFdmVu
dFBhdGgmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIu
Y3BwCmluZGV4IDRjYWY2MmYuLjQxYTIwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRO
b2RlVHJhdmVyc2FsLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MTMsNyArMTE0LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNsZWFyU2hlZXQoKQog
CiBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29udGVudFR5cGUoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNzc0NvbnRlbnRUeXBlLCAoInRleHQvY3NzIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNzc0NvbnRlbnRUeXBlKCJ0ZXh0L2NzcyIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICh0eXBlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGVsZW1lbnQuaXNIVE1MRWxlbWVudCgp
ID8gZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgY3NzQ29udGVudFR5cGUpIDogdHlwZSA9PSBjc3ND
b250ZW50VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBm
YzE3MDhjLi44N2ZiYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CkBAIC0xNDUsMTMgKzE0NSwxMyBAQCB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPE11dGF0aW9uT2Jz
ZXJ2ZXI+PiBNdXRhdGlvbk9ic2VydmVyU2V0OwogCiBzdGF0aWMgTXV0YXRpb25PYnNlcnZlclNl
dCYgYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChNdXRhdGlvbk9ic2VydmVyU2V0LCBhY3RpdmVPYnNlcnZlcnMsICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0YXRpb25PYnNlcnZlclNldD4gYWN0aXZlT2JzZXJ2
ZXJzOwogICAgIHJldHVybiBhY3RpdmVPYnNlcnZlcnM7CiB9CiAKIHN0YXRpYyBNdXRhdGlvbk9i
c2VydmVyU2V0JiBzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycygpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGF0aW9uT2JzZXJ2ZXJTZXQsIHN1c3BlbmRlZE9ic2Vy
dmVycywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNdXRhdGlvbk9ic2VydmVyU2V0
PiBzdXNwZW5kZWRPYnNlcnZlcnM7CiAgICAgcmV0dXJuIHN1c3BlbmRlZE9ic2VydmVyczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKaW5kZXggOTVmY2VjMi4uY2U0MWEx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAKICNpbmNsdWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3Qu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0NSwxOSArMTQ2LDE5IEBAIHBy
aXZhdGU6CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQ2hpbGRMaXN0UmVjb3JkOjp0eXBlKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGlsZExp
c3QsICgiY2hpbGRMaXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGNoaWxkTGlzdCgiY2hpbGRM
aXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNo
aWxkTGlzdDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdHRyaWJ1dGVzUmVjb3JkOjp0eXBl
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBh
dHRyaWJ1dGVzLCAoImF0dHJpYnV0ZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXR0cmlidXRl
cygiYXR0cmlidXRlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBhdHRyaWJ1dGVzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIENoYXJhY3RlckRh
dGFSZWNvcmQ6OnR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGNoYXJhY3RlckRhdGEsICgiY2hhcmFjdGVyRGF0YSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBjaGFyYWN0ZXJEYXRhKCJjaGFyYWN0ZXJEYXRhIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNoYXJhY3RlckRhdGE7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCBiMjQ5MjQxLi5jZjllYWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjb25zdCBRdWFsaWZpZWROYW1lJiBwc2V1ZG9FbGVtZW50VGFnTmFt
ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUs
IG5hbWUsIChudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVsbEF0b20pKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVs
bEF0b20pOwogICAgIHJldHVybiBuYW1lOwogfQogCiBTdHJpbmcgUHNldWRvRWxlbWVudDo6cHNl
dWRvRWxlbWVudE5hbWVGb3JFdmVudHMoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgYWZ0ZXIsIChBU0NJSUxpdGVy
YWwoIjo6YWZ0ZXIiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIGJlZm9yZSwgKEFTQ0lJTGl0ZXJhbCgiOjpiZWZvcmUiKSkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGFmdGVyKEFTQ0lJTGl0ZXJhbCgiOjphZnRl
ciIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBiZWZvcmUoQVND
SUlMaXRlcmFsKCI6OmJlZm9yZSIpKTsKICAgICBzd2l0Y2ggKHBzZXVkb0lkKSB7CiAgICAgY2Fz
ZSBBRlRFUjoKICAgICAgICAgcmV0dXJuIGFmdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwCmluZGV4IGZkNzliZGEuLjU2ZTRmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RhdGljQ29uc3RydWN0b3Jz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC03NCw3ICs3NSw3
IEBAIHN0cnVjdCBRTmFtZUNvbXBvbmVudHNUcmFuc2xhdG9yIHsKIAogc3RhdGljIGlubGluZSBR
TmFtZVNldCYgcXVhbGlmaWVkTmFtZUNhY2hlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUU5hbWVTZXQsIG5hbWVDYWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxRTmFtZVNldD4gbmFtZUNhY2hlOwogICAgIHJldHVybiBuYW1lQ2FjaGU7CiB9CiAK
QEAgLTExNSw3ICsxMTYsNyBAQCB2b2lkIFF1YWxpZmllZE5hbWU6OmluaXQoKQogCiBjb25zdCBR
dWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChRdWFsaWZpZWROYW1lLCBudWxsTmFtZSwgKG51bGxBdG9tLCBudWxsQXRvbSwgbnVs
bEF0b20pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbnVsbE5h
bWUobnVsbEF0b20sIG51bGxBdG9tLCBudWxsQXRvbSk7CiAgICAgcmV0dXJuIG51bGxOYW1lOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNjNmNTkzZi4uMTg3OTFm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMTE5LDI0ICsxMTksMjQg
QEAgc3RhdGljIGJvb2wgaXNMZWdhY3lTdXBwb3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoY29uc3Qg
U3RyaW5nJiBsYW5ndWFnZSkKIAogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBI
VE1MNSBjb21wbGlhbnQuIFRoZXNlIGJlbG9uZyBpbiB0aGUgTUlNRSByZWdpc3RyeSBhcyAidGV4
dC9qYXZhc2NyaXB0PHZlcnNpb24+IiBlbnRyaWVzLgogICAgIHR5cGVkZWYgSGFzaFNldDxTdHJp
bmcsIENhc2VGb2xkaW5nSGFzaD4gTGFuZ3VhZ2VTZXQ7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKExhbmd1YWdlU2V0LCBsYW5ndWFnZXMsICgpKTsKLSAgICBpZiAobGFuZ3Vh
Z2VzLmlzRW1wdHkoKSkgewotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7Ci0g
ICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFk
ZCgiamF2YXNjcmlwdDEuMCIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS4x
Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjIiKTsKLSAgICAgICAgbGFu
Z3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMyIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZh
c2NyaXB0MS40Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjUiKTsKLSAg
ICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuNiIpOwotICAgICAgICBsYW5ndWFnZXMu
YWRkKCJqYXZhc2NyaXB0MS43Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImxpdmVzY3JpcHQi
KTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiZWNtYXNjcmlwdCIpOwotICAgICAgICBsYW5ndWFn
ZXMuYWRkKCJqc2NyaXB0Iik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhbmd1YWdlU2V0
PiBsYW5ndWFnZXM7CisgICAgaWYgKGxhbmd1YWdlcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdCIpOworICAgICAgICBsYW5ndWFnZXMu
Z2V0KCkuYWRkKCJqYXZhc2NyaXB0Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImph
dmFzY3JpcHQxLjAiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEu
MSIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0MS4yIik7CisgICAg
ICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFzY3JpcHQxLjMiKTsKKyAgICAgICAgbGFuZ3Vh
Z2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNCIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCku
YWRkKCJqYXZhc2NyaXB0MS41Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFz
Y3JpcHQxLjYiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNyIp
OworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJsaXZlc2NyaXB0Iik7CisgICAgICAgIGxh
bmd1YWdlcy5nZXQoKS5hZGQoImVjbWFzY3JpcHQiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgp
LmFkZCgianNjcmlwdCIpOwogICAgIH0KIAotICAgIHJldHVybiBsYW5ndWFnZXMuY29udGFpbnMo
bGFuZ3VhZ2UpOworICAgIHJldHVybiBsYW5ndWFnZXMuZ2V0KCkuY29udGFpbnMobGFuZ3VhZ2Up
OwogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVudCgpCkBAIC0zNDcs
NyArMzQ3LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpCiAKICAgICBpZiAobV9yZXF1ZXN0VXNlc0FjY2Vzc0NvbnRyb2wgJiYg
IW1fY2FjaGVkU2NyaXB0LT5wYXNzZXNTYW1lT3JpZ2luUG9saWN5Q2hlY2soKm1fZWxlbWVudC5k
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVu
dCgpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25z
b2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlwdCBsb2FkIGRlbmll
ZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFs
KCJDcm9zcy1vcmlnaW4gc2NyaXB0IGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJj
ZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAgICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25z
b2xlTWVzc2FnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDcyZTNhZDQuLjdiODllMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJWaXNpYmxl
VW5pdHMuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTYyLDcgKzYzLDcgQEAgc3RhdGljIGludCB0b0lk
ZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUpCiAKIHN0YXRpYyBTdHJpbmcmIHN0
eWxlU3BhbkNsYXNzU3RyaW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBzdHlsZVNwYW5DbGFzc1N0cmluZywgKChBcHBsZVN0eWxlU3BhbkNsYXNzKSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0eWxlU3BhbkNsYXNzU3RyaW5n
KEFwcGxlU3R5bGVTcGFuQ2xhc3MpOwogICAgIHJldHVybiBzdHlsZVNwYW5DbGFzc1N0cmluZzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRl
eCBmOTY4MmE0Li5jMTM0MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIK
ICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJO
YW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTksOCArMjYwLDggQEAgYm9vbCBN
YXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlRWxlbWVudChjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogICAgIGlmIChwcmVmaXguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIWVs
ZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zQXRvbSk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCB4bWxuc1dpdGhDb2xvbiwgKEFTQ0lJTGl0ZXJhbCgieG1sbnM6
IikpKTsKLSAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zV2l0aENvbG9uICsg
cHJlZml4KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB4bWxuc1dpdGhDb2xv
bihBU0NJSUxpdGVyYWwoInhtbG5zOiIpKTsKKyAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmli
dXRlKHhtbG5zV2l0aENvbG9uLmdldCgpICsgcHJlZml4KTsKIH0KIAogYm9vbCBNYXJrdXBBY2N1
bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlLCBOYW1lc3BhY2VzJiBuYW1lc3BhY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA3ODk3MmM3Li5lYjQxMGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcApAQCAtMTA0LDE0ICsxMDQsMTQgQEAgcHJpdmF0ZToKIAogc3RhdGljIGJvb2wgaXNJ
bnRlcmNoYW5nZU5ld2xpbmVOb2RlKGNvbnN0IE5vZGUgKm5vZGUpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJp
bmcsIChBcHBsZUludGVyY2hhbmdlTmV3bGluZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nKEFwcGxlSW50ZXJjaGFuZ2VO
ZXdsaW5lKTsKICAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSAmJiAK
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmli
dXRlKGNsYXNzQXR0cikgPT0gaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmc7CiB9CiAKIHN0
YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9kZSAqbm9k
ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb252ZXJ0
ZWRTcGFjZVNwYW5DbGFzc1N0cmluZywgKEFwcGxlQ29udmVydGVkU3BhY2UpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZyhB
cHBsZUNvbnZlcnRlZFNwYWNlKTsKICAgICByZXR1cm4gbm9kZS0+aXNIVE1MRWxlbWVudCgpICYm
IAogICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCAqPihub2RlKS0+Z2V0
QXR0cmlidXRlKGNsYXNzQXR0cikgPT0gY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmc7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDMwNmY0YjIuLjJkN2Fk
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC00MjgsNyArNDI4
LDcgQEAgYm9vbCBpc1RhYmxlU3RydWN0dXJlTm9kZShjb25zdCBOb2RlICpub2RlKQogCiBjb25z
dCBTdHJpbmcmIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcsICgmbm9CcmVh
a1NwYWNlLCAxKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbm9uQnJlYWtp
bmdTcGFjZVN0cmluZygmbm9CcmVha1NwYWNlLCAxKTsKICAgICByZXR1cm4gbm9uQnJlYWtpbmdT
cGFjZVN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDZkMzI2NTYu
LmM3YWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTIxMyw4ICsyMTMsOCBA
QCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFN0
cmluZ0J1aWxkZXImIG91dCwgU3R5bGVQcgogCiBjb25zdCBTdHJpbmcmIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyhib29sIGlzQmxvY2spCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xvc2UsIChBU0NJSUxp
dGVyYWwoIjwvZGl2PiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2UsIChBU0NJSUxpdGVyYWwoIjwvc3Bhbj4iKSkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGRpdkNsb3NlKEFTQ0lJTGl0
ZXJhbCgiPC9kaXY+IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+
IHN0eWxlU3BhbkNsb3NlKEFTQ0lJTGl0ZXJhbCgiPC9zcGFuPiIpKTsKICAgICByZXR1cm4gaXNC
bG9jayA/IGRpdkNsb3NlIDogc3R5bGVTcGFuQ2xvc2U7CiB9CiAKQEAgLTU3Nyw3ICs1NzcsNyBA
QCBzdGF0aWMgTm9kZSogaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKGNvbnN0IFJhbmdlKiBy
YW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaAogc3RhdGljIFN0cmluZyBjcmVhdGVNYXJrdXBJbnRl
cm5hbChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJhbmdlJiByYW5nZSwgVmVjdG9yPE5vZGUq
Piogbm9kZXMsCiAgICAgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGJv
b2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJM
cykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBp
bnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcsIChBU0NJSUxpdGVyYWwoIjxiciBjbGFzcz1cIiIgQXBw
bGVJbnRlcmNoYW5nZU5ld2xpbmUgIlwiPiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiPGJy
IGNsYXNzPVwiIiBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAiXCI+IikpOwogCiAgICAgYm9vbCBj
b2xsYXBzZWQgPSByYW5nZS5jb2xsYXBzZWQoKTsKICAgICBpZiAoY29sbGFwc2VkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5jcHAKaW5kZXggNmIwMzNiMC4uMGY0Y2U5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MSwxMSArNjIsMTAgQEAgdm9p
ZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJiB1cmwpCiAKIFVSTFJl
Z2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQmxvYlVSTFJlZ2lzdHJ5LCBpbnN0YW5jZSwgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxCbG9iVVJMUmVnaXN0cnk+IGluc3RhbmNlOwogICAgIHJldHVy
biBpbnN0YW5jZTsKIH0KIAotCiBCbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25s
eURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCBhMzJhMGI3Li5hZGIwZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTU4LDcgKzU5LDcgQEAgdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlu
cHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCopCiAKIHZvaWQgQmFzZUNob29z
ZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHZhbHVlQ29udGFp
bmVyUHNldWRvLCAoIi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiB2YWx1ZUNvbnRhaW5lclBzZXVkbygiLXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBSZWY8SFRNTERp
dkVsZW1lbnQ+IHZhbHVlQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50
KCkuZG9jdW1lbnQoKSk7CiAgICAgdmFsdWVDb250YWluZXItPnNldFBzZXVkbyh2YWx1ZUNvbnRh
aW5lclBzZXVkbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCBiMWU4
MjlkLi5iMzRmN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw3ICs2Miw3IEBA
IERhdGVDb21wb25lbnRzOjpUeXBlIERhdGVJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIAog
U3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAo
ZGF0ZURlZmF1bHRTdGVwLCBkYXRlRGVmYXVsdFN0ZXBCYXNlLCBkYXRlU3RlcFNjYWxlRmFjdG9y
LCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERl
c2NyaXB0aW9uKGRhdGVEZWZhdWx0U3RlcCwgZGF0ZURlZmF1bHRTdGVwQmFzZSwgZGF0ZVN0ZXBT
Y2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpOwog
CiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwogICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9
IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2lt
YWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKaW5kZXggYjJlZmU4NS4uYjI5NDUxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5o
IgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDcgKzYzLDcgQEAgRGVjaW1h
bCBEYXRlVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3Rl
cFJhbmdlIERhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5n
IGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwg
KGRhdGVUaW1lRGVmYXVsdFN0ZXAsIGRhdGVUaW1lRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZVN0
ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb24+IHN0ZXBEZXNjcmlwdGlvbihkYXRlVGltZURlZmF1bHRTdGVwLCBkYXRlVGltZURlZmF1
bHRTdGVwQmFzZSwgZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3Rl
cFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKICAg
ICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjpt
aW5pbXVtRGF0ZVRpbWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
VGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5jcHAKaW5kZXggNGE0MzhmMy4uODIxYzgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjgsNyArNjksNyBAQCB2b2lkIERhdGVUaW1l
TG9jYWxJbnB1dFR5cGU6OnNldFZhbHVlQXNEYXRlKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbgogCiBTdGVwUmFuZ2UgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6Y3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0
aW9uLCBzdGVwRGVzY3JpcHRpb24sIChkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXAsIGRhdGVUaW1l
TG9jYWxEZWZhdWx0U3RlcEJhc2UsIGRhdGVUaW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IsIFN0ZXBS
YW5nZTo6U2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRp
b24oZGF0ZVRpbWVMb2NhbERlZmF1bHRTdGVwLCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNl
LCBkYXRlVGltZUxvY2FsU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcik7CiAKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7CiAgICAgY29u
c3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJp
YnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11
bURhdGVUaW1lKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXgg
ZGFlMTc4Mi4uZTZlMDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KIApAQCAtNDQsMTAg
KzQ1LDEwIEBAIHN0YXRpYyBib29sIGlzVmFsaWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBh
ZGRyZXNzKQogICAgIGlmICghYWRkcmVzc0xlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEpTQzo6WWFycjo6UmVn
dWxhckV4cHJlc3Npb24sIHJlZ0V4cCwgKGVtYWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2
ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJF
eHByZXNzaW9uPiByZWdFeHAoZW1haWxQYXR0ZXJuLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKIAog
ICAgIGludCBtYXRjaExlbmd0aDsKLSAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAubWF0Y2go
YWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKKyAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAu
Z2V0KCkubWF0Y2goYWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKIAogICAgIHJldHVybiAhbWF0
Y2hPZmZzZXQgJiYgbWF0Y2hMZW5ndGggPT0gYWRkcmVzc0xlbmd0aDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggYjBmM2E5Mi4uY2RjN2IxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzMyw3ICszMzQsNyBAQCBBdG9t
aWNTdHJpbmcgRm9ybUtleUdlbmVyYXRvcjo6Zm9ybUtleShjb25zdCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlJiBjbwogewogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IG93bmVy
Rm9ybUZvclN0YXRlKGNvbnRyb2wpOwogICAgIGlmICghZm9ybSkgewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmb3JtS2V5Rm9yTm9Pd25lciwg
KCJObyBvd25lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZm9ybUtleUZvck5vT3duZXIo
Ik5vIG93bmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAg
IHJldHVybiBmb3JtS2V5Rm9yTm9Pd25lcjsKICAgICB9CiAgICAgRm9ybVRvS2V5TWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fZm9ybVRvS2V5TWFwLmZpbmQoZm9ybSk7CkBAIC0zODYsNyArMzg3
LDcgQEAgc3RhdGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogICAgIC8vIEluIHRoZSBs
ZWdhY3kgdmVyc2lvbiBvZiBzZXJpYWxpemVkIHN0YXRlLCB0aGUgZmlyc3QgaXRlbSB3YXMgYSBu
YW1lCiAgICAgLy8gYXR0cmlidXRlIHZhbHVlIG9mIGEgZm9ybSBjb250cm9sLiBUaGUgZm9sbG93
aW5nIHN0cmluZyBsaXRlcmFsIHNob3VsZAogICAgIC8vIGNvbnRhaW4gc29tZSBjaGFyYWN0ZXJz
IHdoaWNoIGFyZSByYXJlbHkgdXNlZCBmb3IgbmFtZSBhdHRyaWJ1dGUgdmFsdWVzLgotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNpZ25hdHVyZSwgKEFTQ0lJTGl0
ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxuXHI9
JiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2lnbmF0dXJlKEFTQ0lJ
TGl0ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxu
XHI9JiIpKTsKICAgICByZXR1cm4gc2lnbmF0dXJlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDllYWVjZmQuLjQxOWE0YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC02MTksNyArNjE5LDcgQEAgdHlw
ZWRlZiBIYXNoTWFwPGNvbnN0IEhUTUxBbmNob3JFbGVtZW50KiwgUmVmUHRyPEVsZW1lbnQ+PiBS
b290RWRpdGFibGVFbGVtZW50TWEKIAogc3RhdGljIFJvb3RFZGl0YWJsZUVsZW1lbnRNYXAmIHJv
b3RFZGl0YWJsZUVsZW1lbnRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChSb290RWRpdGFibGVFbGVtZW50TWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Um9vdEVkaXRhYmxlRWxlbWVudE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggMmU3M2Rl
ZC4uZGY4ZTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAK
QEAgLTY1LDE1ICs2NSwxNSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxCdXR0b25FbGVtZW50
Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAg
ICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJtaXQsICgic3VibWl0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VibWl0KCJzdWJtaXQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgICAgIHJldHVybiBzdWJtaXQ7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBCVVRUT046IHsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJ1dHRvbiwgKCJidXR0b24iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBidXR0b24oImJ1dHRvbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbjsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIFJFU0VUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCByZXNldCwgKCJyZXNldCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHJlc2V0KCJyZXNldCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAgICAgcmV0dXJuIHJlc2V0
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAKaW5kZXggOTE2MmFmYy4uZDA4N2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBIVE1MRmll
bGRTZXRFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZpZWxkc2V0
LCAoImZpZWxkc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZpZWxkc2V0KCJmaWVs
ZHNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBm
aWVsZHNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVP
d25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgKaW5kZXggMDFmYTcwMC4uOTY2NzFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg4LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVy
Tm9kZSo+JiBkaXNhYmxlZFN1YnRyZWVSb290cygpCiAgICAgewotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+LCBub2Rl
cywgKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaENvdW50ZWRTZXQ8Q29u
dGFpbmVyTm9kZSo+PiBub2RlczsKICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAppbmRleCBhYTA5MWZiLi44OTQ0
YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogICAgIEtleWdlblNlbGVjdEVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICA6IEhUTUxTZWxlY3RFbGVtZW50KHNlbGVj
dFRhZywgZG9jdW1lbnQsIDApCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwc2V1ZG9JZCwgKCItd2Via2l0LWtleWdlbi1zZWxlY3Qi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LWtleWdlbi1zZWxl
Y3QiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgc2V0UHNl
dWRvKHBzZXVkb0lkKTsKICAgICB9CiAKQEAgLTExMiw3ICsxMTMsNyBAQCBib29sIEhUTUxLZXln
ZW5FbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kZWRfdmFsdWVzLCBi
b29sKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxLZXlnZW5FbGVtZW50Ojpmb3JtQ29udHJv
bFR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGtleWdlbiwgKCJrZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4ga2V5Z2VuKCJrZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4ga2V5Z2VuOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKaW5kZXggYjU4MzIyMy4uMWM0OWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBzdGF0aWMgTGlua0V2ZW50U2VuZGVyJiBsaW5rTG9hZEV2ZW50U2VuZGVyKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTGlua0V2ZW50U2VuZGVyLCBzaGFy
ZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPExpbmtFdmVudFNlbmRlcj4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyKGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwogICAgIHJldHVybiBzaGFyZWRMb2FkRXZlbnRTZW5kZXI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDgxNTE2
ZmEuLjY4NGQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtMjA1LDcgKzIwNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB0eXBlZGVmIEhh
c2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVt
ZW50U2V0TWFwOwogc3RhdGljIERvY3VtZW50RWxlbWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1l
bnRTZXRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEb2N1bWVu
dEVsZW1lbnRTZXRNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEb2N1
bWVudEVsZW1lbnRTZXRNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGFiYTAwMWIuLmM0NTZlNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00MDQsOCArNDA0
LDggQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkLCBhbGwgY2FsbGVycyBhcmUgYWxtb3N0IGNl
cnRhaW5seSB3cm9uZy4KIHN0YXRpYyBib29sIGlzUmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIHRhZ0xpc3QsICgpKTsKLSAgICBpZiAodGFn
TGlzdC5pc0VtcHR5KCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4+IHRhZ0xpc3Q7CisgICAgaWYgKHRhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGF1dG8qIHRhZ3MgPSBIVE1MTmFtZXM6OmdldEhUTUxUYWdzKCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRNTE5hbWVzOjpIVE1MVGFnc0NvdW50OyBpKysp
IHsKICAgICAgICAgICAgIGlmICgqdGFnc1tpXSA9PSBiZ3NvdW5kVGFnCkBAIC00MjAsMTAgKzQy
MCwxMCBAQCBzdGF0aWMgYm9vbCBpc1JlY29nbml6ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUpCiAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IGNoYW5nZXMgaG93
IHdlIHBhcnNlIGRvY3VtZW50cy4KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHRhZ0xpc3QuYWRkKHRhZ3NbaV0tPmxvY2FsTmFtZSgpLmltcGwo
KSk7CisgICAgICAgICAgICB0YWdMaXN0LmdldCgpLmFkZCh0YWdzW2ldLT5sb2NhbE5hbWUoKS5p
bXBsKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiB0YWdMaXN0LmNvbnRhaW5zKHRh
Z05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICByZXR1cm4gdGFnTGlzdC5nZXQoKS5jb250
YWlucyh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVs
ZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50LmNwcAppbmRleCBlMGJkOGNmLi44NjIyNjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBI
VE1MT3B0R3JvdXBFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcHRn
cm91cCwgKCJvcHRncm91cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBvcHRncm91cCgi
b3B0Z3JvdXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gb3B0Z3JvdXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91
dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5j
cHAKaW5kZXggMmY2YmE3Yi4uZWRkYTRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01NCw3ICs1NSw3IEBAIFJlZjxIVE1MT3V0cHV0RWxlbWVudD4gSFRN
TE91dHB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgp
IGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21p
Y1N0cmluZywgb3V0cHV0LCAoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBv
dXRwdXQoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBvdXRwdXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKaW5kZXggMDExNzVkOS4uNTdhNTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3Ry
YXIoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4mKTsKIAogc3RhdGljIFZlY3RvcjxSZXBsYWNlbWVu
dFBsdWdpbio+JiByZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFJlcGxhY2VtZW50UGx1Z2luKj4sIHJlZ2lz
dGVyZWRSZXBsYWNlbWVudHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9y
PFJlcGxhY2VtZW50UGx1Z2luKj4+IHJlZ2lzdGVyZWRSZXBsYWNlbWVudHM7CiAgICAgc3RhdGlj
IGJvb2wgZW5naW5lc1F1ZXJpZWQgPSBmYWxzZTsKICAgICAKICAgICBpZiAoZW5naW5lc1F1ZXJp
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApp
bmRleCBkNjhhNTk5Li4wOWU3YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTc0LDI5ICs3NCwyOSBAQCBzdGF0aWMgY29uc3QgYXV0
byByZW1vdmVTbmFwc2hvdFRpbWVyRGVsYXkgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHsg
MTUwMCB9OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJp
bmcgbWltZVR5cGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE1pbWVU
eXBlVG9Mb2NhbGl6ZWRTdHJpbmdNYXAsIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLCAoKSk7Ci0g
ICAgU3RyaW5nIHRpdGxlVGV4dCA9IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLmdldChtaW1lVHlw
ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1pbWVUeXBlVG9Mb2NhbGl6ZWRTdHJpbmdN
YXA+IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwOworICAgIFN0cmluZyB0aXRsZVRleHQgPSBtaW1l
VHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5nZXQobWltZVR5cGUpOwogICAgIGlmICghdGl0bGVU
ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIAogICAgIHRpdGxlVGV4
dCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxUaXRsZShtaW1lVHlw
ZSk7CiAgICAgaWYgKHRpdGxlVGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHRpdGxlVGV4dCA9IHNu
YXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpOwotICAgIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFw
LnNldChtaW1lVHlwZSwgdGl0bGVUZXh0KTsKKyAgICBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5n
ZXQoKS5zZXQobWltZVR5cGUsIHRpdGxlVGV4dCk7CiAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIH07
CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgc3VidGl0bGVUZXh0KFBhZ2UqIHBhZ2UsIFN0cmluZyBt
aW1lVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTWltZVR5cGVU
b0xvY2FsaXplZFN0cmluZ01hcCwgbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAsICgpKTsKLSAg
ICBTdHJpbmcgc3VidGl0bGVUZXh0ID0gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuZ2V0KG1p
bWVUeXBlKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWltZVR5cGVUb0xvY2FsaXplZFN0
cmluZ01hcD4gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXA7CisgICAgU3RyaW5nIHN1YnRpdGxl
VGV4dCA9IG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLmdldChtaW1lVHlwZSk7CiAg
ICAgaWYgKCFzdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3VidGl0bGVU
ZXh0OwogCiAgICAgc3VidGl0bGVUZXh0ID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0lu
U3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBlKTsKICAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1w
dHkoKSkKICAgICAgICAgc3VidGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRp
dGxlKCk7Ci0gICAgbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuc2V0KG1pbWVUeXBlLCBzdWJ0
aXRsZVRleHQpOworICAgIG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLnNldChtaW1l
VHlwZSwgc3VidGl0bGVUZXh0KTsKICAgICByZXR1cm4gc3VidGl0bGVUZXh0OwogfTsKIApAQCAt
NDA4LDExICs0MDgsMTEgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2Vy
QWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVybGF5KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0
b3IsICgiLnNuYXBzaG90LW92ZXJsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc2VsZWN0b3Io
Ii5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgU2hhZG93Um9vdCogc2hhZG93ID0gdXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlm
ICghc2hhZG93KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHNu
YXBzaG90TGFiZWwgPSBzaGFkb3ctPnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IsIEFTU0VSVF9OT19F
WENFUFRJT04pOworICAgIFJlZlB0cjxFbGVtZW50PiBzbmFwc2hvdExhYmVsID0gc2hhZG93LT5x
dWVyeVNlbGVjdG9yKHNlbGVjdG9yLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBy
ZXR1cm4gbm9kZSAmJiBzbmFwc2hvdExhYmVsICYmIChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0
KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yoc25hcHNob3RMYWJlbC5nZXQoKSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU3MzA0N2YuLmFl
ZGVkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC05
Nyw4ICs5Nyw4IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxl
OjpDaGFuZ2Ugc3R5bGVDaGFuZ2UpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVs
ZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2VsZWN0TXVsdGlwbGUsICgic2VsZWN0
LW11bHRpcGxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNlbGVjdE9u
ZSwgKCJzZWxlY3Qtb25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNlbGVjdE11bHRp
cGxlKCJzZWxlY3QtbXVsdGlwbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzZWxlY3RP
bmUoInNlbGVjdC1vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gbV9tdWx0aXBsZSA/IHNlbGVjdE11bHRpcGxlIDogc2VsZWN0T25lOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAppbmRleCBhY2VkZWQ0Li41MWM2
ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIFN0eWxlRXZlbnRT
ZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3R5bGVFdmVudFNlbmRlciwgc2hhcmVkTG9hZEV2ZW50U2VuZGVyLCAoZXZl
bnROYW1lcygpLmxvYWRFdmVudCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHlsZUV2
ZW50U2VuZGVyPiBzaGFyZWRMb2FkRXZlbnRTZW5kZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7
CiAgICAgcmV0dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNzg5NDM3Yy4uMmM4Y2U0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xMTUsNyAr
MTE1LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRleHRBcmVh
RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0ZXh0YXJlYSwgKCJ0ZXh0YXJlYSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0ZXh0YXJlYSgidGV4dGFyZWEiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gdGV4dGFyZWE7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggZDdmMDczNy4uMDk2MzcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTM3NSw5ICszNzUsOSBAQCBpbnQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVTZWxlY3Rpb25FbmQoKSBjb25zdAog
CiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcoVGV4dEZpZWxkU2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBub25lLCAoIm5vbmUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9yd2FyZCwgKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJhY2t3YXJkLCAoImJhY2t3YXJkIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBmb3J3YXJkKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmFja3dhcmQo
ImJhY2t3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDEzMTBjZTkuLjVjYmYyZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC02NCwxMCArNjQsMTAg
QEAgYm9vbCBJbWFnZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNv
ZGluZywgYm9vbCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG90WFN0cmluZywgKEFTQ0lJTGl0
ZXJhbCgiLngiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGRvdFlTdHJpbmcsIChBU0NJSUxpdGVyYWwoIi55IikpKTsKLSAgICBlbmNvZGluZy5hcHBlbmRE
YXRhKG5hbWUgKyBkb3RYU3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueCgpKTsKLSAgICBlbmNvZGlu
Zy5hcHBlbmREYXRhKG5hbWUgKyBkb3RZU3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkb3RYU3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
LngiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZG90WVN0cmluZyhBU0NJ
SUxpdGVyYWwoIi55IikpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSArIGRvdFhTdHJp
bmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi54KCkpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEo
bmFtZSArIGRvdFlTdHJpbmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi55KCkpOwogCiAgICAgaWYg
KCFlbGVtZW50KCkudmFsdWUoKS5pc0VtcHR5KCkpCiAgICAgICAgIGVuY29kaW5nLmFwcGVuZERh
dGEobmFtZSwgZWxlbWVudCgpLnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5h
bWVzLmNwcAppbmRleCBhYzA4OTZhLi40Mzg3NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZU5hbWVzLmNwcApAQCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgSW5wdXRUeXBlTmFtZXMgewpA
QCAtMzEsMTM5ICszMywxMzkgQEAgbmFtZXNwYWNlIElucHV0VHlwZU5hbWVzIHsKIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBidXR0b24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGNoZWNrYm94KCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImNo
ZWNrYm94IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImNoZWNrYm94IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgY29sb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
bmFtZSgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBy
ZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBkYXRlKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImRhdGUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiZGF0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IGRhdGV0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBuYW1lLCAoImRhdGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImRh
dGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWVsb2NhbCgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRl
dGltZS1sb2NhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJkYXRldGltZS1sb2NhbCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImVtYWlsIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5hbWUoImVtYWlsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgZmlsZSgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwg
KCJmaWxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImZpbGUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBoaWRkZW4oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIG5hbWUsICgiaGlkZGVuIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5h
bWUoImhpZGRlbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImltYWdlIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImltYWdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbW9udGgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIG5hbWUsICgibW9udGgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgibW9udGgi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBudW1iZXIoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgibnVtYmVyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IG5hbWUoIm51bWJlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3N3
b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBuYW1lLCAoInBhc3N3b3JkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInBhc3N3b3Jk
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaW8oKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgicmFkaW8iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gbmFtZSgicmFkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiByYW5nZSgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFt
ZSwgKCJyYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJyYW5nZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInNlYXJj
aCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJzZWFyY2giLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBzdWJtaXQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIG5hbWUsICgic3VibWl0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUo
InN1Ym1pdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHRlbGVwaG9uZSgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ0ZWwiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGVsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
dGV4dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgbmFtZSwgKCJ0ZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInRleHQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiB0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInRpbWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gbmFtZSgidGltZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHVybCgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ1cmwiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidXJsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
d2VlaygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgbmFtZSwgKCJ3ZWVrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoIndlZWsiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IGRiYjAyYWIuLjQ3YTk1
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKQEAgLTI5MCwxOSAr
MjkwLDE5IEBAIHZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChib29sIGZsYWcpCiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBsYXliYWNrU3RhdGVXYWl0aW5nKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB3YWl0aW5nLCAoIndh
aXRpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gd2FpdGluZygid2FpdGluZyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiB3YWl0aW5nOwogfQogCiBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwbGF5YmFja1N0YXRlUGxheWluZygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGxheWluZywgKCJw
bGF5aW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBsYXlpbmcoInBsYXlpbmciLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcGxheWluZzsKIH0KIAog
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGxheWJhY2tTdGF0ZUVuZGVkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbmRlZCwgKCJlbmRl
ZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggNDcyOTg3Mi4uMDIwOTI5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgRGVjaW1hbCBN
b250aElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3RlcFJhbmdl
IE1vbnRoSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBI
YW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKG1vbnRoRGVm
YXVsdFN0ZXAsIG1vbnRoRGVmYXVsdFN0ZXBCYXNlLCBtb250aFN0ZXBTY2FsZUZhY3RvciwgU3Rl
cFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0ZXBEZXNjcmlw
dGlvbihtb250aERlZmF1bHRTdGVwLCBtb250aERlZmF1bHRTdGVwQmFzZSwgbW9udGhTdGVwU2Nh
bGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAog
ICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0
R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKG1vbnRoRGVmYXVsdFN0
ZXBCYXNlKSk7CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVt
ZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRl
Q29tcG9uZW50czo6bWluaW11bU1vbnRoKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5w
dXRUeXBlLmNwcAppbmRleCBmZDM1YmI4Li5mNjYwNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9O
dW1iZXJJbnB1dFR5cGUuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBOdW1iZXJJbnB1dFR5
cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiAKIFN0ZXBSYW5nZSBOdW1iZXJJbnB1dFR5cGU6OmNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRl
ZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRp
b24obnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNj
YWxlRmFjdG9yKTsKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0RlY2ltYWxG
b3JOdW1iZXJUeXBlKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJE
ZWZhdWx0U3RlcEJhc2UpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGlt
aXRzPGRvdWJsZT46Om1heCBmb3IgbnVtYmVyIGlucHV0IHR5cGUuCiAgICAgY29uc3QgRGVjaW1h
bCBmbG9hdE1heCA9IERlY2ltYWw6OmZyb21Eb3VibGUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggMjRm
N2JiYy4uZTBkNzcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVkKCkg
Y29uc3QKIAogU3RlcFJhbmdlIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3Rl
cEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNj
cmlwdGlvbiwgKHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0
ZXBTY2FsZUZhY3RvcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFu
Z2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHJhbmdlRGVmYXVsdFN0ZXAsIHJh
bmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3Rvcik7CiAKICAgICBjb25zdCBE
ZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRl
KG1pbkF0dHIpLCByYW5nZURlZmF1bHRNaW5pbXVtKTsKICAgICBjb25zdCBEZWNpbWFsIG1heGlt
dW0gPSBlbnN1cmVNYXhpbXVtKHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1
dGUobWF4QXR0ciksIHJhbmdlRGVmYXVsdE1heGltdW0pLCBtaW5pbXVtLCByYW5nZURlZmF1bHRN
YXhpbXVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCBjNDc3MThhLi5lYmYzMWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjUsMTMgKzY2LDEzIEBAIFN0ZXBSYW5nZTo6U3RlcFJh
bmdlKGNvbnN0IERlY2ltYWwmIHN0ZXBCYXNlLCBjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25z
dCBEZWNpCiBEZWNpbWFsIFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9yKCkgY29uc3QKIHsKICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBEQkxfTUFOVF9ESUcgaW5zdGVhZCBvZiBGTFRfTUFO
VF9ESUcgcmVnYXJkaW5nIHRvIEhUTUw1IHNwZWNpZmljYXRpb24uCi0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IERlY2ltYWwsIHR3b1Bvd2VyT2ZGbG9hdE1hbnRpc3Nh
Qml0cywgKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgRGVjaW1hbD4gdHdvUG93ZXJPZkZs
b2F0TWFudGlzc2FCaXRzKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRf
TUFOVF9ESUcpOwogICAgIHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5zdGVwVmFsdWVTaG91bGRC
ZSA9PSBTdGVwVmFsdWVTaG91bGRCZVJlYWwgPyBtX3N0ZXAgLyB0d29Qb3dlck9mRmxvYXRNYW50
aXNzYUJpdHMgOiBEZWNpbWFsKDApOwogfQogCiBEZWNpbWFsIFN0ZXBSYW5nZTo6YWxpZ25WYWx1
ZUZvclN0ZXAoY29uc3QgRGVjaW1hbCYgY3VycmVudFZhbHVlLCBjb25zdCBEZWNpbWFsJiBuZXdW
YWx1ZSkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
RGVjaW1hbCwgdGVuUG93ZXJPZjIxLCAoRGVjaW1hbDo6UG9zaXRpdmUsIDIxLCAxKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IERlY2ltYWw+IHRlblBvd2VyT2YyMShEZWNpbWFs
OjpQb3NpdGl2ZSwgMjEsIDEpOwogICAgIGlmIChuZXdWYWx1ZSA+PSB0ZW5Qb3dlck9mMjEpCiAg
ICAgICAgIHJldHVybiBuZXdWYWx1ZTsKIApAQCAtMTUwLDcgKzE1MSw3IEBAIGJvb2wgU3RlcFJh
bmdlOjpzdGVwTWlzbWF0Y2goY29uc3QgRGVjaW1hbCYgdmFsdWVGb3JDaGVjaykgY29uc3QKICAg
ICAvLyBEZWNpbWFsJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0LiBJ
ZiB0aGUgY3VycmVudCB2YWx1ZQogICAgIC8vIGlzIGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJMX01B
TlRfRElHLCB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIGZvcgogICAgIC8vIHJlbWFpbmRlciBt
YWtlcyBubyBzZW5zZS4KLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
RGVjaW1hbCwgdHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cywgKERlY2ltYWw6OlBvc2l0aXZl
LCAwLCBVSU5UNjRfQygxKSA8PCBEQkxfTUFOVF9ESUcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgRGVjaW1hbD4gdHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cyhEZWNpbWFs
OjpQb3NpdGl2ZSwgMCwgVUlOVDY0X0MoMSkgPDwgREJMX01BTlRfRElHKTsKICAgICBpZiAodmFs
dWUgLyB0d29Qb3dlck9mRG91YmxlTWFudGlzc2FCaXRzID4gbV9zdGVwKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgLy8gVGhlIGNvbXB1dGF0aW9uIGZvbGxvd3MgSFRNTDUgNC4xMC43LjIu
MTAgYFRoZSBzdGVwIGF0dHJpYnV0ZScgOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5j
cHAKaW5kZXggYzA5MDQxOS4uODczYmM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5
cGUuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIERlY2ltYWwgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZh
bHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0
ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlw
dGlvbiwgc3RlcERlc2NyaXB0aW9uLCAodGltZURlZmF1bHRTdGVwLCB0aW1lRGVmYXVsdFN0ZXBC
YXNlLCB0aW1lU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3Vs
ZEJlSW50ZWdlcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6
OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHRpbWVEZWZhdWx0U3RlcCwgdGltZURl
ZmF1bHRTdGVwQmFzZSwgdGltZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVw
VmFsdWVTaG91bGRCZUludGVnZXIpOwogCiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBh
cnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwogICAg
IGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRB
dHRyaWJ1dGUobWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1p
bmltdW1UaW1lKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCmluZGV4IDg0
Y2E5ODguLjE4YzA0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBEYXRlQ29tcG9uZW50czo6VHlwZSBXZWVrSW5wdXRUeXBlOjpkYXRlVHlw
ZSgpIGNvbnN0CiAKIFN0ZXBSYW5nZSBXZWVrSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55
U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBE
ZXNjcmlwdGlvbiwgKHdlZWtEZWZhdWx0U3RlcCwgd2Vla0RlZmF1bHRTdGVwQmFzZSwgd2Vla1N0
ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb24+IHN0ZXBEZXNjcmlwdGlvbih3ZWVrRGVmYXVsdFN0ZXAsIHdlZWtEZWZhdWx0U3RlcEJh
c2UsIHdlZWtTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxk
QmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVy
KGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNl
KTsKICAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5m
YXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25l
bnRzOjptaW5pbXVtV2VlaygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA2NTQyN2ExLi5hNjAzMzdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCiAjaWYgVVNFKENHKQpAQCAtMTk1OSw3ICsxOTYwLDcgQEAgUmVmUHRyPEltYWdlRGF0YT4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp3ZWJraXRHZXRJbWFnZURhdGFIRChmbG9hdCBzeCwg
ZmxvYXQKIFJlZlB0cjxJbWFnZURhdGE+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1h
Z2VEYXRhKEltYWdlQnVmZmVyOjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0sIGZs
b2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBFeGNlcHRpb25Db2RlJiBlYykg
Y29uc3QKIHsKICAgICBpZiAoIWNhbnZhcygpLT5vcmlnaW5DbGVhbigpKSB7Ci0gICAgICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVND
SUlMaXRlcmFsKCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0
aGUgY2FudmFzIGhhcyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEuIikpKTsKKyAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlM
aXRlcmFsKCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0aGUg
Y2FudmFzIGhhcyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEuIikpOwogICAgICAg
ICBjYW52YXMoKS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UpOwogICAgICAgICBl
YyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGQ5YWUxMmEuLmExOTFmMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNzMsNyArMjc0LDcgQEAgdm9pZCBYU1NB
dWRpdG9yOjppbml0KERvY3VtZW50KiBkb2N1bWVudCwgWFNTQXVkaXRvckRlbGVnYXRlKiBhdWRp
dG9yRGVsZWdhdGUpCiAKICAgICBTdHJpbmcgaHR0cEJvZHlBc1N0cmluZzsKICAgICBpZiAoRG9j
dW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCkpIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgWFNTUHJvdGVjdGlvbkhlYWRlciwgKEFTQ0lJTGl0ZXJhbCgiWC1YU1MtUHJv
dGVjdGlvbiIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IFhTU1By
b3RlY3Rpb25IZWFkZXIoQVNDSUlMaXRlcmFsKCJYLVhTUy1Qcm90ZWN0aW9uIikpOwogICAgICAg
ICBTdHJpbmcgaGVhZGVyVmFsdWUgPSBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVh
ZGVyRmllbGQoWFNTUHJvdGVjdGlvbkhlYWRlcik7CiAgICAgICAgIFN0cmluZyBlcnJvckRldGFp
bHM7CiAgICAgICAgIHVuc2lnbmVkIGVycm9yUG9zaXRpb24gPSAwOwpAQCAtNTIzLDcgKzUyNCw3
IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQnV0dG9uVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5S
ZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmli
dXRlc0lmSW5qZWN0ZWQoY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNhZmVKYXZhU2NyaXB0VVJM
LCAoQVNDSUlMaXRlcmFsKCJqYXZhc2NyaXB0OnZvaWQoMCkiKSkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IHNhZmVKYXZhU2NyaXB0VVJMKEFTQ0lJTGl0ZXJhbCgiamF2YXNj
cmlwdDp2b2lkKDApIikpOwogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdC50b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgp
OyArK2kpIHsKQEAgLTUzOCw3ICs1MzksNyBAQCBib29sIFhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vy
b3VzQXR0cmlidXRlc0lmSW5qZWN0ZWQoY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIHJlcXVlc3QudG9rZW4uZXJhc2VWYWx1ZU9mQXR0
cmlidXRlKGkpOwogICAgICAgICBpZiAodmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwpCi0gICAg
ICAgICAgICByZXF1ZXN0LnRva2VuLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoaSwgc2FmZUphdmFT
Y3JpcHRVUkwpOworICAgICAgICAgICAgcmVxdWVzdC50b2tlbi5hcHBlbmRUb0F0dHJpYnV0ZVZh
bHVlKGksIHNhZmVKYXZhU2NyaXB0VVJMLmdldCgpKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQg
PSB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggMDc5
YmMwZi4uZjdhM2M3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVuCiB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVu
dDo6dXBkYXRlRGlzcGxheSgpCiB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdGVkQ2xhc3NWYWx1
ZSwgKCJzZWxlY3RlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzZWxlY3RlZENsYXNzVmFsdWUo
InNlbGVjdGVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBp
ZiAoIW1lZGlhQ29udHJvbGxlcigpLT5oYXNDbG9zZWRDYXB0aW9ucygpKQogICAgICAgICByZXR1
cm47CkBAIC0xMDM4LDcgKzEwMzgsNyBAQCBSZWY8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rp
c3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZQogCiBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxh
eUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJl
bWFpbmluZy1kaXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGlkKCItd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gaWQ7CiB9CiAKQEAgLTEwNTcsNyArMTA1Nyw3IEBA
IFJlZjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xD
dXJyZW50VGltZURpc3BsYXlFbGVtZW50CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGdl
dE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgi
LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBpZCgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxh
eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBpZDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVu
dC5jcHAKaW5kZXggMTY0NWI4Mi4uODA4MmNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wg
TWV0ZXJTaGFkb3dFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKIE1ldGVySW5uZXJFbGVtZW50OjpNZXRlcklubmVyRWxlbWVudChEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgOiBNZXRlclNoYWRvd0VsZW1lbnQoZG9jdW1lbnQpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHNldWRvSWQsICgiLXdlYmtp
dC1tZXRlci1pbm5lci1lbGVtZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBzZXVkb0lkKCIt
d2Via2l0LW1ldGVyLWlubmVyLWVsZW1lbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICBzZXRQc2V1ZG8ocHNldWRvSWQpOwogfQogCkBAIC04MCw5ICs4MCw5IEBA
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWV0ZXJWYWx1
ZUVsZW1lbnQ6OnZhbHVlUHNldWRvSWQoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9wdGltdW1Qc2V1ZG9JZCwgKCItd2Via2l0LW1l
dGVyLW9wdGltdW0tdmFsdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc3Vib3B0
aW11bVBzZXVkb0lkLCAoIi13ZWJraXQtbWV0ZXItc3Vib3B0aW11bS12YWx1ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBldmVuTGVzc0dvb2RQc2V1ZG9JZCwgKCItd2Via2l0LW1l
dGVyLWV2ZW4tbGVzcy1nb29kLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wdGltdW1Q
c2V1ZG9JZCgiLXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gc3Vib3B0aW11bVBzZXVkb0lkKCItd2Via2l0LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBldmVuTGVzc0dvb2RQc2V1ZG9JZCgiLXdlYmtpdC1tZXRlci1l
dmVuLWxlc3MtZ29vZC12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogCiAgICAgSFRNTE1ldGVyRWxlbWVudCogbWV0ZXIgPSBtZXRlckVsZW1lbnQoKTsKICAgICBp
ZiAoIW1ldGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJT
aGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0Vs
ZW1lbnQuaAppbmRleCA0ZjliMzA0Li43NzA2YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVO
QUJMRShNRVRFUl9FTEVNRU5UKQogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NSw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgTWV0ZXJC
YXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgOiBNZXRlclNoYWRvd0VsZW1l
bnQoZG9jdW1lbnQpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBwc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLWJhciIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gcHNldWRvSWQoIi13ZWJraXQtbWV0ZXItYmFyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHNldFBzZXVkbyhwc2V1ZG9JZCk7
CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwCmluZGV4IGZiNTgzMzYuLjBkODkxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNTc2LDEzICs1NzYs
MTMgQEAgSFRNTElucHV0RWxlbWVudCogU2xpZGVyVGh1bWJFbGVtZW50Ojpob3N0SW5wdXQoKSBj
b25zdAogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzbGlkZXJUaHVtYlNoYWRvd1BzZXVk
b0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCBzbGlkZXJUaHVtYiwgKCItd2Via2l0LXNsaWRlci10aHVtYiIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiBzbGlkZXJUaHVtYigiLXdlYmtpdC1zbGlkZXItdGh1bWIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc2xpZGVyVGh1bWI7
CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhU2xpZGVyVGh1bWJTaGFkb3dQ
c2V1ZG9JZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgbWVkaWFTbGlkZXJUaHVtYiwgKCItd2Via2l0LW1lZGlhLXNsaWRlci10aHVt
YiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBtZWRpYVNsaWRlclRodW1iKCItd2Via2l0
LW1lZGlhLXNsaWRlci10aHVtYiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBtZWRpYVNsaWRlclRodW1iOwogfQogCkBAIC02NDIsOCArNjQyLDggQEAg
Y29uc3QgQXRvbWljU3RyaW5nJiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0CiAgICAgLy8gdGhhdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBzdHlsZSwgd2hpY2gg
bWVhbnMgdGhlIHN0eWxlIG5lZWRzIHRvIGJlIGNvbXB1dGVkIHR3aWNlIHRvIGdldAogICAgIC8v
IGEgY29ycmVjdCB2YWx1ZTogb25jZSB0byBnZXQgdGhlIElucHV0J3MgYXBwZWFyYW5jZSwgdGhl
biBhIHNlY29uZCB0aW1lIHRvIHN0eWxlIHRoZSBzaGFkb3cgdHJlZSBjb3JyZWN0bHkuCiAKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtZWRp
YVNsaWRlckNvbnRhaW5lciwgKCItd2Via2l0LW1lZGlhLXNsaWRlci1jb250YWluZXIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2xpZGVyQ29udGFpbmVyLCAoIi13ZWJr
aXQtc2xpZGVyLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBtZWRpYVNs
aWRlckNvbnRhaW5lcigiLXdlYmtpdC1tZWRpYS1zbGlkZXItY29udGFpbmVyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gc2xpZGVyQ29udGFpbmVyKCItd2Via2l0LXNsaWRlci1jb250YWlu
ZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIGlmICghaXM8
SFRNTElucHV0RWxlbWVudD4oKnNoYWRvd0hvc3QoKSkpCiAgICAgICAgIHJldHVybiBzbGlkZXJD
b250YWluZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcAppbmRleCA4
NzMyOTI1Li5hNDJlMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5j
cHAKQEAgLTM4LDQyICszOCw0MyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5j
bHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQXRv
bWljU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZl
LCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRl
cm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBhbHRlcm5hdGl2ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjpkZXNj
cmlwdGlvbktleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIGRlc2NyaXB0aW9uLCAoImRlc2NyaXB0aW9uIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IGRlc2NyaXB0aW9uKCJkZXNjcmlwdGlvbiIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWFpbiwgKCJtYWluIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IG1haW4oIm1haW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbWFpbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW5EZXNjLCAoIm1haW4tZGVzYyIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBtYWluRGVzYygibWFpbi1kZXNjIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1haW5EZXNjOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhbnNs
YXRpb24sICgidHJhbnNsYXRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdHJhbnNsYXRpb24o
InRyYW5zbGF0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIHRyYW5zbGF0aW9uOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6
OmNvbW1lbnRhcnlLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gY29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggMGQ5YTJiNi4uNzI5ZjUyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtNDksNTUgKzQ5LDU1IEBA
IHN0YXRpYyBjb25zdCBpbnQgaW52YWxpZFRyYWNrSW5kZXggPSAtMTsKIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0
aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc3VidGl0
bGVzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3Jk
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBjYXB0aW9ucywgKCJjYXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBj
YXB0aW9ucygiY2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gY2FwdGlvbnM7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNr
OjpkZXNjcmlwdGlvbnNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbnMsICgiZGVzY3JpcHRpb25zIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRlc2NyaXB0aW9ucygiZGVzY3JpcHRpb25zIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGRlc2NyaXB0
aW9uczsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmNoYXB0ZXJzS2V5d29y
ZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgY2hhcHRlcnMsICgiY2hhcHRlcnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4g
Y2hhcHRlcnMoImNoYXB0ZXJzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIGNoYXB0ZXJzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFj
azo6bWV0YWRhdGFLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBtZXRhZGF0YSwgKCJtZXRhZGF0YSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiBtZXRhZGF0YSgibWV0YWRhdGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbWV0YWRhdGE7CiB9CiAgICAgCiBjb25zdCBB
dG9taWNTdHJpbmcmIFRleHRUcmFjazo6Zm9yY2VkS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9yY2VkLCAoImZvcmNl
ZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBmb3JjZWQoImZvcmNlZCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBmb3JjZWQ7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpkaXNhYmxlZEtleXdvcmQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG9wZW4sICgi
ZGlzYWJsZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gb3BlbigiZGlzYWJsZWQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gb3BlbjsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNsb3Nl
ZCwgKCJoaWRkZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2xvc2VkKCJoaWRkZW4i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY2xvc2Vk
OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IGVuZGVkLCAoInNob3dpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZW5kZWQoInNo
b3dpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4g
ZW5kZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4
IDY0ZTZmZDIuLjdlNTkyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBjdWVTaGFkb3dQc2V1ZG9JZCgpCiAgICAgewotICAgICAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjdWUsICgi
Y3VlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjdWUoImN1ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gY3VlOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IDdhYzg2NjEuLjAyMzBmNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTcyLDMxICs3MiwzMSBAQCBD
T01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKGRpc3BsYXlBbGlnbm1lbnRNYXApID09IFZU
VEN1ZTo6TnVtYmVyT2ZBbGlnbm1lbgogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiBzdGFydEtleXdv
cmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcs
IHN0YXJ0LCAoQVNDSUlMaXRlcmFsKCJzdGFydCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IFN0cmluZz4gc3RhcnQoQVNDSUlMaXRlcmFsKCJzdGFydCIpKTsKICAgICByZXR1
cm4gc3RhcnQ7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIG1pZGRsZUtleXdvcmQoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIG1pZGRsZSwg
KEFTQ0lJTGl0ZXJhbCgibWlkZGxlIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiBtaWRkbGUoQVNDSUlMaXRlcmFsKCJtaWRkbGUiKSk7CiAgICAgcmV0dXJuIG1p
ZGRsZTsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyYgZW5kS2V5d29yZCgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZW5kLCAoQVNDSUlMaXRl
cmFsKCJlbmQiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGVu
ZChBU0NJSUxpdGVyYWwoImVuZCIpKTsKICAgICByZXR1cm4gZW5kOwogfQogCiBzdGF0aWMgY29u
c3QgU3RyaW5nJiBsZWZ0S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgbGVmdCwgKCJsZWZ0IikpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBTdHJpbmc+IGxlZnQoImxlZnQiKTsKICAgICByZXR1cm4gbGVmdDsKIH0K
IAogc3RhdGljIGNvbnN0IFN0cmluZyYgcmlnaHRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCByaWdodCwgKCJyaWdodCIpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiByaWdodCgicmlnaHQiKTsKICAg
ICByZXR1cm4gcmlnaHQ7CiB9CiAKQEAgLTEwNywxMyArMTA3LDEzIEBAIHN0YXRpYyBjb25zdCBT
dHJpbmcmIGhvcml6b250YWxLZXl3b3JkKCkKIAogc3RhdGljIGNvbnN0IFN0cmluZyYgdmVydGlj
YWxHcm93aW5nTGVmdEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIHZlcnRpY2FscmwsIChBU0NJSUxpdGVyYWwoInJsIikpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2ZXJ0aWNhbHJsKEFTQ0lJTGl0
ZXJhbCgicmwiKSk7CiAgICAgcmV0dXJuIHZlcnRpY2Fscmw7CiB9CiAKIHN0YXRpYyBjb25zdCBT
dHJpbmcmIHZlcnRpY2FsR3Jvd2luZ1JpZ2h0S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdmVydGljYWxsciwgKEFTQ0lJTGl0ZXJh
bCgibHIiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZlcnRp
Y2FsbHIoQVNDSUlMaXRlcmFsKCJsciIpKTsKICAgICByZXR1cm4gdmVydGljYWxscjsKIH0KIApA
QCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoY29u
c3QgSW50U2l6ZSYgdmlkZW9TaXplKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZUVEN1ZUJveDo6
dnR0Q3VlQm94U2hhZG93UHNldWRvSWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lk
LCAoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
aWNTdHJpbmc+IHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRl
eHQtdHJhY2stZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIHJldHVybiB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZDsKIH0KIApAQCAtMjM4LDcg
KzIzOCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
VlRUQ3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjdWVCYWNrZHJvcFNoYWRvd1Bz
ZXVkb0lkLCAoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoIi13ZWJr
aXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQ7
CiB9CiAKQEAgLTU5Nyw3ICs1OTcsNyBAQCBzdGF0aWMgYm9vbCBpc0N1ZVBhcmFncmFwaFNlcGFy
YXRvcihVQ2hhciBjaGFyYWN0ZXIpCiAKIHZvaWQgVlRUQ3VlOjpkZXRlcm1pbmVUZXh0RGlyZWN0
aW9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBydFRhZywgKEFTQ0lJTGl0ZXJhbCgicnQiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBTdHJpbmc+IHJ0VGFnKEFTQ0lJTGl0ZXJhbCgicnQiKSk7CiAgICAgY3JlYXRlV2Vi
VlRUTm9kZVRyZWUoKTsKICAgICBpZiAoIW1fd2ViVlRUTm9kZVRyZWUpCiAgICAgICAgIHJldHVy
bjsKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFZUVEN1ZTo6Y2FsY3VsYXRlRGlzcGxheVBhcmFt
ZXRlcnMoKQogICAgIAogdm9pZCBWVFRDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMoQ29udGFp
bmVyTm9kZSogcm9vdCwgY29uc3QgTWVkaWFUaW1lJiBwcmV2aW91c1RpbWVzdGFtcCwgY29uc3Qg
TWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IFN0cmluZywgdGltZXN0YW1wVGFnLCAoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAi
KSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHRpbWVzdGFtcFRh
ZyhBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpKTsKICAgICAKICAgICBib29sIGlzUGFzdE5vZGUg
PSB0cnVlOwogICAgIE1lZGlhVGltZSBjdXJyZW50VGltZXN0YW1wID0gcHJldmlvdXNUaW1lc3Rh
bXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKaW5kZXggODU3OTg2OC4u
OTQxMWY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMTg4
LDcgKzE4OCw3IEBAIHZvaWQgVlRUUmVnaW9uOjpzZXRWaWV3cG9ydEFuY2hvclkoZG91YmxlIHZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIAogY29uc3QgQXRvbWljU3RyaW5nIFZUVFJlZ2lvbjo6
c2Nyb2xsKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCB1cFNjcm9sbFZhbHVlS2V5d29yZCwgKCJ1cCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiB1cFNjcm9sbFZhbHVlS2V5d29yZCgidXAiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIGlmIChtX3Njcm9sbCkKICAgICAgICAgcmV0
dXJuIHVwU2Nyb2xsVmFsdWVLZXl3b3JkOwpAQCAtMTk4LDcgKzE5OCw3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyBWVFRSZWdpb246OnNjcm9sbCgpIGNvbnN0CiAKIHZvaWQgVlRUUmVnaW9uOjpzZXRT
Y3JvbGwoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdXBT
Y3JvbGxWYWx1ZUtleXdvcmQsICgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdXBT
Y3JvbGxWYWx1ZUtleXdvcmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAKICAgICBpZiAodmFsdWUgIT0gZW1wdHlTdHJpbmcoKSAmJiB2YWx1ZSAhPSB1cFNjcm9s
bFZhbHVlS2V5d29yZCkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CkBAIC0yNjgsNyArMjY4
LDcgQEAgc3RhdGljIGlubGluZSBib29sIHBhcnNlZEVudGlyZVJ1bihjb25zdCBWVFRTY2FubmVy
JiBpbnB1dCwgY29uc3QgVlRUU2Nhbm5lcjo6UnUKIAogdm9pZCBWVFRSZWdpb246OnBhcnNlU2V0
dGluZ1ZhbHVlKFJlZ2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2Ny
b2xsVXBWYWx1ZUtleXdvcmQsICgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc2Ny
b2xsVXBWYWx1ZUtleXdvcmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAKICAgICBWVFRTY2FubmVyOjpSdW4gdmFsdWVSdW4gPSBpbnB1dC5jb2xsZWN0VW50aWw8
aXNIVE1MU3BhY2U8VUNoYXI+PigpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBWVFRSZWdp
b246OnBhcnNlU2V0dGluZ1ZhbHVlKFJlZ2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYg
aW5wdXQpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFNjcm9sbDoKLSAgICAgICAg
aWYgKGlucHV0LnNjYW5SdW4odmFsdWVSdW4sIHNjcm9sbFVwVmFsdWVLZXl3b3JkKSkKKyAgICAg
ICAgaWYgKGlucHV0LnNjYW5SdW4odmFsdWVSdW4sIHNjcm9sbFVwVmFsdWVLZXl3b3JkLmdldCgp
KSkKICAgICAgICAgICAgIG1fc2Nyb2xsID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiVlRUUmVnaW9uOjpwYXJzZVNldHRpbmdWYWx1ZSwgaW52YWxpZCBTY3Jv
bGwiKTsKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nVmFs
dWUoUmVnaW9uU2V0dGluZyBzZXR0aW5nLCBWVFRTY2FubmVyJiBpbnB1dCkKIAogY29uc3QgQXRv
bWljU3RyaW5nJiBWVFRSZWdpb246OnRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNz
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzLCAoInNjcm9sbGluZyIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9s
bGluZ0NsYXNzKCJzY3JvbGxpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKIAogICAgIHJldHVybiB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKaW5kZXggOTc0ZTQ5Ny4u
NzM0MDkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBAIC00
NywzNyArNDcsMzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBBdG9taWNTdHJpbmcm
IFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJu
YXRpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx0ZXJuYXRpdmUoImFsdGVybmF0
aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGFs
dGVybmF0aXZlOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25z
S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgY2FwdGlvbnMsICgiY2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4gY2FwdGlvbnMoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAgICAgcmV0dXJuIGNhcHRpb25zOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZp
ZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJtYWluIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IGNhcHRpb25zKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNhcHRpb25zOwogfQogCiBjb25zdCBBdG9taWNTdHJp
bmcmIFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzaWduLCAoInNpZ24iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gc2lnbigic2lnbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBzaWduOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZp
ZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc3VidGl0bGVzOwogfQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBj
b21tZW50YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY29t
bWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRFbGVtZW50LmNwcAppbmRleCBhM2MwMzY2Li4xZjYxMGY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBub2RlVHlw
ZVRvVGFnTmFtZShXZWJWVFROb2RlVHlwZSBub2RlVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgY1RhZywgKG51bGxBdG9tLCAiYyIsIG51
bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5h
bWUsIHZUYWcsIChudWxsQXRvbSwgInYiLCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBsYW5nVGFnLCAobnVsbEF0b20sICJsYW5n
IiwgbnVsbEF0b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlm
aWVkTmFtZSwgYlRhZywgKG51bGxBdG9tLCAiYiIsIG51bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHVUYWcsIChudWxsQXRvbSwgInUi
LCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZp
ZWROYW1lLCBpVGFnLCAobnVsbEF0b20sICJpIiwgbnVsbEF0b20pKTsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgcnVieVRhZywgKG51bGxBdG9tLCAi
cnVieSIsIG51bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1
YWxpZmllZE5hbWUsIHJ0VGFnLCAobnVsbEF0b20sICJydCIsIG51bGxBdG9tKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGNUYWcobnVsbEF0b20sICJjIiwgbnVs
bEF0b20pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2VGFnKG51
bGxBdG9tLCAidiIsIG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlm
aWVkTmFtZT4gbGFuZ1RhZyhudWxsQXRvbSwgImxhbmciLCBudWxsQXRvbSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGJUYWcobnVsbEF0b20sICJiIiwgbnVsbEF0
b20pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxB
dG9tLCAidSIsIG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVk
TmFtZT4gaVRhZyhudWxsQXRvbSwgImkiLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFF1YWxpZmllZE5hbWU+IHJ1YnlUYWcobnVsbEF0b20sICJydWJ5IiwgbnVsbEF0b20p
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydFRhZyhudWxsQXRv
bSwgInJ0IiwgbnVsbEF0b20pOwogICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKICAgICBjYXNlIFdl
YlZUVE5vZGVUeXBlQ2xhc3M6CiAgICAgICAgIHJldHVybiBjVGFnOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCA4OWQzZDJjLi41ZWZkYzE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NjIsMTMgKzYzLDEzIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1l
JiB2b2ljZUF0dHJpYnV0ZU5hbWUoKQogICAgIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxBdG9tLCAidm9pY2Ui
LCBudWxsQXRvbSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFt
ZT4gdm9pY2VBdHRyKG51bGxBdG9tLCAidm9pY2UiLCBudWxsQXRvbSk7CiAgICAgICAgIHJldHVy
biB2b2ljZUF0dHI7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1l
JiBsYW5nQXR0cmlidXRlTmFtZSgpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgdm9pY2VBdHRyLCAobnVsbEF0b20sICJsYW5nIiwg
bnVsbEF0b20pKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+
IHZvaWNlQXR0cihudWxsQXRvbSwgImxhbmciLCBudWxsQXRvbSk7CiAgICAgICAgIHJldHVybiB2
b2ljZUF0dHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAKaW5kZXggMTkyMjAxMC4uOWViMTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIGJvb2wgV2ViVlRUUGFyc2Vy
OjpoYXNSZXF1aXJlZEZpbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbGluZSkKIHZvaWQgV2Vi
VlRUUGFyc2VyOjpjb2xsZWN0TWV0YWRhdGFIZWFkZXIoY29uc3QgU3RyaW5nJiBsaW5lKQogewog
ICAgIC8vIFdlYlZUVCBoZWFkZXIgcGFyc2luZyAoV2ViVlRUIHBhcnNlciBhbGdvcml0aG0gc3Rl
cCAxMikKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCByZWdpb25IZWFkZXJOYW1lLCAoIlJlZ2lvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiByZWdpb25IZWFkZXJOYW1lKCJSZWdpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKIAogICAgIC8vIFN0ZXAgMTIuNCBJZiBsaW5lIGNvbnRhaW5zIHRoZSBjaGFy
YWN0ZXIgIjoiIChBIFUrMDAzQSBDT0xPTiksIHRoZW4gc2V0IG1ldGFkYXRhJ3MKICAgICAvLyBu
YW1lIHRvIHRoZSBzdWJzdHJpbmcgb2YgbGluZSBiZWZvcmUgdGhlIGZpcnN0ICI6IiBjaGFyYWN0
ZXIgYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cAppbmRleCAxMWU1MjQ5Li5lOWIzMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTc5LDEwICs3OSwxMCBAQCBlbnVtIEZvcmNlUHNl
dWRvQ2xhc3NGbGFncyB7CiAKIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlUHNldWRvQ2xhc3NNYXNr
KGNvbnN0IEluc3BlY3RvckFycmF5JiBwc2V1ZG9DbGFzc0FycmF5KQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFjdGl2ZSwgKEFTQ0lJTGl0ZXJhbCgiYWN0
aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBob3Zl
ciwgKEFTQ0lJTGl0ZXJhbCgiaG92ZXIiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGZvY3VzLCAoQVNDSUlMaXRlcmFsKCJmb2N1cyIpKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdmlzaXRlZCwgKEFTQ0lJTGl0ZXJh
bCgidmlzaXRlZCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWN0aXZl
KEFTQ0lJTGl0ZXJhbCgiYWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGhvdmVyKEFTQ0lJTGl0ZXJhbCgiaG92ZXIiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gZm9jdXMoQVNDSUlMaXRlcmFsKCJmb2N1cyIpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2aXNpdGVkKEFTQ0lJTGl0ZXJhbCgidmlzaXRlZCIpKTsKICAg
ICBpZiAoIXBzZXVkb0NsYXNzQXJyYXkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBQc2V1ZG9D
bGFzc05vbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKaW5kZXggNWNlOGMyNi4uZDY2MDIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTIzMCw4ICsyMzAsOCBAQCB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgRnJhbWUqIGZyYW1lLAogLy9zdGF0aWMKIFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBI
VFRQSGVhZGVyLCAoQVNDSUlMaXRlcmFsKCJTb3VyY2VNYXAiKSkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVk
LCAoQVNDSUlMaXRlcmFsKCJYLVNvdXJjZU1hcCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gc291cmNlTWFwSFRUUEhlYWRlcihBU0NJSUxpdGVyYWwoIlNvdXJjZU1hcCIp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVy
RGVwcmVjYXRlZChBU0NJSUxpdGVyYWwoIlgtU291cmNlTWFwIikpOwogCiAgICAgaWYgKCFjYWNo
ZWRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDQxODMzMzAuLjQ3NjFl
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAKQEAgLTg4MCw3ICs4ODAsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIoYwogCiBzdGF0
aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTU2VsZWN0b3I+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1bGVTb3VyY2VE
YXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCwgY29uc3QgQ1NTU2VsZWN0
b3JMaXN0JiBzZWxlY3Rvckxpc3QsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24sIGNvbW1l
bnQsICgiL1xcKlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6OllhcnI6Ok11bHRp
bGluZUVuYWJsZWQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1
bGFyRXhwcmVzc2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZl
LCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpOwogCiAgICAgYXV0byByZXN1bHQgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVj
dG9yPjo6Y3JlYXRlKCk7CiAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0
b3JMaXN0LmZpcnN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCBmMWFkZjFkLi4yMDBlYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1Nj
cmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKQEAgLTczLDggKzc0LDggQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShi
b29sIGlzQmVpbmdEZXN0cm95ZWQpCiAKIFN0cmluZyBQYWdlRGVidWdnZXJBZ2VudDo6c291cmNl
TWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYgc2NyaXB0KQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXIsIChBU0NJSUxp
dGVyYWwoIlNvdXJjZU1hcCIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgc291cmNlTWFwSFRUUEhlYWRlckRlcHJlY2F0ZWQsIChBU0NJSUxpdGVyYWwoIlgt
U291cmNlTWFwIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VN
YXBIVFRQSGVhZGVyKEFTQ0lJTGl0ZXJhbCgiU291cmNlTWFwIikpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkKEFTQ0lJTGl0
ZXJhbCgiWC1Tb3VyY2VNYXAiKSk7CiAKICAgICBpZiAoIXNjcmlwdC51cmwuaXNFbXB0eSgpKSB7
CiAgICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1fcGFnZUFnZW50LT5jYWNoZWRS
ZXNvdXJjZSgmbV9wYWdlLm1haW5GcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3JpcHQu
dXJsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCBlZDE3ZmE5Li4y
OGVmMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTI4OSw3ICsy
ODksNyBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UpCiAgICAgICAgIG1faGFzUGVuZGluZ0Vycm9yRXZlbnQgPSB0cnVlOwogICAgICAg
ICBlcnJvckV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24oKnRoaXMpOwogCi0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAo
QVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4gaW1hZ2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3Jp
Z2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2lu
IGltYWdlIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGlj
eS4iKSk7CiAgICAgICAgIGVsZW1lbnQoKS5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2Fn
ZSk7CiAKICAgICAgICAgQVNTRVJUKCFtX2hhc1BlbmRpbmdMb2FkRXZlbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCA0MGU5YWQ1Li42ZGExMDgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtMTE0LDcgKzEx
NCw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpkZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJl
c291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjCiAKIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpj
b3JzUG9saWN5UHJldmVudGVkTG9hZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdp
biB0ZXh0IHRyYWNrIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5n
IHBvbGljeS4iKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVN
ZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHRleHQgdHJhY2sgbG9hZCBkZW5pZWQg
YnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKTsKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJp
dHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICBtX3N0YXRlID0g
RmFpbGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmNwcAppbmRleCA1YWQ1N2VjLi5hMDVkYThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODcsNyArODgsNyBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIENhY2hlZFJlc291cmNlUmVxdWVzdDo6aW5pdGlhdG9yTmFtZSgp
IGNvbnN0CiAgICAgaWYgKCFtX2luaXRpYXRvck5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbV9pbml0aWF0b3JOYW1lOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgZGVmYXVsdE5hbWUsICgicmVzb3VyY2UiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gZGVmYXVsdE5hbWUoInJlc291cmNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIGRlZmF1bHROYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBmZWYzOGQ3Li4yYjY0M2I1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJTdWRkZW5UZXJtaW5hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9BdXRv
ZHJhaW5lZFBvb2wuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogLy8g
Rm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9ydCBBUEkgZnJvbSB0aGUgbWFpbiB0
aHJlYWQgLSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnRlcm5hbGx5CkBAIC04NzksOCArODgwLDgg
QEAgU3RyaW5nIEljb25EYXRhYmFzZTo6ZGF0YWJhc2VQYXRoKCkgY29uc3QKIAogU3RyaW5nIElj
b25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lLCAoQVND
SUlMaXRlcmFsKCJXZWJwYWdlSWNvbnMuZGIiKSkpOwotICAgIHJldHVybiBkZWZhdWx0RGF0YWJh
c2VGaWxlbmFtZS5pc29sYXRlZENvcHkoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZShBU0NJSUxpdGVyYWwoIldlYnBhZ2VJY29ucy5k
YiIpKTsKKyAgICByZXR1cm4gZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUuZ2V0KCkuaXNvbGF0ZWRD
b3B5KCk7CiB9CiAKIC8vIFVubGlrZSBnZXRPckNyZWF0ZVBhZ2VVUkxSZWNvcmQoKSwgZ2V0T3JD
cmVhdGVJY29uUmVjb3JkKCkgZG9lcyBub3QgbWFyayB0aGUgaWNvbiBhcyAiaW50ZXJlc3RlZCBp
biBpbXBvcnQiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmNwcAppbmRleCBhOTc0Y2Q4Li4xNjNlYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJV
c2VyU3R5bGVTaGVldFR5cGVzLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjg0LDcgKzI4NSw3
IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0Q2FwdGlvbnNTdHlsZVNoZWV0T3Zl
cnJpZGUoY29uc3QgU3RyaW5nJiBvdmVycmlkCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OnVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpCiB7CiAgICAgLy8gSWRlbnRpZnkgb3Vy
IG92ZXJyaWRlIHN0eWxlIHNoZWV0IHdpdGggYSB1bmlxdWUgVVJMIC0gYSBuZXcgc2NoZW1lIGFu
ZCBhIFVVSUQuCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTCwgY2FwdGlv
bnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlk
ZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFVSTD4gY2FwdGlvbnNTdHlsZVNoZWV0VVJMKFBhcnNlZFVSTFN0cmluZywg
InVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzRE
QzIzIik7CiAKICAgICBhdXRvJiBwYWdlcyA9IG1fcGFnZUdyb3VwLnBhZ2VzKCk7CiAgICAgZm9y
IChhdXRvJiBwYWdlIDogcGFnZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggNmExZTliNy4uNzJjYWIxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWVkaWFBRi5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0Lmgi
CiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgpAQCAtMjQ2LDcgKzI0Nyw3IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKCkgY29uc3QKIHsKICAgICAvLyBU
aGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNwZWNpZmllZCBp
biBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXBhc3Qtbm9k
ZXMKICAgICAvLyBhbmQgd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZnV0dXJlLW5vZGVzLgotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgZGVmYXVsdEJhY2tncm91bmRD
b2xvciwgKENvbG9yKDAsIDAsIDAsIDAuOCAqIDI1NSkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Q29sb3I+IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMCwgMC44ICogMjU1KTsK
IAogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKIApAQCAtMzQ5LDEw
ICszNTAsMTAgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjb2xvclBy
b3BlcnR5Q1NTKENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IEMKIAogU3RyaW5nIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRFZGdlQ1NTKCkgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVSYWlz
ZWQsICgiIC0uMDVlbSAtLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0
eWxlRGVwcmVzc2VkLCAoIiAuMDVlbSAuMDVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBlZGdlU3R5bGVEcm9wU2hhZG93LCAoIiAuMDc1ZW0gLjA3NWVtIDAgIiwgU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBTdHJpbmcsIGVkZ2VTdHlsZVVuaWZvcm0sICgiIC4wM2VtICIsIFN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5n
PiBlZGdlU3R5bGVSYWlzZWQoQVNDSUlMaXRlcmFsKCIgLS4wNWVtIC0uMDVlbSAwICIpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlZGdlU3R5bGVEZXByZXNzZWQo
QVNDSUlMaXRlcmFsKCIgLjA1ZW0gLjA1ZW0gMCAiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IFN0cmluZz4gZWRnZVN0eWxlRHJvcFNoYWRvdyhBU0NJSUxpdGVyYWwoIiAuMDc1
ZW0gLjA3NWVtIDAgIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+
IGVkZ2VTdHlsZVVuaWZvcm0oQVNDSUlMaXRlcmFsKCIgLjAzZW0gIikpOwogCiAgICAgYm9vbCB1
bnVzZWQ7CiAgICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcih1bnVzZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGM0NjEx
OGQuLjA1OWJiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwpAQCAtOTk0LDcgKzk5NSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hl
Y2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0CiAK
IGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcm
IGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVz
c2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIEphdmFTY3JpcHQgVVJMIGJl
Y2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBk
aXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29s
ZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBVUkwg
YmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
IGRpcmVjdGl2ZTogIikpOwogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVj
a0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMu
Z2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIHRydWUpCiAg
ICAgICAgIDogKG1fcmVwb3J0T25seSB8fCBjaGVja0lubGluZShvcGVyYXRpdmVEaXJlY3RpdmUo
bV9zY3JpcHRTcmMuZ2V0KCkpKSk7CkBAIC0xMDAyLDcgKzEwMDMsNyBAQCBib29sIENTUERpcmVj
dGl2ZUxpc3Q6OmFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBj
b25zdCBXVEY6OgogCiBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lRXZlbnRIYW5k
bGVycyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9y
dGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRl
IGlubGluZSBldmVudCBoYW5kbGVyIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBD
b250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRv
IGV4ZWN1dGUgaW5saW5lIGV2ZW50IGhhbmRsZXIgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9s
bG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpOwogICAgIHJldHVy
biByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0
dXM6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihv
cGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29u
dGV4dFVSTCwgY29udGV4dExpbmUsIHRydWUpCiAgICAgICAgIDogKG1fcmVwb3J0T25seSB8fCBj
aGVja0lubGluZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpKSk7CkBAIC0x
MDEwLDcgKzEwMTEsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lRXZlbnRI
YW5kbGVycyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0CiAKIGJvb2wgQ1NQRGlyZWN0
aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25z
dCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVy
YWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBpbmxpbmUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMg
dGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRl
cmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVz
IHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7CiAg
ICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9y
dGluZ1N0YXR1czo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrSW5saW5lQW5kUmVwb3J0Vmlv
bGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVNZXNz
YWdlLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgdHJ1ZSkgOgogICAgICAgICAobV9yZXBvcnRP
bmx5IHx8IGNoZWNrSW5saW5lKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSkp
KTsKQEAgLTEwMTgsNyArMTAxOSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxp
bmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yCiAKIGJvb2wg
Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRV
UkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFT
Q0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBhcHBseSBpbmxpbmUgc3R5bGUgYmVjYXVzZSBpdCB2aW9s
YXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJ
SUxpdGVyYWwoIlJlZnVzZWQgdG8gYXBwbHkgaW5saW5lIHN0eWxlIGJlY2F1c2UgaXQgdmlvbGF0
ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsK
ICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxpbmVBbmRSZXBvcnRW
aW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCBjb25zb2xlTWVz
c2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIGZhbHNlKSA6CiAgICAgICAgIChtX3JlcG9y
dE9ubHkgfHwgY2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkp
KSk7CkBAIC0xMDI2LDcgKzEwMjcsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5s
aW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZAogCiBib29s
IENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVz
c2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBldmFsdWF0ZSBzY3JpcHQgYmVjYXVzZSBp
dCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZTogIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2Fn
ZShBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXZhbHVhdGUgc2NyaXB0IGJlY2F1c2UgaXQgdmlv
bGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIp
KTsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tFdmFsQW5kUmVwb3J0
VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVN
ZXNzYWdlLCBTdHJpbmcoKSwgV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBzdGF0
ZSkgOgogICAgICAgICAobV9yZXBvcnRPbmx5IHx8IGNoZWNrRXZhbChvcGVyYXRpdmVEaXJlY3Rp
dmUobV9zY3JpcHRTcmMuZ2V0KCkpKSk7CkBAIC0xNjc2LDEyICsxNjc3LDEyIEBAIHZvaWQgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rp
dmVUZXh0LCBjb25zdCBTCiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRVbnN1
cHBvcnRlZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgYWxsb3csIChBU0NJSUxpdGVyYWwoImFs
bG93IikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBvcHRp
b25zLCAoQVNDSUlMaXRlcmFsKCJvcHRpb25zIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBwb2xpY3lVUkksIChBU0NJSUxpdGVyYWwoInBvbGljeS11cmki
KSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFsbG93TWVz
c2FnZSwgKEFTQ0lJTGl0ZXJhbCgiVGhlICdhbGxvdycgZGlyZWN0aXZlIGhhcyBiZWVuIHJlcGxh
Y2VkIHdpdGggJ2RlZmF1bHQtc3JjJy4gUGxlYXNlIHVzZSB0aGF0IGRpcmVjdGl2ZSBpbnN0ZWFk
LCBhcyAnYWxsb3cnIGhhcyBubyBlZmZlY3QuIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBvcHRpb25zTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiVGhlICdv
cHRpb25zJyBkaXJlY3RpdmUgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCAndW5zYWZlLWlubGluZScg
YW5kICd1bnNhZmUtZXZhbCcgc291cmNlIGV4cHJlc3Npb25zIGZvciB0aGUgJ3NjcmlwdC1zcmMn
IGFuZCAnc3R5bGUtc3JjJyBkaXJlY3RpdmVzLiBQbGVhc2UgdXNlIHRob3NlIGRpcmVjdGl2ZXMg
aW5zdGVhZCwgYXMgJ29wdGlvbnMnIGhhcyBubyBlZmZlY3QuIikpKTsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBwb2xpY3lVUklNZXNzYWdlLCAoQVNDSUlMaXRl
cmFsKCJUaGUgJ3BvbGljeS11cmknIGRpcmVjdGl2ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhl
IHNwZWNpZmljYXRpb24uIFBsZWFzZSBzcGVjaWZ5IGEgY29tcGxldGUgcG9saWN5IHZpYSB0aGUg
Q29udGVudC1TZWN1cml0eS1Qb2xpY3kgaGVhZGVyLiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gYWxsb3coQVNDSUlMaXRlcmFsKCJhbGxvdyIpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBvcHRpb25zKEFTQ0lJTGl0ZXJhbCgib3B0aW9ucyIpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwb2xpY3lVUkkoQVNDSUlMaXRlcmFs
KCJwb2xpY3ktdXJpIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFsbG93
TWVzc2FnZShBU0NJSUxpdGVyYWwoIlRoZSAnYWxsb3cnIGRpcmVjdGl2ZSBoYXMgYmVlbiByZXBs
YWNlZCB3aXRoICdkZWZhdWx0LXNyYycuIFBsZWFzZSB1c2UgdGhhdCBkaXJlY3RpdmUgaW5zdGVh
ZCwgYXMgJ2FsbG93JyBoYXMgbm8gZWZmZWN0LiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBvcHRpb25zTWVzc2FnZShBU0NJSUxpdGVyYWwoIlRoZSAnb3B0aW9ucycgZGly
ZWN0aXZlIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggJ3Vuc2FmZS1pbmxpbmUnIGFuZCAndW5zYWZl
LWV2YWwnIHNvdXJjZSBleHByZXNzaW9ucyBmb3IgdGhlICdzY3JpcHQtc3JjJyBhbmQgJ3N0eWxl
LXNyYycgZGlyZWN0aXZlcy4gUGxlYXNlIHVzZSB0aG9zZSBkaXJlY3RpdmVzIGluc3RlYWQsIGFz
ICdvcHRpb25zJyBoYXMgbm8gZWZmZWN0LiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBwb2xpY3lVUklNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiVGhlICdwb2xpY3ktdXJpJyBk
aXJlY3RpdmUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uLiBQbGVhc2Ug
c3BlY2lmeSBhIGNvbXBsZXRlIHBvbGljeSB2aWEgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5
IGhlYWRlci4iKSk7CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UobmFtZSwgYWxsb3cpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDk5YTlm
NWEuLjg2MmI5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTExMCw2ICsxMTAs
NyBAQAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFz
ZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xODUsMTMgKzE4Niwx
MyBAQCB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PERPTVdpbmRvdyo+IERPTVdpbmRvd1NldDsKIAog
c3RhdGljIERPTVdpbmRvd1NldCYgd2luZG93c1dpdGhVbmxvYWRFdmVudExpc3RlbmVycygpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKERPTVdpbmRvd1NldCwgd2luZG93
c1dpdGhVbmxvYWRFdmVudExpc3RlbmVycywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxET01XaW5kb3dTZXQ+IHdpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnM7CiAgICAgcmV0
dXJuIHdpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnM7CiB9CiAKIHN0YXRpYyBET01XaW5k
b3dTZXQmIHdpbmRvd3NXaXRoQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChET01XaW5kb3dTZXQsIHdpbmRvd3NXaXRoQmVm
b3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
RE9NV2luZG93U2V0PiB3aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzOwogICAg
IHJldHVybiB3aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMWNlN2I1NC4uOTE4MmQzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1ZGUg
IldpbmRvd3NLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFy
eUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00MDEsNyArNDAyLDcgQEAg
RXZlbnRIYW5kbGVyOjp+RXZlbnRIYW5kbGVyKCkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQog
RHJhZ1N0YXRlJiBFdmVudEhhbmRsZXI6OmRyYWdTdGF0ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKERyYWdTdGF0ZSwgc3RhdGUsICgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8RHJhZ1N0YXRlPiBzdGF0ZTsKICAgICByZXR1cm4gc3RhdGU7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTMwNzYsMTAgKzMwNzcsMTAgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlh
bEtleUV2ZW50KQogCiBzdGF0aWMgRm9jdXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb25Gb3JLZXko
Y29uc3QgQXRvbWljU3RyaW5nJiBrZXlJZGVudGlmaWVyKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIERvd24sICgiRG93biIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBVcCwgKCJVcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBMZWZ0LCAoIkxlZnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgUmlnaHQs
ICgiUmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gRG93bigiRG93biIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IFVwKCJVcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IExlZnQoIkxlZnQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBSaWdodCgiUmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKIAogICAgIEZvY3VzRGlyZWN0aW9uIHJldFZhbCA9IEZvY3VzRGlyZWN0aW9u
Tm9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBiNzYzMzY4Li43NDBlOWYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5nPiYK
ICAgICAvLyBSRVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1lTWFjLm1tIGNhY2hl
cyBiYXNlZCBvbiB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhlIHNhbWUgYWNyb3Nz
IGNhbGxzLiAgV2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uLCB3b3JkUmVnRXhwLCAoIlxcdyIs
IFRleHRDYXNlU2Vuc2l0aXZlKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFy
cjo6UmVndWxhckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIsIFRleHRDYXNlU2Vuc2l0aXZl
KTsKICAgICBTdHJpbmdCdWlsZGVyIHBhdHRlcm47CiAgICAgcGF0dGVybi5hcHBlbmQoJygnKTsK
ICAgICB1bnNpZ25lZCBpbnQgbnVtTGFiZWxzID0gbGFiZWxzLnNpemUoKTsKQEAgLTMxNyw4ICsz
MTcsOCBAQCBzdGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVSZWdFeHBG
b3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAgICAgIGJvb2wgc3RhcnRzV2l0aFdv
cmRDaGFyID0gZmFsc2U7CiAgICAgICAgIGJvb2wgZW5kc1dpdGhXb3JkQ2hhciA9IGZhbHNlOwog
ICAgICAgICBpZiAobGFiZWwubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3Jk
Q2hhciA9IHdvcmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAwOwotICAg
ICAgICAgICAgZW5kc1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3Ry
aW5nKGxhYmVsLmxlbmd0aCgpIC0gMSwgMSkpID49IDA7CisgICAgICAgICAgICBzdGFydHNXaXRo
V29yZENoYXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkg
Pj0gMDsKKyAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLmdldCgpLm1h
dGNoKGxhYmVsLnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApp
bmRleCAwZjVlMmJlLi43Nzg3MDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5j
cHAKQEAgLTkzLDcgKzkzLDcgQEAgU3RyaW5nIE5hdmlnYXRvckJhc2U6OnBsYXRmb3JtKCkgY29u
c3QKICAgICBpZiAoIVN0cmluZyhXRUJDT1JFX05BVklHQVRPUl9QTEFURk9STSkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk07CiAgICAgc3RydWN0
IHV0c25hbWUgb3NuYW1lOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHBsYXRmb3JtTmFtZSwgKHVuYW1lKCZvc25hbWUpID49IDAgPyBTdHJpbmcob3NuYW1lLnN5
c25hbWUpICsgU3RyaW5nKCIgIikgKyBTdHJpbmcob3NuYW1lLm1hY2hpbmUpIDogZW1wdHlTdHJp
bmcoKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHBsYXRmb3JtTmFtZSh1
bmFtZSgmb3NuYW1lKSA+PSAwID8gU3RyaW5nKG9zbmFtZS5zeXNuYW1lKSArIFN0cmluZygiICIp
ICsgU3RyaW5nKG9zbmFtZS5tYWNoaW5lKSA6IGVtcHR5U3RyaW5nKCkpOwogICAgIHJldHVybiBw
bGF0Zm9ybU5hbWU7CiAjZWxzZQogICAgIHJldHVybiBXRUJDT1JFX05BVklHQVRPUl9QTEFURk9S
TTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwCmluZGV4IGY2
Y2NjMTQuLjc0NTBjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2li
aWxpdHlTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVmlzaWJpbGl0eVN0
YXRlLmNwcApAQCAtMzEsMTQgKzMxLDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIHBhZ2VWaXNpYmlsaXR5U3RhdGVT
dHJpbmcoUGFnZVZpc2liaWxpdHlTdGF0ZSBzdGF0ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB2aXNpYmxlLCAoQVNDSUlMaXRlcmFsKCJ2aXNp
YmxlIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBoaWRkZW4sIChBU0NJSUxpdGVyYWwoImhpZGRlbiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcHJlcmVuZGVyLCAoQVNDSUlMaXRlcmFsKCJw
cmVyZW5kZXIiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZp
c2libGUoQVNDSUlMaXRlcmFsKCJ2aXNpYmxlIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBTdHJpbmc+IGhpZGRlbihBU0NJSUxpdGVyYWwoImhpZGRlbiIpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBwcmVyZW5kZXIoQVNDSUlMaXRlcmFsKCJw
cmVyZW5kZXIiKSk7CiAKICAgICBzd2l0Y2ggKHN0YXRlKSB7CiAgICAgY2FzZSBQYWdlVmlzaWJp
bGl0eVN0YXRlVmlzaWJsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5k
ZXggZTM5ODE0Yi4uM2JkMzIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNyArNDYsNyBAQCB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8T3JpZ2luQWNjZXNzV2hpdGVMaXN0Pj4gT3JpZ2luQWNjZXNz
TWFwOwogCiBzdGF0aWMgT3JpZ2luQWNjZXNzTWFwJiBvcmlnaW5BY2Nlc3NNYXAoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChPcmlnaW5BY2Nlc3NNYXAsIG9yaWdpbkFj
Y2Vzc01hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcmlnaW5BY2Nlc3NNYXA+
IG9yaWdpbkFjY2Vzc01hcDsKICAgICByZXR1cm4gb3JpZ2luQWNjZXNzTWFwOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggMmVhMThl
Yy4uNjU2OWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVy
bi5oIgogCiAjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC02Miw3ICs2Myw3IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVy
bnMoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAKIGJvb2wgVXNlckNvbnRl
bnRVUkxQYXR0ZXJuOjpwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc2NoZW1lU2VwYXJhdG9yLCAo
QVNDSUlMaXRlcmFsKCI6Ly8iKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBT
dHJpbmc+IHNjaGVtZVNlcGFyYXRvcihBU0NJSUxpdGVyYWwoIjovLyIpKTsKIAogICAgIHNpemVf
dCBzY2hlbWVFbmRQb3MgPSBwYXR0ZXJuLmZpbmQoc2NoZW1lU2VwYXJhdG9yKTsKICAgICBpZiAo
c2NoZW1lRW5kUG9zID09IG5vdEZvdW5kKQpAQCAtNzAsNyArNzEsNyBAQCBib29sIFVzZXJDb250
ZW50VVJMUGF0dGVybjo6cGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQogCiAgICAgbV9zY2hl
bWUgPSBwYXR0ZXJuLmxlZnQoc2NoZW1lRW5kUG9zKTsKIAotICAgIHVuc2lnbmVkIGhvc3RTdGFy
dFBvcyA9IHNjaGVtZUVuZFBvcyArIHNjaGVtZVNlcGFyYXRvci5sZW5ndGgoKTsKKyAgICB1bnNp
Z25lZCBob3N0U3RhcnRQb3MgPSBzY2hlbWVFbmRQb3MgKyBzY2hlbWVTZXBhcmF0b3IuZ2V0KCku
bGVuZ3RoKCk7CiAgICAgaWYgKGhvc3RTdGFydFBvcyA+PSBwYXR0ZXJuLmxlbmd0aCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCA3ODdmMGEwLi40NzQ1MWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyQ29tcGFyaXNvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CkBAIC02NDUsMTkgKzY0NiwxOCBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBzaGFkb3dMaXN0TGVu
Z3RoKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdykKIAogc3RhdGljIGlubGluZSBjb25zdCBTaGFk
b3dEYXRhKiBzaGFkb3dGb3JCbGVuZGluZyhjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3csIGNv
bnN0IFNoYWRvd0RhdGEqIG90aGVyU2hhZG93KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0U2hhZG93RGF0YSwgKEludFBvaW50KCksIDAs
IDAsIE5vcm1hbCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudCkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhLCAo
SW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKLQot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0V2Vi
S2l0Qm94U2hhZG93RGF0YSwgKEludFBvaW50KCksIDAsIDAsIE5vcm1hbCwgdHJ1ZSwgQ29sb3I6
OnRyYW5zcGFyZW50KSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFNoYWRv
d0RhdGEsIGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEsIChJbnRQb2ludCgpLCAwLCAw
LCBJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRTaGFkb3dEYXRhKEludFBvaW50KCksIDAsIDAsIE5v
cm1hbCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFNoYWRvd0RhdGEoSW50UG9pbnQoKSwgMCwgMCwg
SW5zZXQsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YShJbnRQb2ludCgpLCAw
LCAwLCBOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEoSW50
UG9pbnQoKSwgMCwgMCwgSW5zZXQsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCk7CiAKICAgICBp
ZiAoc3JjU2hhZG93KQogICAgICAgICByZXR1cm4gc3JjU2hhZG93OwogCiAgICAgaWYgKG90aGVy
U2hhZG93LT5zdHlsZSgpID09IEluc2V0KQotICAgICAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlz
V2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YSA6ICZk
ZWZhdWx0SW5zZXRTaGFkb3dEYXRhOworICAgICAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Vi
a2l0Qm94U2hhZG93KCkgPyAmZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6
ICZkZWZhdWx0SW5zZXRTaGFkb3dEYXRhLmdldCgpOwogCi0gICAgcmV0dXJuIG90aGVyU2hhZG93
LT5pc1dlYmtpdEJveFNoYWRvdygpID8gJmRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhIDogJmRl
ZmF1bHRTaGFkb3dEYXRhOworICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFk
b3coKSA/ICZkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6ICZkZWZhdWx0U2hhZG93
RGF0YS5nZXQoKTsKIH0KIAogY2xhc3MgUHJvcGVydHlXcmFwcGVyU2hhZG93IDogcHVibGljIEFu
aW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKaW5kZXggYjgyMjI1Ni4uNjU1MWQ2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5p
bWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjIxLDcgKzIyMiw3IEBAIHZvaWQgQ29tcG9zaXRl
QW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIsIFJlbmRlCiAgICAgICAgIC8vIFRvc3MgdGhlIGFuaW1hdGlvbiBvcmRlciBtYXAuCiAgICAg
ICAgIG1fa2V5ZnJhbWVBbmltYXRpb25PcmRlck1hcC5jbGVhcigpOwogCi0gICAgICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG5vbmUsICgibm9u
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbm9uZSgibm9uZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAKICAgICAgICAgLy8gTm93IG1h
cmsgYW55IHN0aWxsIGFjdGl2ZSBhbmltYXRpb25zIGFzIGFjdGl2ZSBhbmQgYWRkIGFueSBuZXcg
YW5pbWF0aW9ucy4KICAgICAgICAgaWYgKHRhcmdldFN0eWxlLT5hbmltYXRpb25zKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCmluZGV4IDkzNTkzYWQuLjYwYTYxOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ3Vyc29yLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTg5LDI1OSArMTkwLDI1OSBAQCBQbGF0Zm9ybUN1cnNvciBDdXJzb3I6OnBsYXRmb3JtQ3Vy
c29yKCkgY29uc3QKIAogY29uc3QgQ3Vyc29yJiBwb2ludGVyQ3Vyc29yKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpQb2ludGVyKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlBvaW50ZXIpOwog
ICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNyb3NzQ3Vyc29yKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpDcm9zcykp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpDcm9zcyk7CiAg
ICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgaGFuZEN1cnNvcigpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6SGFuZCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpIYW5kKTsKICAgICBy
ZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBtb3ZlQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpNb3ZlKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok1vdmUpOwogICAgIHJldHVy
biBjOwogfQogCiBjb25zdCBDdXJzb3ImIHZlcnRpY2FsVGV4dEN1cnNvcigpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6VmVydGljYWxU
ZXh0KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlZlcnRp
Y2FsVGV4dCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY2VsbEN1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6Q2VsbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpD
ZWxsKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBjb250ZXh0TWVudUN1cnNv
cigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1
cnNvcjo6Q29udGV4dE1lbnUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBj
KEN1cnNvcjo6Q29udGV4dE1lbnUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3Im
IGFsaWFzQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vy
c29yLCBjLCAoQ3Vyc29yOjpBbGlhcykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJz
b3I+IGMoQ3Vyc29yOjpBbGlhcyk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYg
em9vbUluQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vy
c29yLCBjLCAoQ3Vyc29yOjpab29tSW4pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vy
c29yPiBjKEN1cnNvcjo6Wm9vbUluKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29y
JiB6b29tT3V0Q3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Q3Vyc29yLCBjLCAoQ3Vyc29yOjpab29tT3V0KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEN1cnNvcj4gYyhDdXJzb3I6Olpvb21PdXQpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIGNvcHlDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChDdXJzb3IsIGMsIChDdXJzb3I6OkNvcHkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Q3Vyc29yPiBjKEN1cnNvcjo6Q29weSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNv
ciYgbm9uZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6Tm9uZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJz
b3I+IGMoQ3Vyc29yOjpOb25lKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBw
cm9ncmVzc0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6UHJvZ3Jlc3MpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Q3Vyc29yPiBjKEN1cnNvcjo6UHJvZ3Jlc3MpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIG5vRHJvcEN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9Ecm9wKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vRHJvcCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0
IEN1cnNvciYgbm90QWxsb3dlZEN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm90QWxsb3dlZCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3RBbGxvd2VkKTsKICAgICByZXR1cm4g
YzsKIH0KIAogY29uc3QgQ3Vyc29yJiBpQmVhbUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6SUJlYW0pKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6SUJlYW0pOwogICAgIHJldHVybiBj
OwogfQogCiBjb25zdCBDdXJzb3ImIHdhaXRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OldhaXQpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6V2FpdCk7CiAgICAgcmV0dXJuIGM7CiB9
CiAKIGNvbnN0IEN1cnNvciYgaGVscEN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6SGVscCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpIZWxwKTsKICAgICByZXR1cm4gYzsKIH0KIAog
Y29uc3QgQ3Vyc29yJiBlYXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpFYXN0UmVzaXplKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkVhc3RSZXNpemUpOwogICAgIHJl
dHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vcnRoUmVzaXplQ3Vyc29yKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aFJl
c2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3J0
aFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9ydGhFYXN0UmVz
aXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29y
LCBjLCAoQ3Vyc29yOjpOb3J0aEVhc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhFYXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0K
IAogY29uc3QgQ3Vyc29yJiBub3J0aFdlc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoV2VzdFJlc2l6
ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3J0aFdl
c3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNvdXRoUmVzaXpl
Q3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBj
LCAoQ3Vyc29yOjpTb3V0aFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJz
b3I+IGMoQ3Vyc29yOjpTb3V0aFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgc291dGhFYXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpTb3V0aEVhc3RSZXNpemUpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6U291dGhFYXN0UmVzaXplKTsK
ICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBzb3V0aFdlc3RSZXNpemVDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6OlNvdXRoV2VzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+
IGMoQ3Vyc29yOjpTb3V0aFdlc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIHdlc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Oldlc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6V2VzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7
CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9ydGhTb3V0aFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhTb3V0
aFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpO
b3J0aFNvdXRoUmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBlYXN0
V2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEN1cnNvciwgYywgKEN1cnNvcjo6RWFzdFdlc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6RWFzdFdlc3RSZXNpemUpOwogICAgIHJldHVybiBj
OwogfQogCiBjb25zdCBDdXJzb3ImIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6
Tm9ydGhFYXN0U291dGhXZXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1
cnNvcj4gYyhDdXJzb3I6Ok5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7
CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9ydGhXZXN0U291dGhFYXN0UmVzaXplQ3Vyc29yKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpO
b3J0aFdlc3RTb3V0aEVhc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vy
c29yPiBjKEN1cnNvcjo6Tm9ydGhXZXN0U291dGhFYXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsK
IH0KIAogY29uc3QgQ3Vyc29yJiBjb2x1bW5SZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkNvbHVtblJlc2l6ZSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpDb2x1bW5SZXNp
emUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHJvd1Jlc2l6ZUN1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6Um93UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OlJvd1Jlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbWlkZGxl
UGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6TWlkZGxlUGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpNaWRkbGVQYW5uaW5nKTsKICAgICByZXR1cm4gYzsKIH0K
ICAgICAKIGNvbnN0IEN1cnNvciYgZWFzdFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkVhc3RQYW5uaW5nKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkVhc3RQYW5uaW5n
KTsKICAgICByZXR1cm4gYzsKIH0KICAgICAKIGNvbnN0IEN1cnNvciYgbm9ydGhQYW5uaW5nQ3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpOb3J0aFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29y
PiBjKEN1cnNvcjo6Tm9ydGhQYW5uaW5nKTsKICAgICByZXR1cm4gYzsKIH0KICAgICAKIGNvbnN0
IEN1cnNvciYgbm9ydGhFYXN0UGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhFYXN0UGFubmluZykpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3J0aEVhc3RQYW5u
aW5nKTsKICAgICByZXR1cm4gYzsKIH0KICAgICAKIGNvbnN0IEN1cnNvciYgbm9ydGhXZXN0UGFu
bmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNv
ciwgYywgKEN1cnNvcjo6Tm9ydGhXZXN0UGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3J0aFdlc3RQYW5uaW5nKTsKICAgICByZXR1cm4gYzsK
IH0KICAgICAKIGNvbnN0IEN1cnNvciYgc291dGhQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpTb3V0aFBhbm5p
bmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6U291dGhQ
YW5uaW5nKTsKICAgICByZXR1cm4gYzsKIH0KICAgICAKIGNvbnN0IEN1cnNvciYgc291dGhFYXN0
UGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6U291dGhFYXN0UGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpTb3V0aEVhc3RQYW5uaW5nKTsKICAgICByZXR1cm4g
YzsKIH0KICAgICAKIGNvbnN0IEN1cnNvciYgc291dGhXZXN0UGFubmluZ0N1cnNvcigpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6U291
dGhXZXN0UGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vy
c29yOjpTb3V0aFdlc3RQYW5uaW5nKTsKICAgICByZXR1cm4gYzsKIH0KICAgICAKIGNvbnN0IEN1
cnNvciYgd2VzdFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Oldlc3RQYW5uaW5nKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Oldlc3RQYW5uaW5nKTsKICAgICByZXR1cm4g
YzsKIH0KIAogY29uc3QgQ3Vyc29yJiBncmFiQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpHcmFiKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkdyYWIpOwogICAgIHJldHVybiBjOwog
fQogCiBjb25zdCBDdXJzb3ImIGdyYWJiaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpHcmFiYmluZykpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpHcmFiYmluZyk7CiAgICAgcmV0
dXJuIGM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAppbmRleCA1ODkxN2Zm
Li42NTU3OGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCkBAIC03Myw3ICs3
Myw3IEBAIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQogCiBzdGF0aWMgVmVjdG9yPFN0cmluZz4m
IHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoVmVjdG9yPFN0cmluZz4sIG92ZXJyaWRlLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBvdmVycmlkZTsKICAgICByZXR1cm4gb3ZlcnJp
ZGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0
cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAK
aW5kZXggOTNkMmU5MC4uNzk1MWZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAjaWYgVVNFKENGKQpAQCAtNzksMTEgKzgw
LDExIEBAIHN0YXRpYyBTdHJpbmcgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0oY29u
c3QgU3RyaW5nJiBvcmlnaW5hbCkKIAogICAgIC8vIFRydW5jYXRlIHRoZSBzdHJpbmcgaWYgaXQn
cyB0b28gbG9uZy4gVGhpcyBpcyBpbiBjb25zaXN0ZW5jeSB3aXRoIEFwcEtpdC4KICAgICB1bnNp
Z25lZCBtYXhOdW1iZXJPZkdyYXBoZW1lQ2x1c3RlcnNJbkxvb2t1cE1lbnVJdGVtID0gMjQ7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZWxsaXBzaXMsICgmaG9y
aXpvbnRhbEVsbGlwc2lzLCAxKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
ZWxsaXBzaXMoJmhvcml6b250YWxFbGxpcHNpcywgMSk7CiAKICAgICBTdHJpbmcgdHJpbW1lZCA9
IG9yaWdpbmFsLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhcmFj
dGVycyA9IG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnModHJpbW1lZCwgbWF4TnVtYmVy
T2ZHcmFwaGVtZUNsdXN0ZXJzSW5Mb29rdXBNZW51SXRlbSk7Ci0gICAgcmV0dXJuIG51bWJlck9m
Q2hhcmFjdGVycyA9PSB0cmltbWVkLmxlbmd0aCgpID8gdHJpbW1lZCA6IHRyaW1tZWQubGVmdChu
dW1iZXJPZkNoYXJhY3RlcnMpICsgZWxsaXBzaXM7CisgICAgcmV0dXJuIG51bWJlck9mQ2hhcmFj
dGVycyA9PSB0cmltbWVkLmxlbmd0aCgpID8gdHJpbW1lZCA6IHRyaW1tZWQubGVmdChudW1iZXJP
ZkNoYXJhY3RlcnMpICsgZWxsaXBzaXMuZ2V0KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCAxMjdjYzVhLi42MjBmMWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTM1MiwxNiArMzUzLDE2IEBAIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVTdXBwb3J0ZWROb25JbWFnZU1pbWVUeXBlcygpCiAKIHN0YXRpYyBNZWRpYU1J
TUVUeXBlTWFwJiBtZWRpYU1JTUVUeXBlTWFwKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoTWVkaWFNSU1FVHlwZU1hcCwgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1h
cCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZWRpYU1JTUVUeXBlTWFwPiBtZWRp
YU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwOwogCi0gICAgaWYgKCFtZWRpYU1JTUVUeXBlRm9yRXh0
ZW5zaW9uTWFwLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25N
YXAuZ2V0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbWVkaWFNSU1FVHlwZUZvckV4dGVu
c2lvbk1hcDsKIAogICAgIGNvbnN0IHVuc2lnbmVkIG51bVBhaXJzID0gc2l6ZW9mKGNvbW1vbk1l
ZGlhVHlwZXMpIC8gc2l6ZW9mKGNvbW1vbk1lZGlhVHlwZXNbMF0pOwogICAgIGZvciAodW5zaWdu
ZWQgbmR4ID0gMDsgbmR4IDwgbnVtUGFpcnM7ICsrbmR4KSB7CiAKLSAgICAgICAgaWYgKG1lZGlh
TUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuY29udGFpbnMoY29tbW9uTWVkaWFUeXBlc1tuZHhdLmV4
dGVuc2lvbikpCi0gICAgICAgICAgICBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldChj
b21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uKS0+YXBwZW5kKGNvbW1vbk1lZGlhVHlwZXNb
bmR4XS50eXBlKTsKKyAgICAgICAgaWYgKG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuZ2V0
KCkuY29udGFpbnMoY29tbW9uTWVkaWFUeXBlc1tuZHhdLmV4dGVuc2lvbikpCisgICAgICAgICAg
ICBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldCgpLmdldChjb21tb25NZWRpYVR5cGVz
W25keF0uZXh0ZW5zaW9uKS0+YXBwZW5kKGNvbW1vbk1lZGlhVHlwZXNbbmR4XS50eXBlKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiogc3lub255bXMgPSBuZXcg
VmVjdG9yPFN0cmluZz47CiAKQEAgLTM3MSw3ICszNzIsNyBAQCBzdGF0aWMgTWVkaWFNSU1FVHlw
ZU1hcCYgbWVkaWFNSU1FVHlwZU1hcCgpCiAgICAgICAgICAgICBpZiAoIXN5c3RlbVR5cGUuaXNF
bXB0eSgpICYmIGNvbW1vbk1lZGlhVHlwZXNbbmR4XS50eXBlICE9IHN5c3RlbVR5cGUpCiAgICAg
ICAgICAgICAgICAgc3lub255bXMtPmFwcGVuZChzeXN0ZW1UeXBlKTsKICAgICAgICAgICAgIHN5
bm9ueW1zLT5hcHBlbmQoY29tbW9uTWVkaWFUeXBlc1tuZHhdLnR5cGUpOwotICAgICAgICAgICAg
bWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5hZGQoY29tbW9uTWVkaWFUeXBlc1tuZHhdLmV4
dGVuc2lvbiwgc3lub255bXMpOworICAgICAgICAgICAgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lv
bk1hcC5nZXQoKS5hZGQoY29tbW9uTWVkaWFUeXBlc1tuZHhdLmV4dGVuc2lvbiwgc3lub255bXMp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC02NDIsNyArNjQzLDcgQEAgSGFzaFNldDxTdHJpbmc+
JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKQogCiBjb25z
dCBTdHJpbmcmIGRlZmF1bHRNSU1FVHlwZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGVmYXVsdE1JTUVUeXBlLCAoQVNDSUlMaXRlcmFsKCJh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IGRlZmF1bHRNSU1FVHlwZShBU0NJSUxpdGVyYWwoImFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbSIpKTsKICAgICByZXR1cm4gZGVmYXVsdE1JTUVUeXBlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKaW5kZXggYThiMGExMS4uYjY0NjUx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtMzYs
MTIgKzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFVSTFNjaGVtZXNNYXAm
IGxvY2FsVVJMU2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFVSTFNjaGVtZXNNYXAsIGxvY2FsU2NoZW1lcywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxVUkxTY2hlbWVzTWFwPiBsb2NhbFNjaGVtZXM7CiAKLSAgICBpZiAobG9jYWxTY2hlbWVz
LmlzRW1wdHkoKSkgewotICAgICAgICBsb2NhbFNjaGVtZXMuYWRkKCJmaWxlIik7CisgICAgaWYg
KGxvY2FsU2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbG9jYWxTY2hlbWVzLmdl
dCgpLmFkZCgiZmlsZSIpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBsb2NhbFNjaGVt
ZXMuYWRkKCJhcHBsZXdlYmRhdGEiKTsKKyAgICAgICAgbG9jYWxTY2hlbWVzLmdldCgpLmFkZCgi
YXBwbGV3ZWJkYXRhIik7CiAjZW5kaWYKICAgICB9CiAKQEAgLTUwLDIxICs1MCwyMSBAQCBzdGF0
aWMgVVJMU2NoZW1lc01hcCYgbG9jYWxVUkxTY2hlbWVzKCkKIAogc3RhdGljIFVSTFNjaGVtZXNN
YXAmIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBkaXNwbGF5SXNvbGF0ZWRTY2hlbWVzLCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGRpc3BsYXlJc29sYXRl
ZFNjaGVtZXM7CiAgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7CiB9CiAKIHN0YXRp
YyBVUkxTY2hlbWVzTWFwJiBzZWN1cmVTY2hlbWVzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgc2VjdXJlU2NoZW1lcywgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzZWN1cmVTY2hlbWVzOwogCi0gICAg
aWYgKHNlY3VyZVNjaGVtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuYWRk
KCJodHRwcyIpOwotICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZCgiYWJvdXQiKTsKLSAgICAgICAg
c2VjdXJlU2NoZW1lcy5hZGQoImRhdGEiKTsKLSAgICAgICAgc2VjdXJlU2NoZW1lcy5hZGQoIndz
cyIpOworICAgIGlmIChzZWN1cmVTY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBz
ZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgiaHR0cHMiKTsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5n
ZXQoKS5hZGQoImFib3V0Iik7CisgICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJkYXRh
Iik7CisgICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJ3c3MiKTsKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKLSAgICAgICAgc2VjdXJlU2NoZW1lcy5hZGQoUUxQcmV2aWV3UHJvdG9jb2woKSk7
CisgICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKFFMUHJldmlld1Byb3RvY29sKCkpOwog
I2VuZGlmCiAgICAgfQogCkBAIC03MywxNCArNzMsMTQgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAm
IHNlY3VyZVNjaGVtZXMoKQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlx
dWVPcmlnaW5zKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2No
ZW1lc01hcCwgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2luczsKIAotICAg
IGlmIChzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucy5hZGQoImFib3V0Iik7Ci0gICAgICAgIHNjaGVtZXNXaXRoVW5p
cXVlT3JpZ2lucy5hZGQoImphdmFzY3JpcHQiKTsKKyAgICBpZiAoc2NoZW1lc1dpdGhVbmlxdWVP
cmlnaW5zLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMuZ2V0KCkuYWRkKCJhYm91dCIpOworICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMu
Z2V0KCkuYWRkKCJqYXZhc2NyaXB0Iik7CiAgICAgICAgIC8vIFRoaXMgaXMgYSB3aWxsZnVsIHZp
b2xhdGlvbiBvZiBIVE1MNS4KICAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTg4NQotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMu
YWRkKCJkYXRhIik7CisgICAgICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5hZGQo
ImRhdGEiKTsKICAgICB9CiAKICAgICByZXR1cm4gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zOwpA
QCAtODgsMjYgKzg4LDI2IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzV2l0aFVuaXF1
ZU9yaWdpbnMoKQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgZW1wdHlEb2N1bWVudFNjaGVtZXMo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBl
bXB0eURvY3VtZW50U2NoZW1lcywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxT
Y2hlbWVzTWFwPiBlbXB0eURvY3VtZW50U2NoZW1lczsKIAotICAgIGlmIChlbXB0eURvY3VtZW50
U2NoZW1lcy5pc0VtcHR5KCkpCi0gICAgICAgIGVtcHR5RG9jdW1lbnRTY2hlbWVzLmFkZCgiYWJv
dXQiKTsKKyAgICBpZiAoZW1wdHlEb2N1bWVudFNjaGVtZXMuZ2V0KCkuaXNFbXB0eSgpKQorICAg
ICAgICBlbXB0eURvY3VtZW50U2NoZW1lcy5nZXQoKS5hZGQoImFib3V0Iik7CiAKICAgICByZXR1
cm4gZW1wdHlEb2N1bWVudFNjaGVtZXM7CiB9CiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHNj
aGVtZXNGb3JiaWRkZW5Gcm9tRG9tYWluUmVsYXhhdGlvbigpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwgc2NoZW1lcywgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IHNjaGVtZXM7CiAgICAgcmV0dXJu
IHNjaGVtZXM7CiB9CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBjYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdFNjaGVtZXMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChV
UkxTY2hlbWVzTWFwLCBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMsICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gY2FuRGlzcGxheU9ubHlJZkNh
blJlcXVlc3RTY2hlbWVzOwogCi0gICAgaWYgKGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2No
ZW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hl
bWVzLmFkZCgiYmxvYiIpOworICAgIGlmIChjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVt
ZXMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0
U2NoZW1lcy5nZXQoKS5hZGQoImJsb2IiKTsKICAgICB9CiAKICAgICByZXR1cm4gY2FuRGlzcGxh
eU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzOwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBVUkxT
Y2hlbWVzTWFwJiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKQogCiBzdGF0aWMg
VVJMU2NoZW1lc01hcCYgbm90QWxsb3dpbmdKYXZhc2NyaXB0VVJMc1NjaGVtZXMoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBub3RBbGxvd2lu
Z0phdmFzY3JpcHRVUkxzU2NoZW1lcywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxV
UkxTY2hlbWVzTWFwPiBub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lczsKICAgICByZXR1
cm4gbm90QWxsb3dpbmdKYXZhc2NyaXB0VVJMc1NjaGVtZXM7CiB9CiAKQEAgLTE0MiwyNCArMTQy
LDI0IEBAIGNvbnN0IFVSTFNjaGVtZXNNYXAmIFNjaGVtZVJlZ2lzdHJ5Ojpsb2NhbFNjaGVtZXMo
KQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nTG9jYWxTdG9yYWdlQWNj
ZXNzSW5Qcml2YXRlQnJvd3NpbmcoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChVUkxTY2hlbWVzTWFwLCBzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblBy
aXZhdGVCcm93c2luZywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVz
TWFwPiBzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsK
ICAgICByZXR1cm4gc2NoZW1lc0FsbG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJv
d3Npbmc7CiB9CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzQWxsb3dpbmdEYXRhYmFz
ZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblBy
aXZhdGVCcm93c2luZywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVz
TWFwPiBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOwogICAg
IHJldHVybiBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOwog
fQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgQ09SU0VuYWJsZWRTY2hlbWVzKCkKIHsKICAgICAv
LyBGSVhNRTogaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNjAKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgQ09SU0VuYWJs
ZWRTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+
IENPUlNFbmFibGVkU2NoZW1lczsKIAotICAgIGlmIChDT1JTRW5hYmxlZFNjaGVtZXMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIENPUlNFbmFibGVkU2NoZW1lcy5hZGQoImh0dHAiKTsKLSAgICAgICAg
Q09SU0VuYWJsZWRTY2hlbWVzLmFkZCgiaHR0cHMiKTsKKyAgICBpZiAoQ09SU0VuYWJsZWRTY2hl
bWVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBDT1JTRW5hYmxlZFNjaGVtZXMuZ2V0KCku
YWRkKCJodHRwIik7CisgICAgICAgIENPUlNFbmFibGVkU2NoZW1lcy5nZXQoKS5hZGQoImh0dHBz
Iik7CiAgICAgfQogCiAgICAgcmV0dXJuIENPUlNFbmFibGVkU2NoZW1lczsKQEAgLTE2Nyw3ICsx
NjcsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgQ09SU0VuYWJsZWRTY2hlbWVzKCkKIAogc3Rh
dGljIFVSTFNjaGVtZXNNYXAmIENvbnRlbnRTZWN1cml0eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBz
Y2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNj
aGVtZXM7CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lLmNwcAppbmRleCBkNzM3ZTJkLi40MzhmMzY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0yOCwxMyArMjgsMTQgQEAKIAog
I2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lTW9jay5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U2Nyb2xsYmFyVGhlbWUmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpCiB7CiAgICAgaWYgKFNldHRp
bmdzOjptb2NrU2Nyb2xsYmFyc0VuYWJsZWQoKSkgewotICAgICAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU2Nyb2xsYmFyVGhlbWVNb2NrLCBtb2NrVGhlbWUsICgpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNjcm9sbGJhclRoZW1lTW9jaz4gbW9ja1RoZW1lOwog
ICAgICAgICByZXR1cm4gbW9ja1RoZW1lOwogICAgIH0KICAgICByZXR1cm4gbmF0aXZlVGhlbWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmluZGV4IDRkMWM3N2EuLjg4OWI3NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMLmNwcApAQCAtMTk4MSw3ICsxOTgxLDcgQEAgYm9vbCBwcm90b2NvbElzSW5I
VFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQogCiBjb25zdCBVUkwmIGJsYW5rVVJMKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMLCBzdGF0aWNCbGFua1VSTCwg
KFBhcnNlZFVSTFN0cmluZywgImFib3V0OmJsYW5rIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFBhcnNlZFVSTFN0cmluZywgImFib3V0OmJsYW5rIik7
CiAgICAgcmV0dXJuIHN0YXRpY0JsYW5rVVJMOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwCmluZGV4IGQ2NzcwYTQuLjEyMDYxNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwCkBA
IC0yMiw2ICsyMiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9u
LmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBBbmltYXRpb246OkFuaW1hdGlvbigpCkBAIC0xNjAsNyArMTYyLDcgQEAgYm9vbCBB
bmltYXRpb246OmFuaW1hdGlvbnNNYXRjaChjb25zdCBBbmltYXRpb24mIG90aGVyLCBib29sIG1h
dGNoUGxheVN0YXRlcykgY28KIAogY29uc3QgU3RyaW5nJiBBbmltYXRpb246OmluaXRpYWxOYW1l
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBpbml0aWFs
VmFsdWUsIChBU0NJSUxpdGVyYWwoIm5vbmUiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGluaXRpYWxWYWx1ZShBU0NJSUxpdGVyYWwoIm5vbmUiKSk7CiAgICAgcmV0dXJu
IGluaXRpYWxWYWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5jcHAKaW5kZXggYWU5NTUwMi4uM2MyZGFjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCkBAIC0yOSwxMiArMjksMTMgQEAK
ICNpZiBVU0UoQVVESU9fU0VTU0lPTikKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
QXVkaW9TZXNzaW9uJiBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdWRpb1Nlc3Npb24sIHNlc3Npb24sICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXVkaW9TZXNzaW9uPiBzZXNzaW9uOwogICAgIHJldHVy
biBzZXNzaW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5oCmluZGV4IGQxZjUyNDYuLjBiYjRlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNjcsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmVmZXJyZWRCdWZm
ZXJTaXplKHNpemVfdCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJv
eWVkPEF1ZGlvU2Vzc2lvbj47CiAgICAgQXVkaW9TZXNzaW9uKCk7CiAgICAgfkF1ZGlvU2Vzc2lv
bigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24u
Y3BwCmluZGV4IGFmOTkyZmIuLmVhMzNlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAi
SFJURlBhbm5lci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtYXRoLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNjgsMTggKzY5LDE4IEBAIGNvbnN0IGZsb2F0IFJlc3BvbnNlU2FtcGxlUmF0ZSA9IDQ0MTAw
Owogc3RhdGljIEF1ZGlvQnVzKiBnZXRDb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzRm9yU3Vi
amVjdChjb25zdCBTdHJpbmcmIHN1YmplY3ROYW1lKQogewogICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIEF1ZGlvQnVzKj4gQXVkaW9CdXNNYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEF1ZGlvQnVzTWFwLCBhdWRpb0J1c01hcCwgKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdWRpb0J1c01hcD4gYXVkaW9CdXNNYXA7CiAKICAgICBBdWRpb0J1cyogYnVz
OwotICAgIEF1ZGlvQnVzTWFwOjppdGVyYXRvciBpdGVyYXRvciA9IGF1ZGlvQnVzTWFwLmZpbmQo
c3ViamVjdE5hbWUpOwotICAgIGlmIChpdGVyYXRvciA9PSBhdWRpb0J1c01hcC5lbmQoKSkgewor
ICAgIEF1ZGlvQnVzTWFwOjppdGVyYXRvciBpdGVyYXRvciA9IGF1ZGlvQnVzTWFwLmdldCgpLmZp
bmQoc3ViamVjdE5hbWUpOworICAgIGlmIChpdGVyYXRvciA9PSBhdWRpb0J1c01hcC5nZXQoKS5l
bmQoKSkgewogICAgICAgICBSZWZQdHI8QXVkaW9CdXM+IGNvbmNhdGVuYXRlZEltcHVsc2VSZXNw
b25zZXMgPSBBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uoc3ViamVjdE5hbWUudXRmOCgp
LmRhdGEoKSwgUmVzcG9uc2VTYW1wbGVSYXRlKTsKICAgICAgICAgQVNTRVJUKGNvbmNhdGVuYXRl
ZEltcHVsc2VSZXNwb25zZXMpOwogICAgICAgICBpZiAoIWNvbmNhdGVuYXRlZEltcHVsc2VSZXNw
b25zZXMpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBidXMgPSBjb25jYXRlbmF0
ZWRJbXB1bHNlUmVzcG9uc2VzLnJlbGVhc2UoKS5sZWFrUmVmKCk7Ci0gICAgICAgIGF1ZGlvQnVz
TWFwLnNldChzdWJqZWN0TmFtZSwgYnVzKTsKKyAgICAgICAgYXVkaW9CdXNNYXAuZ2V0KCkuc2V0
KHN1YmplY3ROYW1lLCBidXMpOwogICAgIH0gZWxzZQogICAgICAgICBidXMgPSBpdGVyYXRvci0+
dmFsdWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAppbmRleCA5ZDhkMWUxLi5hZGRiNTI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGlu
YXRpb25JT1MuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1
ZGlvU2VydmljZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
c0lPUy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUksoQXVkaW9Ub29sYm94KQogU09GVF9MSU5L
KEF1ZGlvVG9vbGJveCwgQXVkaW9Db21wb25lbnRGaW5kTmV4dCwgQXVkaW9Db21wb25lbnQsIChB
dWRpb0NvbXBvbmVudCBpbkNvbXBvbmVudCwgY29uc3QgQXVkaW9Db21wb25lbnREZXNjcmlwdGlv
biAqaW5EZXNjKSwgKGluQ29tcG9uZW50LCBpbkRlc2MpKQpAQCAtNjIsNyArNjMsNyBAQCBjb25z
dCBpbnQga1ByZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7CiB0eXBlZGVmIEhhc2hTZXQ8QXVkaW9E
ZXN0aW5hdGlvbklPUyo+IEF1ZGlvRGVzdGluYXRpb25TZXQ7CiBzdGF0aWMgQXVkaW9EZXN0aW5h
dGlvblNldCYgYXVkaW9EZXN0aW5hdGlvbnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChBdWRpb0Rlc3RpbmF0aW9uU2V0LCBhdWRpb0Rlc3RpbmF0aW9uU2V0LCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF1ZGlvRGVzdGluYXRpb25TZXQ+IGF1ZGlvRGVz
dGluYXRpb25TZXQ7CiAgICAgcmV0dXJuIGF1ZGlvRGVzdGluYXRpb25TZXQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5k
ZXggZTNlYTg2YS4uYjdiY2IxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDcsNyArNDgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgR3JhcGhpY3NMYXll
ciosIFZlY3RvcjxGbG9hdFJlY3Q+PiBSZXBhaW50TWFwOwogc3RhdGljIFJlcGFpbnRNYXAmIHJl
cGFpbnRSZWN0TWFwKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUmVw
YWludE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlcGFpbnRNYXA+
IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggODM1ZGVhMC4uMjY4YjgzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAt
ODgsOCArODgsOCBAQCBGbG9hdFNpemUgSW1hZ2VCdWZmZXI6OnNpemVGb3JEZXN0aW5hdGlvblNp
emUoRmxvYXRTaXplIHNpemUpIGNvbnN0CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNv
bG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3Bh
Y2UpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxpbnQ+LCBk
ZXZpY2VSZ2JMVVQsICgpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVj
dG9yPGludD4sIGxpbmVhclJnYkxVVCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8aW50Pj4gZGV2aWNlUmdiTFVUOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0
b3I8aW50Pj4gbGluZWFyUmdiTFVUOwogCiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZHN0Q29s
b3JTcGFjZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDIxZDgwYWUuLmZiZjllMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTIz
NSwxOSArMjM1LDE5IEBAIHN0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5n
aW5lUGxheWVyIGNvbnN0cnVjdG9yLCBNZWRpYUVuZ2luZVN1cHBvCiAKIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFwcGxpY2F0aW9uT2N0ZXRT
dHJlYW0sICgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNT
dHJpbmc+IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhcHBsaWNh
dGlvbk9jdGV0U3RyZWFtOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0UGxh
aW4oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIHRleHRQbGFpbiwgKCJ0ZXh0L3BsYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IHRleHRQbGFpbigidGV4dC9wbGFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiB0ZXh0UGxhaW47CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIGNvZGVjcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgY29kZWNzLCAoImNvZGVjcyIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBjb2RlY3MoImNvZGVjcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiBjb2RlY3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggN2MwYzA3MC4uODk4ZDY1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTU1LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAKIFNjcmF0Y2hCdWZmZXImIFNjcmF0Y2hC
dWZmZXI6OnNpbmdsZXRvbigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hCdWZmZXIsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U2NyYXRjaEJ1ZmZlcj4gc2NyYXRjaEJ1ZmZlcjsKICAgICByZXR1cm4gc2NyYXRjaEJ1
ZmZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMWZhYzcwNC4uM2Q2Y2U3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0zOTIsNyArMzkyLDcgQEAgc3RhdGljIGNvbnN0
IGNoYXIgKmJvb2xTdHJpbmcoYm9vbCB2YWwpCiB0eXBlZGVmIEhhc2hNYXA8TWVkaWFQbGF5ZXIq
LCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKj4gUGxheWVyVG9Qcml2YXRlTWFw
VHlwZTsKIHN0YXRpYyBQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlJiBwbGF5ZXJUb1ByaXZhdGVNYXAo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChQbGF5ZXJUb1ByaXZhdGVN
YXBUeXBlLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UGxheWVyVG9Qcml2
YXRlTWFwVHlwZT4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9OwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEu
Y3BwCmluZGV4IDcyNDg5M2IuLjYxNDAyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCkBAIC0yNCw2ICsy
NCw3IEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtMzYsNyArMzcsNyBAQCBSZWY8U291cmNlQWxwaGE+IFNvdXJjZUFscGhh
OjpjcmVhdGUoRmlsdGVyRWZmZWN0JiBzb3VyY2VFZmZlY3QpCiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNfZWZmZWN0TmFtZSwgKCJTb3VyY2VBbHBo
YSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzX2VmZmVjdE5hbWUoIlNvdXJjZUFscGhh
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfZWZm
ZWN0TmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggNjFiYjFiOC4uMjMxM2IwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiRmlsdGVy
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5o
IgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzUsNyArMzYs
NyBAQCBSZWY8U291cmNlR3JhcGhpYz4gU291cmNlR3JhcGhpYzo6Y3JlYXRlKEZpbHRlciYgZmls
dGVyKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IHNfZWZmZWN0TmFtZSwgKCJTb3VyY2VHcmFwaGljIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IHNfZWZmZWN0TmFtZSgiU291cmNlR3JhcGhpYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2VmZmVjdE5hbWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbQppbmRleCAwODBhOTEyLi41YzVlNmUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tCkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBzdGF0aWMgdm9pZCBhZGRGaWxl
VHlwZXNUb0NhY2hlKE5TQXJyYXkgKiBmaWxlVHlwZXMsIEhhc2hTZXQ8U3RyaW5nPiAmY2FjaGUp
CiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gbWltZUNvbW1vblR5cGVzQ2FjaGUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4sIGNhY2hlLCAo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gY2FjaGU7CiAg
ICAgc3RhdGljIGJvb2wgdHlwZUxpc3RJbml0aWFsaXplZCA9IGZhbHNlOwogCiAgICAgaWYgKCF0
eXBlTGlzdEluaXRpYWxpemVkKSB7CkBAIC0xMjg1LDcgKzEyODUsNyBAQCBzdGF0aWMgSGFzaFNl
dDxTdHJpbmc+IG1pbWVDb21tb25UeXBlc0NhY2hlKCkKIAogc3RhdGljIEhhc2hTZXQ8U3RyaW5n
PiBtaW1lTW9kZXJuVHlwZXNDYWNoZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwgY2FjaGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZTsKICAgICBzdGF0aWMgYm9vbCB0eXBlTGlzdElu
aXRpYWxpemVkID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKCF0eXBlTGlzdEluaXRpYWxpemVkKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ3Vyc29ySU9TLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwCmluZGV4IGY5NmJmYWYu
LmM5ZjBlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJ
T1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwCkBA
IC0yNiwxMSArMjYsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdXJzb3Iu
aCIKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCBDdXJzb3ImIGN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEN1cnNvciwgY3Vyc29yLCAoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEN1cnNvcj4gY3Vyc29yOwogICAgIHJldHVybiBjdXJzb3I7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29udHJv
bGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Rp
bGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAKaW5kZXggZGU3YjRlMC4uNWMzNjYzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVt
b3J5SGFuZGxlcklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVD
b250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgogI2luY2x1ZGUgIlRpbGVDb250cm9sbGVyLmgi
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNzksNyArODAsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjo6dHJp
bVVucGFyZW50ZWRUaWxlc1RvVGFyZ2V0KGludCB0YXJnZXQpCiAKIFRpbGVDb250cm9sbGVyTWVt
b3J5SGFuZGxlciYgdGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyLCBzdGF0
aWNUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyPiBzdGF0aWNUaWxlQ29udHJvbGxlck1l
bW9yeUhhbmRsZXI7CiAgICAgcmV0dXJuIHN0YXRpY1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxl
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVN
b3Rpb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rp
b25NYW5hZ2VyLm1tCmluZGV4IGJlMGRjMTUuLjM4NzU1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KQEAgLTY4LDcgKzY4
LDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBrR3Jhdml0eSA9IDkuODA2NjU7CiAKICsgKFdlYkNv
cmVNb3Rpb25NYW5hZ2VyICopc2hhcmVkTWFuYWdlcgogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChSZXRhaW5QdHI8V2ViQ29yZU1vdGlvbk1hbmFnZXI+LCBzaGFyZWRNb3Rp
b25NYW5hZ2VyLCAoW1tXZWJDb3JlTW90aW9uTWFuYWdlciBhbGxvY10gaW5pdF0pKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFdlYkNvcmVNb3Rpb25NYW5hZ2VyPj4gc2hh
cmVkTW90aW9uTWFuYWdlcihbW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIGFsbG9jXSBpbml0XSk7CiAg
ICAgcmV0dXJuIHNoYXJlZE1vdGlvbk1hbmFnZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCAwOWZiODI5Li5lM2FkM2ZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0xNTYsOCArMTU2LDggQEAgdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdU
Rjo6QXRvbWljU3QKICAgICAgICAgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWU7CiAKICAgICAg
ICAgaWYgKG1fdmlkZW9FbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpKSB7Ci0gICAgICAgICAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhaXJwbGF5LCAoQVNDSUlM
aXRlcmFsKCJhaXJwbGF5IikpKTsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHR2b3V0LCAoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKSk7CisgICAgICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhaXJwbGF5KEFTQ0lJTGl0ZXJhbCgi
YWlycGxheSIpKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHR2
b3V0KEFTQ0lJTGl0ZXJhbCgidHZvdXQiKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFN0
cmluZyB0eXBlID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmV4dGVybmFs
RGV2aWNlVHlwZSgpOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gYWlycGxheSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlv
bi5jcHAKaW5kZXggMGZiOGFlOS4uZDNhNmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgc3RhdGljIEhhc2hNYXA8dm9pZCAqLCB2b2lkICo+ICogV2ViVGhyZWFkR2V0T2Jz
ZXJ2ZWRDb250ZW50TW9kaWZpZXJzKCkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWRP
ckRpc2FibGVkKCkpOwogICAgIHR5cGVkZWYgSGFzaE1hcDx2b2lkICosIHZvaWQgKj4gVm9pZFZv
aWRNYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFZvaWRWb2lkTWFwLCBv
YnNlcnZlZENvbnRlbnRNb2RpZmllcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Vm9pZFZvaWRNYXA+IG9ic2VydmVkQ29udGVudE1vZGlmaWVyczsKICAgICByZXR1cm4gJm9ic2Vy
dmVkQ29udGVudE1vZGlmaWVyczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnSW1hZ2VNYWMubW0KaW5kZXggNDE2ZDVkZC4uZjZmY2NhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW1wb3J0ICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbXBv
cnQgIlRleHRSdW4uaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTE2MCw3ICsxNjEsNyBAQCBjb25zdCBmbG9hdCBEcmFnTGlua1Vy
bEZvbnRTaXplID0gMTA7CiBzdGF0aWMgRm9udENhc2NhZGUmIGZvbnRGcm9tTlNGb250KE5TRm9u
dCAqZm9udCkKIHsKICAgICBzdGF0aWMgTlNGb250ICpjdXJyZW50Rm9udDsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRm9udENhc2NhZGUsIGN1cnJlbnRSZW5kZXJlciwgKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZT4gY3VycmVudFJlbmRlcmVy
OwogICAgIAogICAgIGlmIChbZm9udCBpc0VxdWFsOmN1cnJlbnRGb250XSkKICAgICAgICAgcmV0
dXJuIGN1cnJlbnRSZW5kZXJlcjsKQEAgLTE2OCw3ICsxNjksNyBAQCBzdGF0aWMgRm9udENhc2Nh
ZGUmIGZvbnRGcm9tTlNGb250KE5TRm9udCAqZm9udCkKICAgICAgICAgQ0ZSZWxlYXNlKGN1cnJl
bnRGb250KTsKICAgICBjdXJyZW50Rm9udCA9IGZvbnQ7CiAgICAgQ0ZSZXRhaW4oY3VycmVudEZv
bnQpOwotICAgIGN1cnJlbnRSZW5kZXJlciA9IEZvbnRDYXNjYWRlKEZvbnRQbGF0Zm9ybURhdGEo
dG9DVEZvbnQoZm9udCksIFtmb250IHBvaW50U2l6ZV0pKTsKKyAgICBjdXJyZW50UmVuZGVyZXIu
Z2V0KCkgPSBGb250Q2FzY2FkZShGb250UGxhdGZvcm1EYXRhKHRvQ1RGb250KGZvbnQpLCBbZm9u
dCBwb2ludFNpemVdKSk7CiAgICAgcmV0dXJuIGN1cnJlbnRSZW5kZXJlcjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IGE4ZTZhMTEuLjhjZDk3M2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBzdGF0aWMgTlNSZWN0IGZvY3Vz
UmluZ0NsaXBSZWN0OwpAQCAtMTMyLDggKzEzMyw4IEBAIGVudW0gewogCiBUaGVtZSogcGxhdGZv
cm1UaGVtZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRoZW1lTWFj
LCB0aGVtZU1hYywgKCkpOwotICAgIHJldHVybiAmdGhlbWVNYWM7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFRoZW1lTWFjPiB0aGVtZU1hYzsKKyAgICByZXR1cm4gJnRoZW1lTWFjLmdldCgp
OwogfQogCiAvLyBIZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkgYSBidW5jaCBvZiBkaWZmZXJlbnQg
Y29udHJvbCBwYXJ0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aHJlYWRDaGVjay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5t
bQppbmRleCAzNjg2NDUyLi5jMjg0YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RocmVhZENoZWNrLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJUaHJlYWRDaGVjay5o
IgogCiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogCkBAIC05OCwxMiArOTksMTIgQEAgdm9pZCBXZWJDb3JlUmVwb3J0VGhyZWFk
VmlvbGF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXZWJDb3JlOjpUaHJlYWRWaW9sYXRpb24K
ICAgICBpZiAocm91bmQgPj0gTWF4aW11bVRocmVhZFZpb2xhdGlvblJvdW5kKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJp
bmc+LCBsb2dnZWRGdW5jdGlvbnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxTdHJpbmc+PiBsb2dnZWRGdW5jdGlvbnM7CiAgICAgc3dpdGNoICh0aHJlYWRWaW9sYXRp
b25CZWhhdmlvcltyb3VuZF0pIHsKICAgICAgICAgY2FzZSBOb1RocmVhZENoZWNrOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTG9nT25GaXJzdFRocmVhZFZpb2xhdGlvbjoKLSAg
ICAgICAgICAgIGlmIChsb2dnZWRGdW5jdGlvbnMuYWRkKGZ1bmN0aW9uKS5pc05ld0VudHJ5KSB7
CisgICAgICAgICAgICBpZiAobG9nZ2VkRnVuY3Rpb25zLmdldCgpLmFkZChmdW5jdGlvbikuaXNO
ZXdFbnRyeSkgewogICAgICAgICAgICAgICAgIE5TTG9nKEAiV2ViS2l0IFRocmVhZGluZyBWaW9s
YXRpb24gLSAlcyBjYWxsZWQgZnJvbSBzZWNvbmRhcnkgdGhyZWFkIiwgZnVuY3Rpb24pOwogICAg
ICAgICAgICAgICAgIE5TTG9nKEAiQWRkaXRpb25hbCB0aHJlYWRpbmcgdmlvbGF0aW9ucyBmb3Ig
dGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBiZSBsb2dnZWQuIik7CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJl
RGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCBiOGU0NGNiLi43OTZjMWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKICNpbmNsdWRlICJSZWFsdGlt
ZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01
Myw2ICs1NCw3IEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
IGZpbmFsIDogcHVibGljIENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKKyAgICBmcmllbmQgY2xhc3Mg
TmV2ZXJEZXN0cm95ZWQ8QVZDYXB0dXJlRGV2aWNlTWFuYWdlcj47CiBwdWJsaWM6CiAgICAgdmly
dHVhbCBWZWN0b3I8Q2FwdHVyZURldmljZUluZm8+JiBjYXB0dXJlRGV2aWNlTGlzdCgpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IDU3ZDIxNjAuLjcz
YzMxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0yMDksNyArMjA5
LDcgQEAgYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc0F2YWlsYWJsZSgpCiAKIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXImIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEFWQ2FwdHVyZURldmljZU1hbmFn
ZXIsIG1hbmFnZXIsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QVZDYXB0dXJlRGV2
aWNlTWFuYWdlcj4gbWFuYWdlcjsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IGI0OWQxZjYuLjYzYzhl
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKQEAg
LTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlciYgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6cGxhdGZvcm1DZW50ZXIoKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMsIGNlbnRlciwgKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjPiBjZW50ZXI7CiAg
ICAgcmV0dXJuIGNlbnRlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAKaW5kZXggYWVjMDQ1Yy4uMzEwMjgwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tC
b3guY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0ludDhB
cnJheS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzYsNyArNzcs
NyBAQCBNb2NrVHJhY2tCb3g6Ok1vY2tUcmFja0JveChBcnJheUJ1ZmZlciogZGF0YSkKIAogY29u
c3QgU3RyaW5nJiBNb2NrVHJhY2tCb3g6OnR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIHRyYWssIChBU0NJSUxpdGVyYWwoInRyYWsiKSkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHRyYWsoQVNDSUlMaXRlcmFsKCJ0cmFrIikp
OwogICAgIHJldHVybiB0cmFrOwogfQogCkBAIC0xMDUsNyArMTA2LDcgQEAgTW9ja0luaXRpYWxp
emF0aW9uQm94OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3goQXJyYXlCdWZmZXIqIGRhdGEpCiAKIGNv
bnN0IFN0cmluZyYgTW9ja0luaXRpYWxpemF0aW9uQm94Ojp0eXBlKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBpbml0LCAoQVNDSUlMaXRlcmFsKCJpbml0
IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBpbml0KEFTQ0lJTGl0ZXJh
bCgiaW5pdCIpKTsKICAgICByZXR1cm4gaW5pdDsKIH0KIApAQCAtMTMzLDcgKzEzNCw3IEBAIE1v
Y2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3goQXJyYXlCdWZmZXIqIGRhdGEpCiAKIGNvbnN0IFN0
cmluZyYgTW9ja1NhbXBsZUJveDo6dHlwZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgc21wbCwgKEFTQ0lJTGl0ZXJhbCgic21wbCIpKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc21wbChBU0NJSUxpdGVyYWwoInNtcGwiKSk7CiAg
ICAgcmV0dXJuIHNtcGw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggNzdhNzFlMy4uNWQzMDBkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgPHd0Zi9E
YXRlTWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNjUsMTQgKzM2NiwxNCBAQCB2b2lk
IGZpbmRDaGFyc2V0SW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVk
IGludCYgY2hhcnNldFBvcywgdQogCiBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhT
U0Rpc3Bvc2l0aW9uIHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRl
ciwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCB1bnNpZ25lZCYgZmFpbHVyZVBvc2l0aW9uLCBTdHJp
bmcmIHJlcG9ydFVSTCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZFRvZ2dsZSwgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQg
MCBvciAxIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBm
YWlsdXJlUmVhc29uSW52YWxpZFNlcGFyYXRvciwgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgc2Vt
aWNvbG9uIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBm
YWlsdXJlUmVhc29uSW52YWxpZEVxdWFscywgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgZXF1YWxz
IHNpZ24iKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZh
aWx1cmVSZWFzb25JbnZhbGlkTW9kZSwgKEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBtb2RlIGRpcmVj
dGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFp
bHVyZVJlYXNvbkludmFsaWRSZXBvcnQsIChBU0NJSUxpdGVyYWwoImludmFsaWQgcmVwb3J0IGRp
cmVjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
ZmFpbHVyZVJlYXNvbkR1cGxpY2F0ZU1vZGUsIChBU0NJSUxpdGVyYWwoImR1cGxpY2F0ZSBtb2Rl
IGRpcmVjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgZmFpbHVyZVJlYXNvbkR1cGxpY2F0ZVJlcG9ydCwgKEFTQ0lJTGl0ZXJhbCgiZHVwbGljYXRl
IHJlcG9ydCBkaXJlY3RpdmUiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkRGlyZWN0aXZlLCAoQVNDSUlMaXRlcmFsKCJ1
bnJlY29nbml6ZWQgZGlyZWN0aXZlIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZFRvZ2dsZShBU0NJSUxpdGVyYWwoImV4cGVjdGVkIDAg
b3IgMSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29u
SW52YWxpZFNlcGFyYXRvcihBU0NJSUxpdGVyYWwoImV4cGVjdGVkIHNlbWljb2xvbiIpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZEVxdWFs
cyhBU0NJSUxpdGVyYWwoImV4cGVjdGVkIGVxdWFscyBzaWduIikpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkTW9kZShBU0NJSUxpdGVyYWwo
ImludmFsaWQgbW9kZSBkaXJlY3RpdmUiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gZmFpbHVyZVJlYXNvbkludmFsaWRSZXBvcnQoQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHJl
cG9ydCBkaXJlY3RpdmUiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFp
bHVyZVJlYXNvbkR1cGxpY2F0ZU1vZGUoQVNDSUlMaXRlcmFsKCJkdXBsaWNhdGUgbW9kZSBkaXJl
Y3RpdmUiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNv
bkR1cGxpY2F0ZVJlcG9ydChBU0NJSUxpdGVyYWwoImR1cGxpY2F0ZSByZXBvcnQgZGlyZWN0aXZl
IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25JbnZh
bGlkRGlyZWN0aXZlKEFTQ0lJTGl0ZXJhbCgidW5yZWNvZ25pemVkIGRpcmVjdGl2ZSIpKTsKIAog
ICAgIHVuc2lnbmVkIHBvcyA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggNWEzZGQzOC4uMGEwYTM0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDgsNyArNDksNyBAQCBzdGF0aWMgQnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3Ry
dWN0b3JNYXAmIGJ1aWx0aW5SZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwKAogI2Vsc2UKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogI2VuZGlmCi0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEJ1aWx0aW5SZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwLCBtYXAsICgp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3Ry
dWN0b3JNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCkBAIC02MSw3ICs2Miw3IEBAIHR5
cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlc291cmNlSGFuZGxlOjpCdWlsdGluU3luY2hy
b25vdXNMb2FkZXI+IEJ1aWx0aW5SCiBzdGF0aWMgQnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hy
b25vdXNMb2FkZXJNYXAmIGJ1aWx0aW5SZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVyTWFw
KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChCdWlsdGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCwg
bWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEJ1aWx0aW5SZXNvdXJjZUhhbmRs
ZVN5bmNocm9ub3VzTG9hZGVyTWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRk5ldC5jcHAKaW5kZXggZWM3NWVkZS4uOTRlZDA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
CkBAIC04MywxNCArODMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaFNl
dDxTdHJpbmc+JiBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4sIGhvc3RzLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gaG9zdHM7CiAgICAgcmV0
dXJuIGhvc3RzOwogfQogCiBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxDRkRhdGFS
ZWY+PiYgY2xpZW50Q2VydHMoKQogewogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJldGFp
blB0cjxDRkRhdGFSZWY+PiBDZXJ0c01hcDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQ2VydHNNYXAsIGNlcnRzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENl
cnRzTWFwPiBjZXJ0czsKICAgICByZXR1cm4gY2VydHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmgKaW5k
ZXggOWE1M2NhNi4uZDg5MmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9BdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9BdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpZm5kZWYgQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZV9oCiAjZGVmaW5lIEF0b21pY1N0cmlu
Z0tleWVkTVJVQ2FjaGVfaAogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM2LDcgKzM3LDcgQEAgcHVibGljOgogICAgIFQgZ2V0KGNvbnN0IEF0b21pY1N0cmluZyYga2V5
KQogICAgIHsKICAgICAgICAgaWYgKGtleS5pc051bGwoKSkgewotICAgICAgICAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFQsIHZhbHVlRm9yTnVsbCwgKGNyZWF0ZVZhbHVlRm9y
TnVsbEtleSgpKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VD4gdmFsdWVG
b3JOdWxsKGNyZWF0ZVZhbHVlRm9yTnVsbEtleSgpKTsKICAgICAgICAgICAgIHJldHVybiB2YWx1
ZUZvck51bGw7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKaW5kZXggNDBiOGJlOS4uNjBiMmU3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gQXRvbWljU3RyaW5nS2V5ZWRNUlVD
YWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+Pjo6Y3JlYXRlCiAKIHN0YXRpYyBBdG9taWNTdHJp
bmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+JiBjZkxvY2FsZUNhY2hlKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nS2V5ZWRN
UlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+PiwgY2FjaGUsICgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2Nh
bGVSZWY+Pj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA3NGUwNTcyLi5iMjhhMTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE2NjAsOCArMTY2MCw4IEBAIFJl
bmRlckJsb2NrKiBSZW5kZXJCbG9jazo6YmxvY2tFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3QK
ICAgICAKIHN0YXRpYyBDb250aW51YXRpb25PdXRsaW5lVGFibGVNYXAqIGNvbnRpbnVhdGlvbk91
dGxpbmVUYWJsZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENvbnRp
bnVhdGlvbk91dGxpbmVUYWJsZU1hcCwgdGFibGUsICgpKTsKLSAgICByZXR1cm4gJnRhYmxlOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb250aW51YXRpb25PdXRsaW5lVGFibGVNYXA+IHRh
YmxlOworICAgIHJldHVybiAmdGFibGUuZ2V0KCk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmFk
ZENvbnRpbnVhdGlvbldpdGhPdXRsaW5lKFJlbmRlcklubGluZSogZmxvdykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCBjNzQ1NjM5Li40MDNjYTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlckVsZW1lbnQm
LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpCiAKIHN0YXRpYyBDb3VudGVyTWFwcyYgY291
bnRlck1hcHMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDb3VudGVy
TWFwcywgc3RhdGljQ291bnRlck1hcHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Q291bnRlck1hcHM+IHN0YXRpY0NvdW50ZXJNYXBzOwogICAgIHJldHVybiBzdGF0aWNDb3VudGVy
TWFwczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCBkOTNiM2VkLi5hZmNkYjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcApAQCAtOTg3LDggKzk4Nyw4IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjphcHBseUxpbmVDbGFtcChGbGV4Qm94SXRlcmF0b3ImIGl0ZXJhdG9yLCBib29sCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBVQ2hhciBlbGxpcHNpc0FuZFNw
YWNlWzJdID0geyBob3Jpem9udGFsRWxsaXBzaXMsICcgJyB9OwotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbGxpcHNpc0FuZFNwYWNlU3RyLCAo
ZWxsaXBzaXNBbmRTcGFjZSwgMikpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBlbGxpcHNpc1N0ciwgKCZob3Jpem9udGFsRWxsaXBzaXMsIDEp
KTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZWxsaXBzaXNB
bmRTcGFjZVN0cihlbGxpcHNpc0FuZFNwYWNlLCAyKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gZWxsaXBzaXNTdHIoJmhvcml6b250YWxFbGxpcHNpcywgMSk7
CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSBudW1WaXNpYmxlTGluZXMg
PT0gMSA/IGZpcnN0TGluZVN0eWxlKCkgOiBzdHlsZSgpOwogICAgICAgICBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCA9IGxpbmVTdHlsZS5mb250Q2FzY2FkZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAyNTFiMGVlLi5lYTM3OTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM2MzMsMTIgKzM2MzMsMTIgQEAg
dm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICBSZWZQdHI8SW1hZ2U+IHJlc2l6ZUNvcm5lcklt
YWdlOwogICAgIEZsb2F0U2l6ZSBjb3JuZXJSZXNpemVyU2l6ZTsKICAgICBpZiAocmVuZGVyZXIo
KS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkgPj0gMikgewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSW1hZ2UqLCByZXNpemVDb3JuZXJJbWFnZUhpUmVzLCAo
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxl
YWtSZWYoKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVD
b3JuZXJJbWFnZUhpUmVzKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNp
emVDb3JuZXJAMngiKS5sZWFrUmVmKCkpOwogICAgICAgICByZXNpemVDb3JuZXJJbWFnZSA9IHJl
c2l6ZUNvcm5lckltYWdlSGlSZXM7CiAgICAgICAgIGNvcm5lclJlc2l6ZXJTaXplID0gcmVzaXpl
Q29ybmVySW1hZ2UtPnNpemUoKTsKICAgICAgICAgY29ybmVyUmVzaXplclNpemUuc2NhbGUoMC41
Zik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEltYWdlKiwgcmVzaXplQ29ybmVySW1hZ2VMb1JlcywgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXIiKS5sZWFrUmVmKCkpKTsKKyAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEltYWdlKj4gcmVzaXplQ29ybmVySW1hZ2VMb1JlcyhJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIikubGVha1JlZigpKTsKICAg
ICAgICAgcmVzaXplQ29ybmVySW1hZ2UgPSByZXNpemVDb3JuZXJJbWFnZUxvUmVzOwogICAgICAg
ICBjb3JuZXJSZXNpemVyU2l6ZSA9IHJlc2l6ZUNvcm5lckltYWdlLT5zaXplKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAK
aW5kZXggNTRmZWEwYy4uMTY5MmRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0yNiwxNCArMjYsMTUgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUg
IlJlbmRlclNjcm9sbGJhci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5k
ZXJTY3JvbGxiYXJUaGVtZSogUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJlbmRlclNjcm9sbGJhclRo
ZW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUmVuZGVyU2Nyb2xs
YmFyVGhlbWUsIHRoZW1lLCAoKSk7Ci0gICAgcmV0dXJuICZ0aGVtZTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmVuZGVyU2Nyb2xsYmFyVGhlbWU+IHRoZW1lOworICAgIHJldHVybiAmdGhl
bWUuZ2V0KCk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxv
bmdUcmFja0F4aXMoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6ZSwgaW50JiBh
ZnRlclNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBj
NjhiYzhjLi4zYWI5YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGlj
IENvbG9yJiBjdXN0b21Gb2N1c1JpbmdDb2xvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKENvbG9yLCBjb2xvciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDb2xvcj4gY29sb3I7CiAgICAgcmV0dXJuIGNvbG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IGU0OTQ3MTMuLjkyNGVhMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHVu
c2lnbmVkIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNfd2lkZ2V0SGll
cmFyY2h5VXBkYXRlU3VzcGVuZENvCiAKIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9u
U2NvcGU6OldpZGdldFRvUGFyZW50TWFwJiBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lv
blNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChXaWRnZXRUb1BhcmVudE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFdpZGdldFRvUGFyZW50TWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8u
aAppbmRleCA5MTJhYTVjLi4zOTU2NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlICJTaGFwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMTMwLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFw
PGNvbnN0IFJlbmRlckJveCosIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZU91dHNpZGVJbmZvPj4gSW5m
b01hcDsKICAgICBzdGF0aWMgSW5mb01hcCYgaW5mb01hcCgpCiAgICAgewotICAgICAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSW5mb01hcCwgc3RhdGljSW5mb01hcCwgKCkpOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW5mb01hcD4gc3RhdGljSW5mb01hcDsKICAg
ICAgICAgcmV0dXJuIHN0YXRpY0luZm9NYXA7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA2NThkZWQ1Li4wYmQ5YTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAg
LTEyNDgsOCArMTI0OCw4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5bGU6Omh5cGhl
blN0cmluZygpIGNvbnN0CiAgICAgICAgIHJldHVybiBoeXBoZW5hdGlvblN0cmluZzsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkZXBlbmQgb24gbG9jYWxlLgotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGh5cGhlbk1pbnVzU3RyaW5nLCAoJmh5
cGhlbk1pbnVzLCAxKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgaHlwaGVuU3RyaW5nLCAoJmh5cGhlbiwgMSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IGh5cGhlbk1pbnVzU3RyaW5nKCZoeXBoZW5NaW51cywgMSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaHlwaGVuU3RyaW5nKCZo
eXBoZW4sIDEpOwogICAgIHJldHVybiBmb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2x5cGhG
b3JDaGFyYWN0ZXIoaHlwaGVuKSA/IGh5cGhlblN0cmluZyA6IGh5cGhlbk1pbnVzU3RyaW5nOwog
fQogCkBAIC0xMjYxLDI4ICsxMjYxLDI4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5
bGU6OnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSBjb25zdAogICAgIGNhc2UgVGV4dEVtcGhhc2lz
TWFya0N1c3RvbToKICAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKTsKICAg
ICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3Q6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVkRG90U3RyaW5nLCAoJmJ1bGxldCwgMSkp
OwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBv
cGVuRG90U3RyaW5nLCAoJndoaXRlQnVsbGV0LCAxKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpbGxlZERvdFN0cmluZygmYnVsbGV0LCAxKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlbkRvdFN0cmluZygmd2hp
dGVCdWxsZXQsIDEpOwogICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRF
bXBoYXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWREb3RTdHJpbmcgOiBvcGVuRG90U3RyaW5nOwogICAg
IH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6IHsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVkQ2lyY2xlU3RyaW5nLCAo
JmJsYWNrQ2lyY2xlLCAxKSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIG9wZW5DaXJjbGVTdHJpbmcsICgmd2hpdGVDaXJjbGUsIDEpKTsKKyAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkQ2lyY2xlU3Ry
aW5nKCZibGFja0NpcmNsZSwgMSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG9wZW5DaXJjbGVTdHJpbmcoJndoaXRlQ2lyY2xlLCAxKTsKICAgICAgICAgcmV0
dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8gZmlsbGVk
Q2lyY2xlU3RyaW5nIDogb3BlbkNpcmNsZVN0cmluZzsKICAgICB9CiAgICAgY2FzZSBUZXh0RW1w
aGFzaXNNYXJrRG91YmxlQ2lyY2xlOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIGZpbGxlZERvdWJsZUNpcmNsZVN0cmluZywgKCZmaXNoZXll
LCAxKSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIG9wZW5Eb3VibGVDaXJjbGVTdHJpbmcsICgmYnVsbHNleWUsIDEpKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkRG91YmxlQ2lyY2xlU3RyaW5n
KCZmaXNoZXllLCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gb3BlbkRvdWJsZUNpcmNsZVN0cmluZygmYnVsbHNleWUsIDEpOwogICAgICAgICByZXR1cm4g
dGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWREb3Vi
bGVDaXJjbGVTdHJpbmcgOiBvcGVuRG91YmxlQ2lyY2xlU3RyaW5nOwogICAgIH0KICAgICBjYXNl
IFRleHRFbXBoYXNpc01hcmtUcmlhbmdsZTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWxsZWRUcmlhbmdsZVN0cmluZywgKCZibGFja1Vw
UG9pbnRpbmdUcmlhbmdsZSwgMSkpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBvcGVuVHJpYW5nbGVTdHJpbmcsICgmd2hpdGVVcFBvaW50aW5n
VHJpYW5nbGUsIDEpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gZmlsbGVkVHJpYW5nbGVTdHJpbmcoJmJsYWNrVXBQb2ludGluZ1RyaWFuZ2xlLCAxKTsKKyAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlblRyaWFuZ2xlU3Ry
aW5nKCZ3aGl0ZVVwUG9pbnRpbmdUcmlhbmdsZSwgMSk7CiAgICAgICAgIHJldHVybiB0ZXh0RW1w
aGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZFRyaWFuZ2xlU3Ry
aW5nIDogb3BlblRyaWFuZ2xlU3RyaW5nOwogICAgIH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtTZXNhbWU6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgZmlsbGVkU2VzYW1lU3RyaW5nLCAoJnNlc2FtZURvdCwgMSkpOwotICAgICAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvcGVuU2VzYW1lU3Ry
aW5nLCAoJndoaXRlU2VzYW1lRG90LCAxKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IGZpbGxlZFNlc2FtZVN0cmluZygmc2VzYW1lRG90LCAxKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlblNlc2FtZVN0cmluZygm
d2hpdGVTZXNhbWVEb3QsIDEpOwogICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09
IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWRTZXNhbWVTdHJpbmcgOiBvcGVuU2VzYW1l
U3RyaW5nOwogICAgIH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtBdXRvOgpAQCAtMTI5Nywx
MyArMTI5NywxMyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFz
aXNNYXJrU3RyaW5nKCkgY29uc3QKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiBjb25z
dCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6aW5pdGlhbERhc2hi
b2FyZFJlZ2lvbnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0
b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+LCBlbXB0eUxpc3QsICgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPj4gZW1wdHlMaXN0OwogICAg
IHJldHVybiBlbXB0eUxpc3Q7CiB9CiAKIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lv
bj4mIFJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJkUmVnaW9ucygpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4sIG5vbmVM
aXN0LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHlsZURhc2hib2Fy
ZFJlZ2lvbj4+IG5vbmVMaXN0OwogICAgIHN0YXRpYyBib29sIG5vbmVMaXN0SW5pdGlhbGl6ZWQg
PSBmYWxzZTsKIAogICAgIGlmICghbm9uZUxpc3RJbml0aWFsaXplZCkgewpAQCAtMTMxNCw3ICsx
MzE0LDcgQEAgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6
Om5vbmVEYXNoYm9hcmRSZWdpb25zKCkKICAgICAgICAgcmVnaW9uLm9mZnNldC5ib3R0b20oKSA9
IExlbmd0aCgpOwogICAgICAgICByZWdpb24ub2Zmc2V0LmxlZnQoKSA9IExlbmd0aCgpOwogICAg
ICAgICByZWdpb24udHlwZSA9IFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpOb25lOwotICAgICAgICBu
b25lTGlzdC5hcHBlbmQocmVnaW9uKTsKKyAgICAgICAgbm9uZUxpc3QuZ2V0KCkuYXBwZW5kKHJl
Z2lvbik7CiAgICAgICAgIG5vbmVMaXN0SW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gbm9uZUxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCmluZGV4IDY1ODVjNmUuLmVkNDlhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiVW5p
Y29kZUJpZGkuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC0yMDA4LDcgKzIwMDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVuc2lnbmVkIHNo
b3J0IGluaXRpYWxDb2x1bW5Db3VudCgpIHsgcmV0dXJuIDE7IH0KICAgICBzdGF0aWMgQ29sdW1u
RmlsbCBpbml0aWFsQ29sdW1uRmlsbCgpIHsgcmV0dXJuIENvbHVtbkZpbGxCYWxhbmNlOyB9CiAg
ICAgc3RhdGljIENvbHVtblNwYW4gaW5pdGlhbENvbHVtblNwYW4oKSB7IHJldHVybiBDb2x1bW5T
cGFuTm9uZTsgfQotICAgIHN0YXRpYyBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBpbml0aWFs
VHJhbnNmb3JtKCkgeyBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVHJhbnNmb3JtT3Bl
cmF0aW9ucywgb3BzLCAoKSk7IHJldHVybiBvcHM7IH0KKyAgICBzdGF0aWMgY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9ucyYgaW5pdGlhbFRyYW5zZm9ybSgpIHsgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFRyYW5zZm9ybU9wZXJhdGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQogICAgIHN0YXRpYyBMZW5n
dGggaW5pdGlhbFRyYW5zZm9ybU9yaWdpblgoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNl
bnQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWSgpIHsgcmV0
dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgRVBvaW50ZXJFdmVudHMg
aW5pdGlhbFBvaW50ZXJFdmVudHMoKSB7IHJldHVybiBQRV9BVVRPOyB9CkBAIC0yMTE0LDkgKzIx
MTUsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJl
Z2lvbj4mIGluaXRpYWxEYXNoYm9hcmRSZWdpb25zKCk7CiAgICAgc3RhdGljIGNvbnN0IFZlY3Rv
cjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIG5vbmVEYXNoYm9hcmRSZWdpb25zKCk7CiAjZW5kaWYK
LSAgICBzdGF0aWMgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgaW5pdGlhbEZpbHRlcigpIHsgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZpbHRlck9wZXJhdGlvbnMsIG9wcywgKCkpOyBy
ZXR1cm4gb3BzOyB9CisgICAgc3RhdGljIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGluaXRpYWxG
aWx0ZXIoKSB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGaWx0ZXJPcGVyYXRpb25zPiBvcHM7IHJl
dHVybiBvcHM7IH0KICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIHN0YXRpYyBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBpbml0aWFsQmFja2Ryb3BGaWx0ZXIoKSB7IERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChGaWx0ZXJPcGVyYXRpb25zLCBvcHMsICgpKTsgcmV0dXJuIG9w
czsgfQorICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBpbml0aWFsQmFja2Ryb3BG
aWx0ZXIoKSB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGaWx0ZXJPcGVyYXRpb25zPiBvcHM7IHJl
dHVybiBvcHM7IH0KICNlbmRpZgogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgc3Rh
dGljIEJsZW5kTW9kZSBpbml0aWFsQmxlbmRNb2RlKCkgeyByZXR1cm4gQmxlbmRNb2RlTm9ybWFs
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Bh
dGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApp
bmRleCAzYmUxZDdiLi5lYzJlMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5jcHAKQEAgLTEzMSwxNSArMTMxLDE1IEBAIGJvb2wgUmVuZGVyU1ZH
UGF0aDo6c2hvdWxkU3Ryb2tlWmVyb0xlbmd0aFN1YnBhdGgoKSBjb25zdAogCiBQYXRoKiBSZW5k
ZXJTVkdQYXRoOjp6ZXJvTGVuZ3RoTGluZWNhcFBhdGgoY29uc3QgRmxvYXRQb2ludCYgbGluZWNh
cFBvc2l0aW9uKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChQ
YXRoLCB0ZW1wUGF0aCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYXRoPiB0ZW1w
UGF0aDsKIAotICAgIHRlbXBQYXRoLmNsZWFyKCk7CisgICAgdGVtcFBhdGguZ2V0KCkuY2xlYXIo
KTsKICAgICBpZiAoc3R5bGUoKS5zdmdTdHlsZSgpLmNhcFN0eWxlKCkgPT0gU3F1YXJlQ2FwKQot
ICAgICAgICB0ZW1wUGF0aC5hZGRSZWN0KHplcm9MZW5ndGhTdWJwYXRoUmVjdChsaW5lY2FwUG9z
aXRpb24sIHRoaXMtPnN0cm9rZVdpZHRoKCkpKTsKKyAgICAgICAgdGVtcFBhdGguZ2V0KCkuYWRk
UmVjdCh6ZXJvTGVuZ3RoU3VicGF0aFJlY3QobGluZWNhcFBvc2l0aW9uLCB0aGlzLT5zdHJva2VX
aWR0aCgpKSk7CiAgICAgZWxzZQotICAgICAgICB0ZW1wUGF0aC5hZGRFbGxpcHNlKHplcm9MZW5n
dGhTdWJwYXRoUmVjdChsaW5lY2FwUG9zaXRpb24sIHRoaXMtPnN0cm9rZVdpZHRoKCkpKTsKKyAg
ICAgICAgdGVtcFBhdGguZ2V0KCkuYWRkRWxsaXBzZSh6ZXJvTGVuZ3RoU3VicGF0aFJlY3QobGlu
ZWNhcFBvc2l0aW9uLCB0aGlzLT5zdHJva2VXaWR0aCgpKSk7CiAKLSAgICByZXR1cm4gJnRlbXBQ
YXRoOworICAgIHJldHVybiAmdGVtcFBhdGguZ2V0KCk7CiB9CiAKIEZsb2F0UmVjdCBSZW5kZXJT
VkdQYXRoOjp6ZXJvTGVuZ3RoU3VicGF0aFJlY3QoY29uc3QgRmxvYXRQb2ludCYgbGluZWNhcFBv
c2l0aW9uLCBmbG9hdCBzdHJva2VXaWR0aCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggODIyODU4My4uOGExZmY1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAg
LTE4NywxMiArMTg3LDEyIEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmxheW91dCgpCiAKIFBhdGgq
IFJlbmRlclNWR1NoYXBlOjpub25TY2FsaW5nU3Ryb2tlUGF0aChjb25zdCBQYXRoKiBwYXRoLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZVRyYW5zZm9ybSkgY29uc3QKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUGF0aCwgdGVtcFBhdGgsICgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UGF0aD4gdGVtcFBhdGg7CiAKLSAgICB0ZW1wUGF0aCA9ICpwYXRo
OwotICAgIHRlbXBQYXRoLnRyYW5zZm9ybShzdHJva2VUcmFuc2Zvcm0pOworICAgIHRlbXBQYXRo
LmdldCgpID0gKnBhdGg7CisgICAgdGVtcFBhdGguZ2V0KCkudHJhbnNmb3JtKHN0cm9rZVRyYW5z
Zm9ybSk7CiAKLSAgICByZXR1cm4gJnRlbXBQYXRoOworICAgIHJldHVybiAmdGVtcFBhdGguZ2V0
KCk7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHU2hhcGU6OnNldHVwTm9uU2NhbGluZ1N0cm9rZUNvbnRl
eHQoQWZmaW5lVHJhbnNmb3JtJiBzdHJva2VUcmFuc2Zvcm0sIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXImIHN0YXRlU2F2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4YmMwYTk5Li41MzdmZWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVU
b1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaQogCiBzdGF0aWMg
QWZmaW5lVHJhbnNmb3JtJiBjdXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9uKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQWZmaW5lVHJhbnNmb3JtLCBzX2N1cnJlbnRD
b250ZW50VHJhbnNmb3JtYXRpb24sICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QWZm
aW5lVHJhbnNmb3JtPiBzX2N1cnJlbnRDb250ZW50VHJhbnNmb3JtYXRpb247CiAgICAgcmV0dXJu
IHNfY3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCmluZGV4IGU2OGNlMzguLjJlMWYyYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAgLTQ1
LDQ0ICs0NSw0NCBAQCBTVkdSZXNvdXJjZXM6OlNWR1Jlc291cmNlcygpCiAKIHN0YXRpYyBIYXNo
U2V0PEF0b21pY1N0cmluZz4mIGNsaXBwZXJGaWx0ZXJNYXNrZXJUYWdzKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBzX3RhZ0xp
c3QsICgpKTsKLSAgICBpZiAoc190YWdMaXN0LmlzRW1wdHkoKSkgeworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IHNfdGFnTGlzdDsKKyAgICBpZiAoc190
YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgewogICAgICAgICAvLyAiY29udGFpbmVyIGVsZW1lbnRz
IjogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvaW50cm8uaHRtbCNUZXJtQ29udGFpbmVyRWxl
bWVudAogICAgICAgICAvLyAiZ3JhcGhpY3MgZWxlbWVudHMiIDogaHR0cDovL3d3dy53My5vcmcv
VFIvU1ZHMTEvaW50cm8uaHRtbCNUZXJtR3JhcGhpY3NFbGVtZW50Ci0gICAgICAgIHNfdGFnTGlz
dC5hZGQoU1ZHTmFtZXM6OmFUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRk
KFNWR05hbWVzOjpjaXJjbGVUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRk
KFNWR05hbWVzOjplbGxpcHNlVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFk
ZChTVkdOYW1lczo6Z2x5cGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRk
KFNWR05hbWVzOjpnVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdO
YW1lczo6aW1hZ2VUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05h
bWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1l
czo6bWFya2VyVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1l
czo6bWFza1RhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6
Om1pc3NpbmdfZ2x5cGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNW
R05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdO
YW1lczo6cG9seWdvblRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZH
TmFtZXM6OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChT
VkdOYW1lczo6cmVjdFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZH
TmFtZXM6OnN2Z1RhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFt
ZXM6OnRleHRUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVz
Ojp1c2VUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05h
bWVzOjphVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdO
YW1lczo6Y2lyY2xlVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFk
ZChTVkdOYW1lczo6ZWxsaXBzZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6OmdseXBoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdM
aXN0LmdldCgpLmFkZChTVkdOYW1lczo6Z1RhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFn
TGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmltYWdlVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAg
c190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6bGluZVRhZy5sb2NhbE5hbWUoKSk7CisgICAg
ICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6Om1hcmtlclRhZy5sb2NhbE5hbWUoKSk7
CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6Om1hc2tUYWcubG9jYWxOYW1l
KCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjptaXNzaW5nX2dseXBo
VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6
cGF0aFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFt
ZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRk
KFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6OnJlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xp
c3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpzdmdUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3Rh
Z0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0ZXh0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAg
c190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dXNlVGFnLmxvY2FsTmFtZSgpKTsKIAogICAg
ICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBkZWZpbml0aW9ucyBpcyB0aGUgY2xpcFBhdGggZWxl
bWVudCwgdGhlIFNWRyBzcGVjIHNheXMgdGhvdWdoOgogICAgICAgICAvLyBUaGUgImNsaXBQYXRo
IiBlbGVtZW50IG9yIGFueSBvZiBpdHMgY2hpbGRyZW4gY2FuIHNwZWNpZnkgcHJvcGVydHkgImNs
aXAtcGF0aCIuCiAgICAgICAgIC8vIFNvIHdlIGhhdmUgdG8gYWRkIGNsaXBQYXRoVGFnIGhlcmUs
IG90aGVyd2hpc2UgY2xpcC1wYXRoIG9uIGNsaXBQYXRoIHdpbGwgZmFpbC4KICAgICAgICAgLy8g
KEFscmVhZHkgbWFpbGVkIFNWRyBXRywgd2FpdGluZyBmb3IgYSBzb2x1dGlvbikKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6Y2xpcFBhdGhUYWcubG9jYWxOYW1lKCkpOworICAgICAg
ICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpjbGlwUGF0aFRhZy5sb2NhbE5hbWUoKSk7
CiAKICAgICAgICAgLy8gTm90IGxpc3RlZCBpbiB0aGUgZGVmaW5pdGlvbnMgYXJlIHRoZSB0ZXh0
IGNvbnRlbnQgZWxlbWVudHMsIHRob3VnaCBmaWx0ZXIvY2xpcHBlci9tYXNrZXIgb24gdHNwYW4v
dGV4dC8uLiBpcyBhbGxvd2VkLgogICAgICAgICAvLyAoQWxyZWFkeSBtYWlsZWQgU1ZHIFdHLCB3
YWl0aW5nIGZvciBhIHNvbHV0aW9uKQotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjph
bHRHbHlwaFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6
OnRleHRQYXRoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1l
czo6dHJlZlRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6
OnRzcGFuVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdO
YW1lczo6YWx0R2x5cGhUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCku
YWRkKFNWR05hbWVzOjp0ZXh0UGF0aFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlz
dC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRyZWZUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3Rh
Z0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0c3BhblRhZy5sb2NhbE5hbWUoKSk7CiAKICAgICAg
ICAgLy8gTm90IGxpc3RlZCBpbiB0aGUgZGVmaW5pdGlvbnMgaXMgdGhlIGZvcmVpZ25PYmplY3Qg
ZWxlbWVudCwgYnV0IGNsaXAtcGF0aAogICAgICAgICAvLyBpcyBhIHN1cHBvcnRlZCBhdHRyaWJ1
dGUuCi0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcubG9j
YWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpmb3JlaWdu
T2JqZWN0VGFnLmxvY2FsTmFtZSgpKTsKIAogICAgICAgICAvLyBFbGVtZW50cyB0aGF0IHdlIGln
bm9yZSwgYXMgaXQgZG9lc24ndCBtYWtlIGFueSBzZW5zZS4KICAgICAgICAgLy8gZGVmcywgcGF0
dGVybiwgc3dpdGNoIChGSVhNRTogTWFpbCBTVkcgV0cgYWJvdXQgdGhlc2UpCkBAIC05NCwxMiAr
OTQsMTIgQEAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgY2xpcHBlckZpbHRlck1hc2tl
clRhZ3MoKQogCiBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBtYXJrZXJUYWdzKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+
LCBzX3RhZ0xpc3QsICgpKTsKLSAgICBpZiAoc190YWdMaXN0LmlzRW1wdHkoKSkgewotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNf
dGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4gc190YWdMaXN0OworICAg
IGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNfdGFnTGlzdC5nZXQo
KS5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3Qu
Z2V0KCkuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdM
aXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAg
IHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gc190YWdMaXN0OwpAQCAtMTA3LDIwICsxMDcsMjAgQEAgc3Rh
dGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgbWFya2VyVGFncygpCiAKIHN0YXRpYyBIYXNoU2V0
PEF0b21pY1N0cmluZz4mIGZpbGxBbmRTdHJva2VUYWdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBzX3RhZ0xpc3QsICgpKTsK
LSAgICBpZiAoc190YWdMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNW
R05hbWVzOjphbHRHbHlwaFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQo
U1ZHTmFtZXM6OmNpcmNsZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQo
U1ZHTmFtZXM6OmVsbGlwc2VUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRk
KFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChT
VkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZH
TmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNW
R05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQo
U1ZHTmFtZXM6OnJlY3RUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNW
R05hbWVzOjp0ZXh0VGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdO
YW1lczo6dGV4dFBhdGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNW
R05hbWVzOjp0cmVmVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdO
YW1lczo6dHNwYW5UYWcubG9jYWxOYW1lKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PEF0b21pY1N0cmluZz4+IHNfdGFnTGlzdDsKKyAgICBpZiAoc190YWdMaXN0LmdldCgp
LmlzRW1wdHkoKSkgeworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjphbHRH
bHlwaFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFt
ZXM6OmNpcmNsZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6OmVsbGlwc2VUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0
KCkuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0
LmdldCgpLmFkZChTVkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFn
TGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkpOworICAgICAg
ICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKSk7
CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJlY3RUYWcubG9jYWxOYW1l
KCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0ZXh0VGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dGV4dFBhdGhU
YWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0
cmVmVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1l
czo6dHNwYW5UYWcubG9jYWxOYW1lKCkpOwogICAgIH0KIAogICAgIHJldHVybiBzX3RhZ0xpc3Q7
CkBAIC0xMjgsMTIgKzEyOCwxMiBAQCBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBmaWxs
QW5kU3Ryb2tlVGFncygpCiAKIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGNoYWluYWJs
ZVJlc291cmNlVGFncygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhh
c2hTZXQ8QXRvbWljU3RyaW5nPiwgc190YWdMaXN0LCAoKSk7Ci0gICAgaWYgKHNfdGFnTGlzdC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bGluZWFyR3JhZGll
bnRUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpmaWx0
ZXJUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwYXR0
ZXJuVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cmFk
aWFsR3JhZGllbnRUYWcubG9jYWxOYW1lKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PEF0b21pY1N0cmluZz4+IHNfdGFnTGlzdDsKKyAgICBpZiAoc190YWdMaXN0LmdldCgp
LmlzRW1wdHkoKSkgeworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpsaW5l
YXJHcmFkaWVudFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6OmZpbHRlclRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQo
KS5hZGQoU1ZHTmFtZXM6OnBhdHRlcm5UYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xp
c3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZy5sb2NhbE5hbWUoKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHNfdGFnTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmdsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuY3BwCmluZGV4
IDU4OGYyNzcuLjlhNjk0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmds
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcApAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGls
aXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTEyLDE2ICsxMTMsMTYgQEAgU3RyaW5nIFNWR0FuZ2xlOjp2YWx1
ZUFzU3RyaW5nKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKICAgICBjYXNl
IFNWR19BTkdMRVRZUEVfREVHOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGRlZ1N0cmluZywgKEFTQ0lJTGl0ZXJhbCgiZGVnIikpKTsKLSAgICAgICAg
cmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIGRlZ1N0cmlu
ZzsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZGVnU3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgiZGVnIikpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMpICsgZGVnU3RyaW5nLmdldCgpOwogICAgIH0KICAgICBjYXNlIFNWR19B
TkdMRVRZUEVfUkFEOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIHJhZFN0cmluZywgKEFTQ0lJTGl0ZXJhbCgicmFkIikpKTsKLSAgICAgICAgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIHJhZFN0cmluZzsKKyAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcmFkU3RyaW5nKEFTQ0lJTGl0ZXJh
bCgicmFkIikpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lm
aWVkVW5pdHMpICsgcmFkU3RyaW5nLmdldCgpOwogICAgIH0KICAgICBjYXNlIFNWR19BTkdMRVRZ
UEVfR1JBRDogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBncmFkU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJncmFkIikpKTsKLSAgICAgICAgcmV0dXJuIFN0
cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIGdyYWRTdHJpbmc7CisgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGdyYWRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJncmFkIikpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lm
aWVkVW5pdHMpICsgZ3JhZFN0cmluZy5nZXQoKTsKICAgICB9CiAgICAgY2FzZSBTVkdfQU5HTEVU
WVBFX1VOU1BFQ0lGSUVEOgogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9VTktOT1dOOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwCmluZGV4IGQ0NDkyYWQu
LjBmYjZkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVu
dC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgUmVmPFNWR0FuaW1hdGVDb2xvckVsZW1lbnQ+IFNWR0Fu
aW1hdGVDb2xvckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogCiBzdGF0aWMg
Ym9vbCBhdHRyaWJ1dGVWYWx1ZUlzQ3VycmVudENvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
Y3VycmVudENvbG9yLCAoImN1cnJlbnRDb2xvciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBjdXJyZW50Q29sb3IoImN1cnJlbnRDb2xvciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiB2YWx1ZSA9PSBjdXJyZW50Q29sb3I7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IDQ5NmMy
ZjMuLjc5YzA0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmNwcApAQCAtMTA4LDggKzEwOCw4IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0CiAg
ICAgCiBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Um90YXRlTW9kZSBTVkdBbmltYXRlTW90aW9u
RWxlbWVudDo6cm90YXRlTW9kZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYXV0b1ZhbCwgKCJhdXRvIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGF1dG9SZXZlcnNlLCAoImF1dG8tcmV2ZXJzZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBhdXRvVmFsKCJhdXRvIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21pY1N0cmluZz4gYXV0b1JldmVyc2UoImF1dG8tcmV2ZXJzZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcm90YXRlID0g
Z2V0QXR0cmlidXRlKFNWR05hbWVzOjpyb3RhdGVBdHRyKTsKICAgICBpZiAocm90YXRlID09IGF1
dG9WYWwpCiAgICAgICAgIHJldHVybiBSb3RhdGVBdXRvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGlvbkVsZW1lbnQuY3BwCmluZGV4IDM0NjI4YWQuLmViMTI0M2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTI4NiwxMCArMjg2LDEwIEBA
IHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0aW9uTW9kZSgpCiAKIHZvaWQg
U1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0Q2FsY01vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBjYWxj
TW9kZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCBkaXNjcmV0ZSwgKCJkaXNjcmV0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBsaW5lYXIsICgibGluZWFyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIHBhY2VkLCAoInBhY2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIHNwbGluZSwgKCJzcGxpbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZGlz
Y3JldGUoImRpc2NyZXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbGluZWFyKCJsaW5l
YXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBwYWNlZCgicGFjZWQiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiBzcGxpbmUoInNwbGluZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIGlmIChjYWxjTW9kZSA9PSBkaXNjcmV0ZSkKICAgICAgICAgc2V0
Q2FsY01vZGUoQ2FsY01vZGVEaXNjcmV0ZSk7CiAgICAgZWxzZSBpZiAoY2FsY01vZGUgPT0gbGlu
ZWFyKQpAQCAtMzA0LDggKzMwNCw4IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0Q2Fs
Y01vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBjYWxjTW9kZSkKIAogdm9pZCBTVkdBbmltYXRpb25F
bGVtZW50OjpzZXRBdHRyaWJ1dGVUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVHlw
ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBjc3MsICgiQ1NTIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHht
bCwgKCJYTUwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY3NzKCJDU1MiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiB4bWwoIlhNTCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIGlmIChhdHRyaWJ1dGVUeXBlID09IGNzcykKICAgICAgICAgbV9hdHRy
aWJ1dGVUeXBlID0gQXR0cmlidXRlVHlwZUNTUzsKICAgICBlbHNlIGlmIChhdHRyaWJ1dGVUeXBl
ID09IHhtbCkKQEAgLTMzMiwxNCArMzMyLDE0IEBAIFN0cmluZyBTVkdBbmltYXRpb25FbGVtZW50
Ojpmcm9tVmFsdWUoKSBjb25zdAogCiBib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRp
dmUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIHN1bSwgKCJzdW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3Vt
KCJzdW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShTVkdOYW1lczo6YWRkaXRpdmVB
dHRyKTsKICAgICByZXR1cm4gdmFsdWUgPT0gc3VtIHx8IGFuaW1hdGlvbk1vZGUoKSA9PSBCeUFu
aW1hdGlvbjsKIH0KIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc0FjY3VtdWxhdGVkKCkg
Y29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCBzdW0sICgic3VtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHN1bSgic3Vt
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSA9IGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmFjY3VtdWxhdGVBdHRy
KTsKICAgICByZXR1cm4gdmFsdWUgPT0gc3VtICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBUb0FuaW1h
dGlvbjsKIH0KQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFk
anVzdEZvckluaGVyaXRhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0CiAKIHN0
YXRpYyBib29sIGluaGVyaXRzRnJvbVByb3BlcnR5KFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGluaGVyaXQsICgi
aW5oZXJpdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBpbmhlcml0KCJpbmhlcml0Iiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgCiAgICAgaWYgKHZhbHVl
LmlzRW1wdHkoKSB8fCB2YWx1ZSAhPSBpbmhlcml0KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApp
bmRleCAxZmFlYTUzLi5kZGY5MjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTc1LDI1ICs3NSwyNSBAQCBSZWY8U1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJu
ZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tl
cm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZp
ZXIsICgiU1ZHS2VybmVsVW5pdExlbmd0aFkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVu
dGlmaWVyKCJTVkdLZXJuZWxVbml0TGVuZ3RoWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om9yZGVyWElkZW50aWZpZXIoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRp
ZmllciwgKCJTVkdPcmRlclgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJT
VkdPcmRlclgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gc19pZGVudGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpvcmRlcllJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHT3JkZXJZIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHT3JkZXJZIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcAppbmRleCBiYTJhM2Q0Li4xMmZhMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtNjMsMTMgKzYzLDEzIEBAIFJl
ZjxTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwg
KCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZp
ZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmll
cigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
c19pZGVudGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0aFkiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggYWVlMDhk
ZC4uZjkzZGFjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFk
b3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxl
bWVudC5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBSZWY8U1ZHRkVEcm9wU2hhZG93RWxlbWVudD4g
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWElk
ZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdTdGREZXZpYXRpb25YIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHU3RkRGV2aWF0aW9uWCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWUlkZW50
aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIHNfaWRlbnRpZmllciwgKCJTVkdTdGREZXZpYXRpb25ZIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IHNfaWRlbnRpZmllcigiU1ZHU3RkRGV2aWF0aW9uWSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggMjJjMTc4
Yi4uN2IyMWRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBSZWY8U1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3RkRGV2aWF0
aW9uWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdTdGREZXZpYXRpb25YIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHU3RkRGV2aWF0aW9uWCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRp
b25ZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1N0ZERldmlhdGlvblkiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGREZXZpYXRpb25ZIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IDU5
ZjA3ZDIuLjMzNzBlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5jcHAKQEAgLTU2LDEzICs1NiwxMyBAQCBSZWY8U1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cmFkaXVzWElkZW50
aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIHNfaWRlbnRpZmllciwgKCJTVkdSYWRpdXNYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNf
aWRlbnRpZmllcigiU1ZHUmFkaXVzWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cmFkaXVzWUlkZW50aWZpZXIoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJT
VkdSYWRpdXNZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHUmFkaXVz
WSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lk
ZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBmZWY3ZWVkLi4xOWY1ZDM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC02
NywxMyArNjcsMTMgQEAgUmVmPFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ+IFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWEKIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50
aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjprZXJuZWxV
bml0TGVuZ3RoWUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhZ
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRl
bnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQuY3BwCmluZGV4IDg2ZGNhZjEuLmI4MDhiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKQEAgLTYxLDEzICs2MSwxMyBAQCBSZWY8U1ZHRkVU
dXJidWxlbmNlRWxlbWVudD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHQmFzZUZyZXF1ZW5j
eVgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdCYXNlRnJlcXVlbmN5
WCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lk
ZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6YmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHQmFzZUZyZXF1ZW5j
eVkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdCYXNlRnJlcXVlbmN5
WSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lk
ZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAppbmRl
eCBmMzJjMzJmLi4wYTc1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
Y3BwCkBAIC04MiwxMyArODIsMTMgQEAgUmVmPFNWR0ZpbHRlckVsZW1lbnQ+IFNWR0ZpbHRlckVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBTVkdGaWx0ZXJFbGVtZW50OjpmaWx0ZXJSZXNYSWRlbnRpZmllcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVu
dGlmaWVyLCAoIlNWR0ZpbHRlclJlc1giLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlm
aWVyKCJTVkdGaWx0ZXJSZXNYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdG
aWx0ZXJFbGVtZW50OjpmaWx0ZXJSZXNZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0ZpbHRl
clJlc1kiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdGaWx0ZXJSZXNZ
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRl
bnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFw
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaAppbmRleCBiNzQ3YzZkLi5jZTBi
NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBTVkdHbHlwaCYgc3ZnR2x5cGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29u
c3QKICAgICB7CiAgICAgICAgIGlmICghZ2x5cGggfHwgZ2x5cGggPiBtX2dseXBoVGFibGUuc2l6
ZSgpKSB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU1ZHR2x5
cGgsIGRlZmF1bHRHbHlwaCwgKCkpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFNWR0dseXBoPiBkZWZhdWx0R2x5cGg7CiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdEdseXBo
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2dseXBoVGFibGVbZ2x5cGggLSAxXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAKaW5kZXggNDhiZTBkYy4uYjY1MTgwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBTVkdMYW5n
U3BhY2U6OnNldFhtbGxhbmcoY29uc3QgQXRvbWljU3RyaW5nJiB4bWxMYW5nKQogY29uc3QgQXRv
bWljU3RyaW5nJiBTVkdMYW5nU3BhY2U6OnhtbHNwYWNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
c3BhY2UpIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgZGVmYXVsdFN0cmluZywgKCJkZWZhdWx0IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiBkZWZhdWx0U3RyaW5nKCJkZWZhdWx0IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiBkZWZhdWx0U3RyaW5nOwogICAgIH0K
IApAQCAtNjIsNyArNjIsNyBAQCBib29sIFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAKIHZvaWQgU1ZHTGFuZ1NwYWNlOjph
ZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4mIHN1cHBvcnRlZEF0
dHJpYnV0ZXMpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgeG1sUHJlZml4LCAoInhtbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB4bWxQcmVmaXgo
InhtbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgUXVhbGlm
aWVkTmFtZSBsYW5nV2l0aFByZWZpeCA9IFhNTE5hbWVzOjpsYW5nQXR0cjsKICAgICBsYW5nV2l0
aFByZWZpeC5zZXRQcmVmaXgoeG1sUHJlZml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJF
bGVtZW50LmNwcAppbmRleCAwNjY4N2YyLi5kZjk2ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01hcmtlckVsZW1lbnQuY3BwCkBAIC05MCwxMyArOTAsMTMgQEAgUmVmPFNWR01hcmtlckVsZW1l
bnQ+IFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2MKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBl
SWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR09yaWVudFR5cGUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gc19pZGVudGlmaWVyKCJTVkdPcmllbnRUeXBlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRBbmdsZUlkZW50aWZpZXIoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRp
ZmllciwgKCJTVkdPcmllbnRBbmdsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZp
ZXIoIlNWR09yaWVudEFuZ2xlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQg
U1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVPcmllbnRUeXBlKFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KQogICAgIGlmIChvd25lclR5cGUubV9vcmllbnRUeXBlLnZhbHVlICE9IFNWR01h
cmtlck9yaWVudEF1dG8pCiAgICAgICAgIHJldHVybjsKIAotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGF1dG9TdHJpbmcsICgiYXV0byIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBhdXRvU3RyaW5nKCJhdXRvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgb3duZXJUeXBlLm1fb3JpZW50VHlwZS5zeW5jaHJvbml6ZSgmb3du
ZXJUeXBlLCBvcmllbnRUeXBlUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIGF1dG9TdHJp
bmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCmluZGV4IDhhYzI4
ZGEuLjA0NWFlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCkBAIC02
Miw5ICs2Miw5IEBAIHZvaWQgU1ZHU3R5bGVFbGVtZW50OjpzZXREaXNhYmxlZChib29sIHNldERp
c2FibGVkKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6dHlwZSgpIGNv
bnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgZGVmYXVsdFZhbHVlLCAoInRleHQvY3NzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IGRlZmF1bHRWYWx1ZSgidGV4dC9jc3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBnZXRBdHRyaWJ1dGUoU1ZHTmFt
ZXM6OnR5cGVBdHRyKTsKLSAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZSA6IG47
CisgICAgcmV0dXJuIG4uaXNOdWxsKCkgPyBkZWZhdWx0VmFsdWUuZ2V0KCkgOiBuOwogfQogCiB2
b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEV4
Y2VwdGlvbkNvZGUmKQpAQCAtNzQsOSArNzQsOSBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0
VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmKQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6bWVkaWEoKSBjb25zdAogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRlZmF1bHRWYWx1
ZSwgKCJhbGwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZGVmYXVsdFZhbHVlKCJhbGwi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIG4gPSBmYXN0R2V0QXR0cmlidXRlKFNWR05hbWVzOjptZWRpYUF0dHIpOwotICAgIHJl
dHVybiBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVlIDogbjsKKyAgICByZXR1cm4gbi5pc051bGwo
KSA/IGRlZmF1bHRWYWx1ZS5nZXQoKSA6IG47CiB9CiAKIHZvaWQgU1ZHU3R5bGVFbGVtZW50Ojpz
ZXRNZWRpYShjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhLCBFeGNlcHRpb25Db2RlJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKaW5kZXggZThhM2YxMi4uMjExYWZjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJGbG9h
dFNpemUuaCIKICNpbmNsdWRlICJTVkdBbmdsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0x
MzQsMjcgKzEzNSwyNyBAQCBjb25zdCBTdHJpbmcmIFNWR1RyYW5zZm9ybTo6dHJhbnNmb3JtVHlw
ZVByZWZpeEZvclBhcnNpbmcoU1ZHVHJhbnNmb3JtVHlwZSB0eXBlKQogICAgIGNhc2UgU1ZHX1RS
QU5TRk9STV9VTktOT1dOOgogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBjYXNl
IFNWR19UUkFOU0ZPUk1fTUFUUklYOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIG1hdHJpeFN0cmluZywgKEFTQ0lJTGl0ZXJhbCgibWF0cml4KCIpKSk7
CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IG1hdHJpeFN0cmluZyhBU0NJ
SUxpdGVyYWwoIm1hdHJpeCgiKSk7CiAgICAgICAgIHJldHVybiBtYXRyaXhTdHJpbmc7CiAgICAg
fQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9UUkFOU0xBVEU6IHsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdHJhbnNsYXRlU3RyaW5nLCAoQVNDSUlMaXRl
cmFsKCJ0cmFuc2xhdGUoIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gdHJhbnNsYXRlU3RyaW5nKEFTQ0lJTGl0ZXJhbCgidHJhbnNsYXRlKCIpKTsKICAgICAgICAg
cmV0dXJuIHRyYW5zbGF0ZVN0cmluZzsKICAgICB9CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1ND
QUxFOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNj
YWxlU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzY2FsZSgiKSkpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY2FsZVN0cmluZyhBU0NJSUxpdGVyYWwoInNjYWxlKCIpKTsK
ICAgICAgICAgcmV0dXJuIHNjYWxlU3RyaW5nOwogICAgIH0KICAgICBjYXNlIFNWR19UUkFOU0ZP
Uk1fUk9UQVRFOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHJvdGF0ZVN0cmluZywgKEFTQ0lJTGl0ZXJhbCgicm90YXRlKCIpKSk7CisgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHJvdGF0ZVN0cmluZyhBU0NJSUxpdGVyYWwoInJv
dGF0ZSgiKSk7CiAgICAgICAgIHJldHVybiByb3RhdGVTdHJpbmc7CiAgICAgfSAgICAKICAgICBj
YXNlIFNWR19UUkFOU0ZPUk1fU0tFV1g6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgc2tld1hTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNrZXdYKCIpKSk7
CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNrZXdYU3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgic2tld1goIikpOwogICAgICAgICByZXR1cm4gc2tld1hTdHJpbmc7CiAgICAgfQog
ICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBza2V3WVN0cmluZywgKEFTQ0lJTGl0ZXJhbCgic2tld1ko
IikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2tld1lTdHJpbmco
QVNDSUlMaXRlcmFsKCJza2V3WSgiKSk7CiAgICAgICAgIHJldHVybiBza2V3WVN0cmluZzsKICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKaW5kZXggYWM4NmVlMy4uMDA5
OGNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCkBAIC04NCwxOSArODQsMTkgQEAg
U1ZHVmlld1NwZWM6OlNWR1ZpZXdTcGVjKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIFNWR1ZpZXdTcGVjOjp2aWV3Qm94SWRlbnRpZmllcigpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlm
aWVyLCAoIlNWR1ZpZXdTcGVjVmlld0JveEF0dHJpYnV0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBzX2lkZW50aWZpZXIoIlNWR1ZpZXdTcGVjVmlld0JveEF0dHJpYnV0ZSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHVmlld1NwZWM6OnByZXNlcnZlQXNwZWN0UmF0aW9JZGVu
dGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHVmlld1NwZWNQcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cmli
dXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHVmlld1NwZWNQcmVz
ZXJ2ZUFzcGVjdFJhdGlvQXR0cmlidXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBTVkdWaWV3U3BlYzo6dHJhbnNmb3JtSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1ZpZXdT
cGVjVHJhbnNmb3JtQXR0cmlidXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmll
cigiU1ZHVmlld1NwZWNUcmFuc2Zvcm1BdHRyaWJ1dGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDM1NjhiZTQu
LjQ0MTBiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuY3BwCkBAIC0zMjksNyArMzI5LDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBh
cnNlQ2xvY2tWYWx1ZShjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgCiAgICAgU3RyaW5nIHBhcnNl
ID0gZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGluZGVmaW5pdGVWYWx1ZSwgKCJpbmRlZmluaXRl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGluZGVmaW5pdGVWYWx1ZSgiaW5kZWZpbml0
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChwYXJzZSA9
PSBpbmRlZmluaXRlVmFsdWUpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6aW5kZWZpbml0ZSgp
OwogCkBAIC00NTIsMTkgKzQ1MiwxOSBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpwYXJzZUJlZ2lu
T3JFbmQoY29uc3QgU3RyaW5nJiBwYXJzZVN0cmluZywgQmVnaW5PckVuZCBiZWdpbgogCiBib29s
IFNWR1NNSUxFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNl
dDxRdWFsaWZpZWROYW1lPiwgc3VwcG9ydGVkQXR0cmlidXRlcywgKCkpOwotICAgIGlmIChzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmlzRW1wdHkoKSkgewotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVz
LmFkZChTVkdOYW1lczo6YmVnaW5BdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5h
ZGQoU1ZHTmFtZXM6OmVuZEF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChT
VkdOYW1lczo6ZHVyQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05h
bWVzOjpyZXBlYXREdXJBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZH
TmFtZXM6OnJlcGVhdENvdW50QXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRk
KFNWR05hbWVzOjptaW5BdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZH
TmFtZXM6Om1heEF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1l
czo6YXR0cmlidXRlTmFtZUF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChY
TGlua05hbWVzOjpocmVmQXR0cik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8
UXVhbGlmaWVkTmFtZT4+IHN1cHBvcnRlZEF0dHJpYnV0ZXM7CisgICAgaWYgKHN1cHBvcnRlZEF0
dHJpYnV0ZXMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMu
Z2V0KCkuYWRkKFNWR05hbWVzOjpiZWdpbkF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1
dGVzLmdldCgpLmFkZChTVkdOYW1lczo6ZW5kQXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJp
YnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpkdXJBdHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0
cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJlcGVhdER1ckF0dHIpOworICAgICAgICBzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6cmVwZWF0Q291bnRBdHRyKTsKKyAg
ICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6Om1pbkF0dHIpOwor
ICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6bWF4QXR0cik7
CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjphdHRyaWJ1
dGVOYW1lQXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFhMaW5r
TmFtZXM6OmhyZWZBdHRyKTsKICAgICB9Ci0gICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMu
Y29udGFpbnM8U1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKKyAgICByZXR1
cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJh
bnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCiB2b2lkIFNWR1NNSUxFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQpAQCAtNjQzLDggKzY0Myw4IEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OmlzRnJvemVuKCkgY29u
c3QKICAgICAKIFNWR1NNSUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NNSUxFbGVtZW50OjpyZXN0YXJ0
KCkgY29uc3QKIHsgICAgCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgbmV2ZXIsICgibmV2ZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgd2hlbk5vdEFjdGl2ZSwgKCJ3aGVuTm90QWN0aXZlIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IG5ldmVyKCJuZXZlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IHdoZW5Ob3RBY3RpdmUoIndoZW5Ob3RBY3RpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0dHJp
YnV0ZShTVkdOYW1lczo6cmVzdGFydEF0dHIpOwogICAgIGlmICh2YWx1ZSA9PSBuZXZlcikKICAg
ICAgICAgcmV0dXJuIFJlc3RhcnROZXZlcjsKQEAgLTY1NSw3ICs2NTUsNyBAQCBTVkdTTUlMRWxl
bWVudDo6UmVzdGFydCBTVkdTTUlMRWxlbWVudDo6cmVzdGFydCgpIGNvbnN0CiAgICAgCiBTVkdT
TUlMRWxlbWVudDo6RmlsbE1vZGUgU1ZHU01JTEVsZW1lbnQ6OmZpbGwoKSBjb25zdAogeyAgIAot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZy
ZWV6ZSwgKCJmcmVlemUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZnJlZXplKCJmcmVl
emUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShTVkdOYW1lczo6ZmlsbEF0dHIpOwog
ICAgIHJldHVybiB2YWx1ZSA9PSBmcmVlemUgPyBGaWxsRnJlZXplIDogRmlsbFJlbW92ZTsKIH0K
QEAgLTY4OCw3ICs2ODgsNyBAQCBTTUlMVGltZSBTVkdTTUlMRWxlbWVudDo6cmVwZWF0Q291bnQo
KSBjb25zdAogICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1l
Ojp1bnJlc29sdmVkKCk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBpbmRlZmluaXRlVmFsdWUsICgiaW5kZWZpbml0ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBpbmRlZmluaXRlVmFsdWUoImluZGVmaW5pdGUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAodmFsdWUgPT0gaW5kZWZpbml0
ZVZhbHVlKQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5pdGUoKTsKICAgICBib29s
IG9rOwpAQCAtMTE0MywxNiArMTE0MywxNiBAQCBib29sIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVz
cyhTTUlMVGltZSBlbGFwc2VkLCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCwgYgogdm9p
ZCBTVkdTTUlMRWxlbWVudDo6bm90aWZ5RGVwZW5kZW50c0ludGVydmFsQ2hhbmdlZChOZXdPckV4
aXN0aW5nSW50ZXJ2YWwgbmV3T3JFeGlzdGluZykKIHsKICAgICBBU1NFUlQobV9pbnRlcnZhbEJl
Z2luLmlzRmluaXRlKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNo
U2V0PFNWR1NNSUxFbGVtZW50Kj4sIGxvb3BCcmVha2VyLCAoKSk7Ci0gICAgaWYgKGxvb3BCcmVh
a2VyLmNvbnRhaW5zKHRoaXMpKQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNW
R1NNSUxFbGVtZW50Kj4+IGxvb3BCcmVha2VyOworICAgIGlmIChsb29wQnJlYWtlci5nZXQoKS5j
b250YWlucyh0aGlzKSkKICAgICAgICAgcmV0dXJuOwotICAgIGxvb3BCcmVha2VyLmFkZCh0aGlz
KTsKKyAgICBsb29wQnJlYWtlci5nZXQoKS5hZGQodGhpcyk7CiAgICAgCiAgICAgZm9yIChhdXRv
JiBkZXBlbmRlbnQgOiBtX3RpbWVEZXBlbmRlbnRzKSB7CiAgICAgICAgIGRlcGVuZGVudC0+Y3Jl
YXRlSW5zdGFuY2VUaW1lc0Zyb21TeW5jYmFzZSh0aGlzLCBuZXdPckV4aXN0aW5nKTsKICAgICB9
CiAKLSAgICBsb29wQnJlYWtlci5yZW1vdmUodGhpcyk7CisgICAgbG9vcEJyZWFrZXIuZ2V0KCku
cmVtb3ZlKHRoaXMpOwogfQogICAgIAogdm9pZCBTVkdTTUlMRWxlbWVudDo6Y3JlYXRlSW5zdGFu
Y2VUaW1lc0Zyb21TeW5jYmFzZShTVkdTTUlMRWxlbWVudCogc3luY2Jhc2UsIE5ld09yRXhpc3Rp
bmdJbnRlcnZhbCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268567</attachid>
            <date>2016-01-08 11:57:37 -0800</date>
            <delta_ts>2016-01-08 12:34:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152902-3.diff</filename>
            <type>text/plain</type>
            <size>262467</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KaW5k
ZXggZWY1NDYwMi4uNzIzNjg3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSVdyYXBwZXJPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSVdyYXBwZXJPYmplY3QubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NhbGxi
YWNrT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCkBAIC00MSw4ICs0Miw4IEBAIHB1YmxpYzoKIAogc3Rh
dGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmplY3RIYW5k
bGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEpTQVBJV3Jh
cHBlck9iamVjdEhhbmRsZU93bmVyLCBqc1dyYXBwZXJPYmplY3RIYW5kbGVPd25lciwgKCkpOwot
ICAgIHJldHVybiAmanNXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyPiBqc1dyYXBwZXJPYmplY3RI
YW5kbGVPd25lcjsKKyAgICByZXR1cm4gJmpzV3JhcHBlck9iamVjdEhhbmRsZU93bmVyLmdldCgp
OwogfQogCiB2b2lkIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRleCBhNzJkMTliLi4xYzFmN2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgIldlYWtIYW5kbGVPd25lci5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRy
YXMuaCIKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9OU01hcFRhYmxlU1BJLmg+CiAKIGNsYXNzIEpT
TWFuYWdlZFZhbHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpA
QCAtNDcsOCArNDgsOCBAQCBwdWJsaWM6CiAKIHN0YXRpYyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyKiBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIsIGpzTWFuYWdlZFZhbHVlSGFu
ZGxlT3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI+IGpzTWFu
YWdlZFZhbHVlSGFuZGxlT3duZXI7CisgICAgcmV0dXJuICZqc01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyLmdldCgpOwogfQogCiBjbGFzcyBXZWFrVmFsdWVSZWYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggYTFlMDlhOC4uYmQ5ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTYtMDEtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTAorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyOTAyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3RseSBt
ZWNoYW5pY2FsIGNvbnZlcnNpb24gdG8gTmV2ZXJEZXN0cm95ZWQgdGhyb3VnaG91dC4KKworICAg
ICAgICAqIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QubW06CisgICAgICAgIChqc0FQSVdyYXBwZXJP
YmplY3RIYW5kbGVPd25lcik6CisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLm1tOgorICAg
ICAgICAobWFuYWdlZFZhbHVlSGFuZGxlT3duZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om9iamVj
dEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbik6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yOjphbGxv
Y2F0b3JzKToKKwogMjAxNi0wMS0wNiAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIERhdGUucHJvdG90eXBlIHNob3VsZCBiZSBhIHBs
YWluIG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlYzc3YTc0
Li44M2Q3ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUyLDggKzUzLDggQEAgY29uc3QgY2hhciogSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXAgPSAiYmFja3RyYWNlIjsKIC8vIGNy
ZWF0ZSBvYmplY3RzIGluIHRoZSBzYW1lIGdyb3VwLgogc3RhdGljIFN0cmluZyBvYmplY3RHcm91
cEZvckJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW9u
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIG9iamVjdEdyb3VwLCAoImJyZWFrcG9pbnQtYWN0aW9uLSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cCwg
U3RyaW5nOjpudW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBvYmplY3RHcm91cChBU0NJSUxpdGVyYWwoImJyZWFrcG9pbnQtYWN0aW9u
LSIpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cC5nZXQoKSwgU3RyaW5nOjpu
dW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKIH0KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBkMjkx
MWEzLi43YWJhZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAKQEAgLTEzNCw4ICsxMzQsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxQYWdlUmVzZXJ2YXRpb24sIDE2PiByZXNlcnZhdGlvbnM7CiAgICAgc3RhdGljIEhhc2hTZXQ8
RGVtYW5kRXhlY3V0YWJsZUFsbG9jYXRvcio+JiBhbGxvY2F0b3JzKCkKICAgICB7Ci0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PERlbWFuZEV4ZWN1dGFibGVB
bGxvY2F0b3IqPiwgc0FsbG9jYXRvcnMsICgpKTsKLSAgICAgICAgcmV0dXJuIHNBbGxvY2F0b3Jz
OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxEZW1hbmRFeGVjdXRhYmxl
QWxsb2NhdG9yKj4+IHNldDsKKyAgICAgICAgcmV0dXJuIHNldDsKICAgICB9CiAKICAgICBzdGF0
aWMgU3RhdGljTG9jayYgYWxsb2NhdG9yc011dGV4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMjY4MjQyZi4uNzM0MzQzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMS0wOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
NTI5MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW9zdGx5IG1lY2hhbmljYWwgY29udmVyc2lvbiB0byBOZXZlckRlc3Ryb3llZCB0aHJvdWdob3V0
LgorCisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpj
dXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAo
V1RGOjp0aHJlYWRNYXBNdXRleCk6CisgICAgICAgIChXVEY6OnRocmVhZE1hcCk6CisKIDIwMTYt
MDEtMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEFsbG93IHRvIHNhdmUgYW5kIHJlc3RvcmUgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApp
bmRleCBlMzUyOTBkLi43MDFjMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29w
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KIApAQCAtNTYsOCArNTcsOCBAQCB2b2lkIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpCiAKIFJ1bkxvb3AmIFJ1bkxvb3A6OmN1cnJlbnQo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlRocmVhZFNwZWNp
ZmljPFJ1bkxvb3A6OkhvbGRlcj4sIHJ1bkxvb3BIb2xkZXIsICgpKTsKLSAgICByZXR1cm4gcnVu
TG9vcEhvbGRlci0+cnVuTG9vcCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaHJlYWRT
cGVjaWZpYzxIb2xkZXI+PiBydW5Mb29wSG9sZGVyOworICAgIHJldHVybiBydW5Mb29wSG9sZGVy
LmdldCgpLT5ydW5Mb29wKCk7CiB9CiAKIFJ1bkxvb3AmIFJ1bkxvb3A6Om1haW4oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IGE5N2NmMzIuLjcwNWYzNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJU
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3BlY2lmaWMu
aCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SYXdQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVh
ZERhdGEuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtOTksNyArMTAwLDcgQEAgdm9pZCB0aHJl
YWRXYXNKb2luZWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIHN0YXRpYyBNdXRleCYgdGhyZWFkTWFw
TXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0
ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0ZXg+IG11dGV4OwogICAgIHJl
dHVybiBtdXRleDsKIH0KIApAQCAtMTI1LDcgKzEyNiw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpCiAKIHN0YXRpYyBUaHJlYWRNYXAmIHRocmVhZE1hcCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRocmVhZE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFRocmVhZE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkYzdlMmNmLi45MGY5NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTI0IEBACisy
MDE2LTAxLTA4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCBvZiBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0bHkgbWVjaGFuaWNhbCBjb252
ZXJzaW9uIHRvIE5ldmVyRGVzdHJveWVkIHRocm91Z2hvdXQuCisKKyAgICAgICAgKiBNb2R1bGVz
L2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmRpcmVjdGlvbk5leHRVbmlxdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJl
Y3Rpb25QcmV2KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVu
aXF1ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5UmVxdWVzdDo6cmVhZHlTdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om9wZW5L
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRlZEtleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKToKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChX
ZWJDb3JlOjpxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNNaW1lVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNGaWxlRXh0
ZW5zaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUpOgor
ICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKToKKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFJlc29sdXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZSk6
CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldCk6CisgICAgICAgICog
ZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjdW11
bGF0b3JNYXApOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc1N1cHBvcnRlZFNWRzEwRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c1N1cHBvcnRlZFNWRzExRmVhdHVyZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWFkeVN0YXRlKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0
KToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayk6CisgICAgICAgICogZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ1NT
Q29udGVudFR5cGUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OnN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNv
cmQuY3BwOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBzZXVkb0VsZW1lbnRUYWdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1l
bnQ6OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVk
TmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdWFsaWZpZWROYW1lQ2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6bnVsbFFOYW1lKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0xlZ2FjeVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dHlsZVNwYW5DbGFzc1N0cmluZyk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFt
ZXNwYWNlRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0ludGVyY2hhbmdlTmV3bGluZU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5nZUNvbnZlcnRlZFNwYWNlU3Bhbik6CisgICAgICAg
ICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub25CcmVha2lu
Z1NwYWNlU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c3R5bGVOb2RlQ2xvc2VUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwSW50ZXJuYWwpOgorICAgICAgICAqIGZpbGVhcGkv
QmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KToK
KyAgICAgICAgKiBodG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAg
ICAgKiBodG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVU
aW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVM
b2NhbElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRU
eXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRW1haWxJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEVtYWlsQWRkcmVzcyk6CisgICAgICAgICogaHRt
bC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtS2V5R2VuZXJhdG9y
Ojpmb3JtS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1TdGF0ZVNpZ25hdHVyZSk6CisgICAg
ICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyb290
RWRpdGFibGVFbGVtZW50TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxv
YWRpbmdEaXNhYmxlcjo6ZGlzYWJsZWRTdWJ0cmVlUm9vdHMpOgorICAgICAgICAqIGh0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6
OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bGlua0xvYWRFdmVudFNlbmRlcik6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50VG9FbGVtZW50
U2V0TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzUmVjb2duaXplZFRhZ05hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpm
b3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGl0bGVUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OnN1YnRpdGxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkpOgorICAgICAgICAqIGh0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmZv
cm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpcmVjdGlvblN0cmluZyk6CisgICAg
ICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlu
cHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlTmFtZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmJ1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6Y2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlTmFtZXM6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVz
OjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpkYXRldGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OmZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Omhp
ZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6aW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Om1vbnRoKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZU5hbWVzOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6
OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpyYWRpbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6cmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5h
bWVzOjpzZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OndlZWspOgorICAgICAgICAqIGh0
bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHBsYXliYWNrU3RhdGVXYWl0aW5nKToK
KyAgICAgICAgKHBsYXliYWNrU3RhdGVQbGF5aW5nKToKKyAgICAgICAgKHBsYXliYWNrU3RhdGVF
bmRlZCk6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb250aElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL051
bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNy
ZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAg
KiBodG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFjY2Vw
dGFibGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JT
dGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3RlcE1pc21hdGNoKToKKyAgICAg
ICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJbWFnZURhdGEpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNT
QXVkaXRvcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRD
YXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50U2hhZG93UHNldWRv
SWQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRv
d0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6Ok1ldGVy
SW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1ldGVyVmFsdWVFbGVtZW50Ojp2YWx1
ZVBzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpt
ZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpjaGFwdGVyc0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjptZXRhZGF0YUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Ojpmb3JjZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6ZGlzYWJsZWRL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6aGlkZGVuS2V5d29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
OjpjdWVTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhcnRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Om1pZGRs
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpyaWdodEtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6dmVydGljYWxHcm93aW5nTGVmdEtleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6dmVydGljYWxHcm93aW5nUmlnaHRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1
ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6Om1h
cmtGdXR1cmVBbmRQYXN0Tm9kZXMpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUUmVnaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNv
cmU6OlZUVFJlZ2lvbjo6c2V0U2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6
cGFyc2VTZXR0aW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjp0ZXh0VHJh
Y2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcyk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRl
b1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6bWFpbktleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2lnbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6c3VidGl0bGVzS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpj
b21tZW50YXJ5S2V5d29yZCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVUeXBlVG9UYWdOYW1lKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNvbGxlY3RNZXRhZGF0YUhl
YWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVQc2V1ZG9DbGFzc01hc2spOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgor
ICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJl
dmVudGVkTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmluaXRpYXRv
ck5hbWUpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKToKKyAgICAg
ICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKToK
KyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tn
cm91bmRDU1MpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MpOgorICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2
YVNjcmlwdFVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJ
bmxpbmVFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6d2luZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyk6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpkcmFnU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9jdXNEaXJlY3Rpb25Gb3JL
ZXkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmFzZTo6cGxhdGZvcm0pOgorICAgICAgICAqIHBhZ2Uv
UGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlVmlzaWJpbGl0
eVN0YXRlU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om9yaWdpbkFjY2Vzc01hcCk6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjpwYXJzZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93Rm9yQmxlbmRpbmcpOgorICAgICAgICAqIHBh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50ZXJDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZEN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptb3ZlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnZlcnRpY2FsVGV4dEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpjZWxsQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmFs
aWFzQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Onpvb21JbkN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjp6b29tT3V0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6bm9uZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpwcm9ncmVz
c0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub0Ryb3BDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6bm90QWxsb3dlZEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjppQmVhbUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjp3YWl0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmhlbHBD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpub3J0aFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aEVhc3RS
ZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9ydGhXZXN0UmVzaXplQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNvdXRoRWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpzb3V0aFdlc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6d2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpub3J0aFNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVh
c3RXZXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoRWFzdFNvdXRoV2Vz
dFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aFdlc3RTb3V0aEVhc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29sdW1uUmVzaXplQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJvd1Jlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptaWRkbGVQ
YW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVhc3RQYW5uaW5nQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6Om5vcnRoUGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpu
b3J0aEVhc3RQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoV2VzdFBhbm5p
bmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6c291dGhQYW5uaW5nQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNvdXRoRWFzdFBhbm5pbmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
c291dGhXZXN0UGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjp3ZXN0UGFubmluZ0N1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpncmFiQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OmdyYWJiaW5nQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZWRT
dHJpbmdGb3JMb29rdXBNZW51SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZWRpYU1JTUVUeXBlTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxVUkxTY2hlbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2VjdXJlU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMpOgorICAgICAgICAoV2ViQ29yZTo6ZW1wdHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6c2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0
ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNPUlNFbmFibGVkU2NoZW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpibGFua1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxOYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25z
ZXNGb3JTdWJqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdWRpb0Rlc3RpbmF0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXBhaW50UmVjdE1hcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9y
U3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFBsYWluKToKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNo
QnVmZmVyOjpzaW5nbGV0b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpwbGF5ZXJUb1ByaXZhdGVNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxw
aGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjplZmZlY3RO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjptaW1lQ29tbW9uVHlwZXNDYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjptaW1lTW9kZXJuVHlwZXNDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0N1cnNvcklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJzb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAgICAgICgrW1dlYkNvcmVNb3Rp
b25NYW5hZ2VyIHNoYXJlZE1hbmFnZXJdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYlRo
cmVhZEdldE9ic2VydmVkQ29udGVudE1vZGlmaWVycyk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRGcm9tTlNGb250KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybVRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW06CisgICAg
ICAgIChXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpwbGF0Zm9ybUNl
bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUcmFja0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Nh
bXBsZUJveDo6dHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXApOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xpZW50Q2VydHMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5
ZWRNUlVDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNo
ZTo6Z2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2ZMb2NhbGVDYWNoZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJs
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y291bnRlck1hcHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVy
SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhl
bWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVu
c2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQ
YXRoOjp6ZXJvTGVuZ3RoTGluZWNhcFBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vblNj
YWxpbmdTdHJva2VQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2xpcHBlckZpbHRlck1hc2tlclRhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6bWFy
a2VyVGFncyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsQW5kU3Ryb2tlVGFncyk6CisgICAgICAg
IChXZWJDb3JlOjpjaGFpbmFibGVSZXNvdXJjZVRhZ3MpOgorICAgICAgICAqIHN2Zy9TVkdBbmds
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6dmFsdWVBc1N0cmluZyk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50Ojpyb3RhdGVNb2RlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRBdHRyaWJ1dGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBY2N1bXVsYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjppbmhlcml0c0Zyb21Qcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
b3JkZXJYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudDo6b3JkZXJZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmll
cik6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9u
WUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRp
b25YSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVyKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50
OjpyYWRpdXNYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpyYWRpdXNZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRp
Zmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVx
dWVuY3lZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWUlkZW50aWZp
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaE1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R2x5cGhNYXA6OnN2Z0dseXBoRm9yR2x5cGgpOgorICAgICAgICAqIHN2Zy9TVkdMYW5nU3BhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGFuZ1NwYWNlOjp4bWxzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtl
ckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01h
cmtlckVsZW1lbnQ6Om9yaWVudEFuZ2xlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUpOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6bWVkaWEpOgorICAgICAg
ICAqIHN2Zy9TVkdUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3Jt
Ojp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdT
cGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjp2aWV3Qm94SWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cHJlc2VydmVBc3BlY3RSYXRpb0lk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OnRyYW5zZm9ybUlkZW50
aWZpZXIpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU01JTEVsZW1lbnQ6OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6
OnJlcGVhdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpub3RpZnlE
ZXBlbmRlbnRzSW50ZXJ2YWxDaGFuZ2VkKToKKwogMjAxNi0wMS0wNSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIHNob3dSZW5kZXJUcmVlOiBhZGQgaW5saW5lLWJs
b2NrL2lubGluZS9ibG9jayBjb2x1bW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5jcHAKaW5kZXggNGFlNDI3ZC4uOGRjMDgzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcApAQCAtMjYsMTQgKzI2LDE2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudC5oIgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5KGJvb2wgYXZhaWxhYmxlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGF2YWlsYWJsZVN0cmluZywgKCJhdmFpbGFibGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgbm90QXZhaWxhYmxlU3RyaW5nLCAoIm5vdC1hdmFpbGFibGUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXZhaWxhYmxlU3RyaW5nKCJhdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBub3RBdmFpbGFibGVTdHJpbmcoIm5vdC1hdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIHJldHVybiBhdmFpbGFibGUg
PyBhdmFpbGFibGVTdHJpbmcgOiBub3RBdmFpbGFibGVTdHJpbmc7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA4NjM4MGUxLi4wMzY2
MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwyNSArMzksMjUgQEAgSURCQ3Vyc29yOjpJ
REJDdXJzb3IoKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4
dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bmV4dCwgKCJuZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5leHQoIm5leHQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmV4dDsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5leHR1bmlxdWUs
ICgibmV4dHVuaXF1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuZXh0dW5pcXVlKCJuZXh0dW5p
cXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5l
eHR1bmlxdWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25Q
cmV2KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBwcmV2LCAoInByZXYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcHJldigicHJldiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBwcmV2OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHJldnVuaXF1
ZSwgKCJwcmV2dW5pcXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHByZXZ1bmlxdWUoInByZXZ1
bmlxdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4g
cHJldnVuaXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDUxNzA3NzcuLjI1OWZiZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwzMSArNDAsMzEgQEAgSURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgicmVhZG9u
bHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZG9ubHkoInJlYWRvbmx5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWRvbmx5OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByZWFkd3JpdGUs
ICgicmVhZHdyaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJlYWR3cml0ZSgicmVhZHdyaXRl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3
cml0ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNp
b25DaGFuZ2UoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHZlcnNpb25jaGFuZ2UsICgidmVyc2lvbmNoYW5nZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiB2ZXJzaW9uY2hhbmdlKCJ2ZXJzaW9uY2hhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHZlcnNpb25jaGFuZ2U7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgi
MCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiByZWFkb25seSgiMCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiByZWFkb25seTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZHdyaXRlLCAo
IjEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZHdyaXRlKCIxIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3cml0ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJl
cXVlc3QuY3BwCmluZGV4IDhiMmYyMGQuLmJmY2RkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5UmVxdWVzdC5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNSwxMyAr
MTM2LDEzIEBAIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gTGVnYWN5UmVxdWVzdDo6dHJhbnNhY3Rp
b24oKSBjb25zdAogY29uc3QgU3RyaW5nJiBMZWdhY3lSZXF1ZXN0OjpyZWFkeVN0YXRlKCkgY29u
c3QKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IElEQlJlcXVlc3RSZWFkeVN0YXRlOjpQ
ZW5kaW5nIHx8IG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6RG9uZSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGVuZGluZywg
KCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRvbmUsICgiZG9uZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBwZW5kaW5nKCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gZG9uZSgiZG9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6UGVuZGluZykK
LSAgICAgICAgcmV0dXJuIHBlbmRpbmc7CisgICAgICAgIHJldHVybiBwZW5kaW5nLmdldCgpOwog
Ci0gICAgcmV0dXJuIGRvbmU7CisgICAgcmV0dXJuIGRvbmUuZ2V0KCk7CiB9CiAKIHZvaWQgTGVn
YWN5UmVxdWVzdDo6bWFya0Vhcmx5RGVhdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggODdi
YzM4Mi4uZjhmM2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCkBAIC00NSwxOSArNDUsMTkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbHNI
b3N0OjphdXRvbWF0aWNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhdXRvbWF0aWMsICgiYXV0b21hdGljIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IGF1dG9tYXRpYygiYXV0b21hdGljIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGF1dG9tYXRpYzsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IGZvcmNlZE9uLCAoImZvcmNlZC1vbmx5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZv
cmNlZE9uKCJmb3JjZWQtb25seSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBmb3JjZWRPbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHdheXNPbiwgKCJhbHdheXMtb24iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx3YXlzT24oImFsd2F5cy1vbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHdheXNPbjsKIH0KIApA
QCAtMjMwLDEyICsyMzAsMTIgQEAgU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERl
dmljZURpc3BsYXlOYW1lKCkgY29uc3QKIAogU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRl
cm5hbERldmljZVR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIG5vbmUsIChBU0NJSUxpdGVyYWwoIm5vbmUiKSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5vbmUoQVNDSUlMaXRlcmFsKCJub25lIikpOwogICAgIFN0
cmluZyB0eXBlID0gbm9uZTsKICAgICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFpcnBsYXks
IChBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHR2b3V0LCAoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXki
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFs
KCJ0dm91dCIpKTsKICAgICAKICAgICBNZWRpYVBsYXllciogcGxheWVyID0gbV9tZWRpYUVsZW1l
bnQtPnBsYXllcigpOwogICAgIGlmICghcGxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDRlMTI1NDMuLjgyOWQx
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCkBAIC05NSwxOSArOTUsMTkgQEAgTWVkaWFTb3VyY2U6On5NZWRpYVNvdXJjZSgp
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcGVu
LCAoIm9wZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gb3Blbigib3BlbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBvcGVuOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjbG9zZWQs
ICgiY2xvc2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNsb3NlZCgiY2xvc2VkIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNsb3NlZDsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZTo6ZW5kZWRLZXl3b3JkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBl
bmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7
CiB9CiAKQEAgLTQ0MCw4ICs0NDAsOCBAQCB2b2lkIE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShj
b25zdCBBdG9taWNTdHJpbmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBNZWRp
YVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3IoY29uc3QgQXRvbWljU3RyaW5nJiBlcnJvciwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgbmV0d29yaywgKCJuZXR3b3JrIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGRlY29kZSwgKCJkZWNvZGUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gbmV0d29yaygibmV0d29yayIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IGRlY29kZSgiZGVjb2RlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICBMT0coTWVkaWFTb3VyY2UsICJNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3Io
JXApIDogJXMiLCB0aGlzLCBlcnJvci5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbQppbmRleCBhYThiMDUyLi41ZTE0NjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50Lm1tCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFW
TWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqLCBKU0NvbnRlCiAKIHN0
YXRpYyBTdHJpbmcgcXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjcmlwdCwgKFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCwgc2l6ZW9mKFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50SmF2YVNjcmlwdCkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3Jp
cHQoUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0LCBzaXplb2YoUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0KSk7CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApA
QCAtODksMTMgKzg5LDEzIEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBv
cnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICAgICAgImF1ZGlvL3gtbTRy
IiwgImF1ZGlvL3gtbXAzIiwgImF1ZGlvL3gtbXBlZyIsICJhdWRpby94LW1wZWczIiwgImF1ZGlv
L3gtbXBlZ3VybCIsICJhdWRpby94LXNjcGxzIiwgImF1ZGlvL3gtd2F2IiwKICAgICAgICAgInZp
ZGVvLzNncHAiLCAidmlkZW8vM2dwcDIiLCAidmlkZW8vbXA0IiwgInZpZGVvL3F1aWNrdGltZSIs
ICJ2aWRlby94LW00diIKICAgICB9OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChIYXNoU2V0PFN0cmluZz4sIHR5cGVIYXNoLCAoKSk7Ci0gICAgaWYgKCF0eXBlSGFzaC5zaXpl
KCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB0eXBlSGFz
aDsKKyAgICBpZiAoIXR5cGVIYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodHlwZXMpOyArK2kpCi0gICAgICAgICAgICB0
eXBlSGFzaC5hZGQodHlwZXNbaV0pOworICAgICAgICAgICAgdHlwZUhhc2guZ2V0KCkuYWRkKHR5
cGVzW2ldKTsKICAgICB9CiAKLSAgICByZXR1cm4gdHlwZUhhc2guY29udGFpbnMobWltZVR5cGUp
OworICAgIHJldHVybiB0eXBlSGFzaC5nZXQoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJv
b2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTEwNSwxMyArMTA1LDEzIEBAIGJvb2wgUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikKICAgICAgICAgIm0zdTgiLCAibTRhIiwgIm00YiIsICJtNHAiLCAibTRyIiwgIm00
diIsICJtb3YiLCAibXAzIiwgIm1wMyIsICJtcDQiLCAibXBlZyIsICJtcGciLCAibXF2IiwgInBs
cyIsICJxdCIsCiAgICAgICAgICJzbmQiLCAic3dhIiwgInRzIiwgInVsdyIsICJ3YXYiCiAgICAg
fTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBl
eHRlbnNpb25IYXNoLCAoKSk7Ci0gICAgaWYgKCFleHRlbnNpb25IYXNoLnNpemUoKSkgeworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGV4dGVuc2lvbkhhc2g7Cisg
ICAgaWYgKCFleHRlbnNpb25IYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZXh0ZW5zaW9ucyk7ICsraSkKLSAgICAgICAg
ICAgIGV4dGVuc2lvbkhhc2guYWRkKGV4dGVuc2lvbnNbaV0pOworICAgICAgICAgICAgZXh0ZW5z
aW9uSGFzaC5nZXQoKS5hZGQoZXh0ZW5zaW9uc1tpXSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGV4
dGVuc2lvbkhhc2guY29udGFpbnMoZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9uSGFz
aC5nZXQoKS5jb250YWlucyhleHRlbnNpb24pOwogfQogCiBRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdp
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXMuY3BwCmluZGV4IDdmYjEzZTguLjdmMTc1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc0V2ZW50LmgiCiAjaW5jbHVkZSAiU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
QEAgLTE5Miw4ICsxOTMsOCBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6aGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuYwogICAgIAogdm9pZCBT
cGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5k
YXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgd29yZEJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ3
b3JkIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzZW50ZW5jZSIpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gd29yZEJvdW5kYXJ5U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgid29yZCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2VudGVuY2UiKSk7
CiAKICAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7CiAgICAgY2FzZSBTcGVlY2hXb3JkQm91bmRhcnk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA5MWJhMzEyLi41NGFjYjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKQEAgLTE4NCw4ICsxODQsOCBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAg
ICAgU3RyaW5nIHN0cmluZ0ZvckNhY2hlID0gU3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZyk7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ1NTUHJvcGVydHlJbmZvPiBDU1NQcm9wZXJ0eUlu
Zm9NYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5SW5m
b01hcCwgcHJvcGVydHlJbmZvQ2FjaGUsICgpKTsKLSAgICBwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0
eUluZm9DYWNoZS5nZXQoc3RyaW5nRm9yQ2FjaGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDU1NQcm9wZXJ0eUluZm9NYXA+IHByb3BlcnR5SW5mb0NhY2hlOworICAgIHByb3BlcnR5SW5m
byA9IHByb3BlcnR5SW5mb0NhY2hlLmdldCgpLmdldChzdHJpbmdGb3JDYWNoZSk7CiAgICAgaWYg
KHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwog
CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlE
Rm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICBpZiAocHJv
cGVydHlJRCkgewogICAgICAgICBwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGhh
ZFBpeGVsT3JQb3NQcmVmaXg7CiAgICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCk7Ci0gICAgICAgIHByb3BlcnR5SW5m
b0NhY2hlLmFkZChzdHJpbmdGb3JDYWNoZSwgcHJvcGVydHlJbmZvKTsKKyAgICAgICAgcHJvcGVy
dHlJbmZvQ2FjaGUuZ2V0KCkuYWRkKHN0cmluZ0ZvckNhY2hlLCBwcm9wZXJ0eUluZm8pOwogICAg
IH0KICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmNwcAppbmRleCA0NGY2NGI2Li5mYWE4OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX2luc3RhbmNlLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01Niw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBCaW5k
aW5ncyB7CiAKIHN0YXRpYyBTdHJpbmcmIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZXhjZXB0aW9uU3RyOwogICAgIHJl
dHVybiBleGNlcHRpb25TdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggYzU1
NzdiNy4uMjgzNGY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgog
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMjg4LDExICsyODksMTEgQEAgc3RhdGljIHZvaWQgYWRkUmVz
b2x1dGlvbldhcm5pbmdNZXNzYWdlVG9Db25zb2xlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
U3RyaW4KICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVCh2YWx1ZSk7CiAKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBtZWRpYVF1ZXJ5TWVzc2FnZSwg
KEFTQ0lJTGl0ZXJhbCgiQ29uc2lkZXIgdXNpbmcgJ2RwcHgnIHVuaXRzIGluc3RlYWQgb2YgJyVy
ZXBsYWNlbWVudFVuaXRzJScsIGFzIGluIENTUyAnJXJlcGxhY2VtZW50VW5pdHMlJyBtZWFucyBk
b3RzLXBlci1DU1MtJWxlbmd0aFVuaXQlLCBub3QgZG90cy1wZXItcGh5c2ljYWwtJWxlbmd0aFVu
aXQlLCBzbyBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIHRoZSBhY3R1YWwgJyVyZXBsYWNlbWVudFVu
aXRzJScgb2YgYSBzY3JlZW4uIEluIG1lZGlhIHF1ZXJ5IGV4cHJlc3Npb246ICIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbWVkaWFWYWx1ZURQSSwgKEFT
Q0lJTGl0ZXJhbCgiZHBpIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBtZWRpYVZhbHVlRFBDTSwgKEFTQ0lJTGl0ZXJhbCgiZHBjbSIpKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbGVuZ3RoVW5pdEluY2gsIChBU0NJ
SUxpdGVyYWwoImluY2giKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGxlbmd0aFVuaXRDZW50aW1ldGVyLCAoQVNDSUlMaXRlcmFsKCJjZW50aW1ldGVyIikp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRpYVF1ZXJ5TWVzc2FnZShB
U0NJSUxpdGVyYWwoIkNvbnNpZGVyIHVzaW5nICdkcHB4JyB1bml0cyBpbnN0ZWFkIG9mICclcmVw
bGFjZW1lbnRVbml0cyUnLCBhcyBpbiBDU1MgJyVyZXBsYWNlbWVudFVuaXRzJScgbWVhbnMgZG90
cy1wZXItQ1NTLSVsZW5ndGhVbml0JSwgbm90IGRvdHMtcGVyLXBoeXNpY2FsLSVsZW5ndGhVbml0
JSwgc28gZG9lcyBub3QgY29ycmVzcG9uZCB0byB0aGUgYWN0dWFsICclcmVwbGFjZW1lbnRVbml0
cyUnIG9mIGEgc2NyZWVuLiBJbiBtZWRpYSBxdWVyeSBleHByZXNzaW9uOiAiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbWVkaWFWYWx1ZURQSShBU0NJSUxpdGVyYWwoImRw
aSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRpYVZhbHVlRFBDTShB
U0NJSUxpdGVyYWwoImRwY20iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
bGVuZ3RoVW5pdEluY2goQVNDSUlMaXRlcmFsKCJpbmNoIikpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGxlbmd0aFVuaXRDZW50aW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY2VudGlt
ZXRlciIpKTsKIAogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGlmICh2YWx1ZS0+aXNEb3RzUGVy
SW5jaCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCA2
MGM1ZDM5Li4zZTMwMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUg
IlN0eWxlUnVsZUltcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzE2LDExICszMTcsMTEgQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBh
cnNlQXV0aG9yU3R5bGVTaGVldChjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWQKIAog
ICAgIGlmIChtX3BhcnNlckNvbnRleHQubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgJiYgaXNTdHJp
Y3RQYXJzZXJNb2RlKG1fcGFyc2VyQ29udGV4dC5tb2RlKSkgewogICAgICAgICAvLyBXb3JrIGFy
b3VuZCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MzUwPi4KLSAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbWVkaWFX
aWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQsIChBU0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHls
ZXNoZWV0ICovXG4vKiB3b3JrIGFyb3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4j
Y29sdW1uLWNvbnRlbnQgeyBtYXJnaW4tbGVmdDogMDsgfVxuXG4iKSkpOworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVT
aGVldChBU0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHlsZXNoZWV0ICovXG4vKiB3b3JrIGFy
b3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4jY29sdW1uLWNvbnRlbnQgeyBtYXJn
aW4tbGVmdDogMDsgfVxuXG4iKSk7CiAgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gdmFyaWFudHMg
b2YgS0hUTUxGaXhlcy5jc3MuIE9uZSBpcyBlcXVhbCB0byBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5
bGVTaGVldCwKICAgICAgICAgLy8gd2hpbGUgdGhlIG90aGVyIGxhY2tzIHRoZSBzZWNvbmQgdHJh
aWxpbmcgbmV3bGluZS4KLSAgICAgICAgaWYgKGJhc2VVUkwoKS5zdHJpbmcoKS5lbmRzV2l0aCgi
L0tIVE1MRml4ZXMuY3NzIikgJiYgIXNoZWV0VGV4dC5pc051bGwoKSAmJiBtZWRpYVdpa2lLSFRN
TEZpeGVzU3R5bGVTaGVldC5zdGFydHNXaXRoKHNoZWV0VGV4dCkKLSAgICAgICAgICAgICYmIHNo
ZWV0VGV4dC5sZW5ndGgoKSA+PSBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVTaGVldC5sZW5ndGgo
KSAtIDEpCisgICAgICAgIGlmIChiYXNlVVJMKCkuc3RyaW5nKCkuZW5kc1dpdGgoIi9LSFRNTEZp
eGVzLmNzcyIpICYmICFzaGVldFRleHQuaXNOdWxsKCkgJiYgbWVkaWFXaWtpS0hUTUxGaXhlc1N0
eWxlU2hlZXQuZ2V0KCkuc3RhcnRzV2l0aChzaGVldFRleHQpCisgICAgICAgICAgICAmJiBzaGVl
dFRleHQubGVuZ3RoKCkgPj0gbWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQuZ2V0KCkubGVu
Z3RoKCkgLSAxKQogICAgICAgICAgICAgY2xlYXJSdWxlcygpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCAzMWU1ZjMxLi5m
NmRlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuaCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlN0YXRpY05v
ZGVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYgSGFzaE1hcDxDb250YWluZXJOb2RlKiwgQ2hp
bGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcio+IEFjY3VtdWxhdG9yTWFwOwogc3RhdGljIEFjY3Vt
dWxhdG9yTWFwJiBhY2N1bXVsYXRvck1hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEFjY3VtdWxhdG9yTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QWNjdW11bGF0b3JNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCBmZTBiY2MxLi5mYWYyZGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTUzLDYgKzUzLDcg
QEAKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHREb2N1bWVudC5o
IgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC04OCw3ICs4OSw3IEBAIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkU1ZHMTBGZWF0dXJlKGNvbnN0
IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZlYXR1cmVTZXQsIHN2Z0ZlYXR1cmVzLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTZXQ+IHN2Z0ZlYXR1cmVzOwogICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICBhZGRTdHJp
bmcoc3ZnRmVhdHVyZXMsICJzdmciKTsKQEAgLTEwOCw3ICsxMDksNyBAQCBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZFNWRzEwRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbgogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmZWF0dXJlLnN0YXJ0c1dpdGgoIm9yZy53M2MuIiwgZmFsc2UpCi0gICAgICAgICYmIHN2Z0Zl
YXR1cmVzLmNvbnRhaW5zKGZlYXR1cmUucmlnaHQoZmVhdHVyZS5sZW5ndGgoKSAtIDgpKTsKKyAg
ICAgICAgJiYgc3ZnRmVhdHVyZXMuZ2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJl
Lmxlbmd0aCgpIC0gOCkpOwogfQogCiBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVy
ZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKQEAgLTExNyw3
ICsxMTgsNyBAQCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVyZShjb25zdCBTdHJp
bmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChGZWF0dXJlU2V0LCBzdmdGZWF0dXJlcywgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxGZWF0dXJlU2V0PiBzdmdGZWF0dXJlczsKICAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CiAgICAgICAgIC8vIFNhZGx5LCB3ZSBjYW5ub3QgY2xhaW0gdG8gaW1wbGVt
ZW50IGFueSBvZiB0aGUgU1ZHIDEuMSBnZW5lcmljIGZlYXR1cmUgc2V0cwogICAgICAgICAvLyBs
YWNrIG9mIEZvbnQgYW5kIEZpbHRlciBzdXBwb3J0LgpAQCAtMTc1LDcgKzE3Niw3IEBAIHN0YXRp
YyBib29sIGlzU3VwcG9ydGVkU1ZHMTFGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZlYXR1cmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy53My5vcmcvdHIvc3ZnMTEv
ZmVhdHVyZSMiLCBmYWxzZSkKLSAgICAgICAgJiYgc3ZnRmVhdHVyZXMuY29udGFpbnMoZmVhdHVy
ZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKKyAgICAgICAgJiYgc3ZnRmVhdHVyZXMu
Z2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKIH0K
IAogRE9NSW1wbGVtZW50YXRpb246OkRPTUltcGxlbWVudGF0aW9uKERvY3VtZW50JiBkb2N1bWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDI4NGU4NzcuLmQwNTYyZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTc3LDYgKzE3Nyw3IEBACiAjaW5jbHVkZSA8Y3RpbWU+CiAj
aW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4K
ICNpbmNsdWRlIDx5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmg+CkBAIC0xMTE4LDkgKzExMTksOSBA
QCBSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaQogCiBTdHJpbmcgRG9jdW1lbnQ6OnJlYWR5U3RhdGUo
KSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGxvYWRpbmcsIChBU0NJSUxpdGVyYWwoImxvYWRpbmciKSkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGludGVyYWN0aXZlLCAoQVNDSUlMaXRl
cmFsKCJpbnRlcmFjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgY29tcGxldGUsIChBU0NJSUxpdGVyYWwoImNvbXBsZXRlIikpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBsb2FkaW5nKEFTQ0lJTGl0ZXJh
bCgibG9hZGluZyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBp
bnRlcmFjdGl2ZShBU0NJSUxpdGVyYWwoImludGVyYWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNvbXBsZXRlKEFTQ0lJTGl0ZXJhbCgiY29tcGxldGUi
KSk7CiAKICAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0ZSkgewogICAgIGNhc2UgTG9hZGluZzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCA5ODllMTRlLi5lOGNiYzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8
d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjkyOCwyMSArMjkyOSwyMSBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIEVsZW1lbnQ6OndlYmtpdFJlZ2lvbk92ZXJzZXQoKSBjb25zdAogewogICAgIGRvY3Vt
ZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB1bmRlZmluZWRTdGF0ZSwg
KCJ1bmRlZmluZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdW5kZWZpbmVkU3RhdGUoInVuZGVm
aW5lZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICghZG9j
dW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpIHx8ICFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgp
KQogICAgICAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7CiAKICAgICBzd2l0Y2ggKHJlZ2lvbk92
ZXJzZXRTdGF0ZSgpKSB7CiAgICAgY2FzZSBSZWdpb25GaXQ6IHsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZml0U3RhdGUsICgiZml0IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaXRTdGF0ZSgiZml0IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiBmaXRTdGF0ZTsKICAgICB9CiAgICAg
Y2FzZSBSZWdpb25FbXB0eTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBlbXB0eVN0YXRlLCAoImVtcHR5IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBlbXB0eVN0YXRlKCJlbXB0eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgICAgICByZXR1cm4gZW1wdHlTdGF0ZTsKICAgICB9CiAgICAgY2FzZSBSZWdp
b25PdmVyc2V0OiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG92ZXJmbG93U3RhdGUsICgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gb3ZlcmZsb3dTdGF0ZSgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gb3ZlcmZsb3dTdGF0ZTsKICAgICB9CiAgICAgY2Fz
ZSBSZWdpb25VbmRlZmluZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmlu
ZGV4IDM0MTg0N2YuLmQ1NGM2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIu
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJT
VkdVc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxMyw4ICsyMTQs
OCBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFbGVtZW50
KiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZwogICAgIGlmIChlbGVtZW50LT5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEhhc2hTZXQ8RWxlbWVudCo+LCBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxh
dGVkQ2xpY2tzLCAoKSk7Ci0gICAgaWYgKCFlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xp
Y2tzLmFkZChlbGVtZW50KS5pc05ld0VudHJ5KQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PEVsZW1lbnQqPj4gZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrczsKKyAg
ICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MuZ2V0KCkuYWRkKGVsZW1l
bnQpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtb3VzZUV2ZW50T3B0
aW9ucyA9PSBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzKQpAQCAtMjMwLDcgKzIzMSw3IEBAIHZv
aWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKEVsZW1lbnQqIGVsZW1l
bnQsIEV2ZW50KiB1bmRlcmx5aW5nCiAgICAgLy8gYWx3YXlzIHNlbmQgY2xpY2sKICAgICBkaXNw
YXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY2xpY2tFdmVudCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5
aW5nRXZlbnQsIGVsZW1lbnQpKTsKIAotICAgIGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRD
bGlja3MucmVtb3ZlKGVsZW1lbnQpOworICAgIGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRD
bGlja3MuZ2V0KCkucmVtb3ZlKGVsZW1lbnQpOwogfQogCiBzdGF0aWMgdm9pZCBjYWxsRGVmYXVs
dEV2ZW50SGFuZGxlcnNJblRoZUJ1YmJsaW5nT3JkZXIoRXZlbnQmIGV2ZW50LCBjb25zdCBFdmVu
dFBhdGgmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIu
Y3BwCmluZGV4IDRjYWY2MmYuLjQxYTIwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRO
b2RlVHJhdmVyc2FsLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MTMsNyArMTE0LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNsZWFyU2hlZXQoKQog
CiBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29udGVudFR5cGUoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNzc0NvbnRlbnRUeXBlLCAoInRleHQvY3NzIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNzc0NvbnRlbnRUeXBlKCJ0ZXh0L2NzcyIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICh0eXBlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGVsZW1lbnQuaXNIVE1MRWxlbWVudCgp
ID8gZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgY3NzQ29udGVudFR5cGUpIDogdHlwZSA9PSBjc3ND
b250ZW50VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBm
YzE3MDhjLi44N2ZiYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CkBAIC0xNDUsMTMgKzE0NSwxMyBAQCB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPE11dGF0aW9uT2Jz
ZXJ2ZXI+PiBNdXRhdGlvbk9ic2VydmVyU2V0OwogCiBzdGF0aWMgTXV0YXRpb25PYnNlcnZlclNl
dCYgYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChNdXRhdGlvbk9ic2VydmVyU2V0LCBhY3RpdmVPYnNlcnZlcnMsICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0YXRpb25PYnNlcnZlclNldD4gYWN0aXZlT2JzZXJ2
ZXJzOwogICAgIHJldHVybiBhY3RpdmVPYnNlcnZlcnM7CiB9CiAKIHN0YXRpYyBNdXRhdGlvbk9i
c2VydmVyU2V0JiBzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycygpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGF0aW9uT2JzZXJ2ZXJTZXQsIHN1c3BlbmRlZE9ic2Vy
dmVycywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNdXRhdGlvbk9ic2VydmVyU2V0
PiBzdXNwZW5kZWRPYnNlcnZlcnM7CiAgICAgcmV0dXJuIHN1c3BlbmRlZE9ic2VydmVyczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKaW5kZXggOTVmY2VjMi4uY2U0MWEx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAKICNpbmNsdWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3Qu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0NSwxOSArMTQ2LDE5IEBAIHBy
aXZhdGU6CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQ2hpbGRMaXN0UmVjb3JkOjp0eXBlKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGlsZExp
c3QsICgiY2hpbGRMaXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGNoaWxkTGlzdCgiY2hpbGRM
aXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNo
aWxkTGlzdDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdHRyaWJ1dGVzUmVjb3JkOjp0eXBl
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBh
dHRyaWJ1dGVzLCAoImF0dHJpYnV0ZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXR0cmlidXRl
cygiYXR0cmlidXRlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBhdHRyaWJ1dGVzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIENoYXJhY3RlckRh
dGFSZWNvcmQ6OnR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGNoYXJhY3RlckRhdGEsICgiY2hhcmFjdGVyRGF0YSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBjaGFyYWN0ZXJEYXRhKCJjaGFyYWN0ZXJEYXRhIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNoYXJhY3RlckRhdGE7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCBiMjQ5MjQxLi5jZjllYWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjb25zdCBRdWFsaWZpZWROYW1lJiBwc2V1ZG9FbGVtZW50VGFnTmFt
ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUs
IG5hbWUsIChudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVsbEF0b20pKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVs
bEF0b20pOwogICAgIHJldHVybiBuYW1lOwogfQogCiBTdHJpbmcgUHNldWRvRWxlbWVudDo6cHNl
dWRvRWxlbWVudE5hbWVGb3JFdmVudHMoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgYWZ0ZXIsIChBU0NJSUxpdGVy
YWwoIjo6YWZ0ZXIiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIGJlZm9yZSwgKEFTQ0lJTGl0ZXJhbCgiOjpiZWZvcmUiKSkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGFmdGVyKEFTQ0lJTGl0ZXJhbCgiOjphZnRl
ciIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBiZWZvcmUoQVND
SUlMaXRlcmFsKCI6OmJlZm9yZSIpKTsKICAgICBzd2l0Y2ggKHBzZXVkb0lkKSB7CiAgICAgY2Fz
ZSBBRlRFUjoKICAgICAgICAgcmV0dXJuIGFmdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwCmluZGV4IGZkNzliZGEuLjU2ZTRmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RhdGljQ29uc3RydWN0b3Jz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC03NCw3ICs3NSw3
IEBAIHN0cnVjdCBRTmFtZUNvbXBvbmVudHNUcmFuc2xhdG9yIHsKIAogc3RhdGljIGlubGluZSBR
TmFtZVNldCYgcXVhbGlmaWVkTmFtZUNhY2hlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUU5hbWVTZXQsIG5hbWVDYWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxRTmFtZVNldD4gbmFtZUNhY2hlOwogICAgIHJldHVybiBuYW1lQ2FjaGU7CiB9CiAK
QEAgLTExNSw3ICsxMTYsNyBAQCB2b2lkIFF1YWxpZmllZE5hbWU6OmluaXQoKQogCiBjb25zdCBR
dWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChRdWFsaWZpZWROYW1lLCBudWxsTmFtZSwgKG51bGxBdG9tLCBudWxsQXRvbSwgbnVs
bEF0b20pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbnVsbE5h
bWUobnVsbEF0b20sIG51bGxBdG9tLCBudWxsQXRvbSk7CiAgICAgcmV0dXJuIG51bGxOYW1lOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNjNmNTkzZi4uMTg3OTFm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMTE5LDI0ICsxMTksMjQg
QEAgc3RhdGljIGJvb2wgaXNMZWdhY3lTdXBwb3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoY29uc3Qg
U3RyaW5nJiBsYW5ndWFnZSkKIAogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBI
VE1MNSBjb21wbGlhbnQuIFRoZXNlIGJlbG9uZyBpbiB0aGUgTUlNRSByZWdpc3RyeSBhcyAidGV4
dC9qYXZhc2NyaXB0PHZlcnNpb24+IiBlbnRyaWVzLgogICAgIHR5cGVkZWYgSGFzaFNldDxTdHJp
bmcsIENhc2VGb2xkaW5nSGFzaD4gTGFuZ3VhZ2VTZXQ7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKExhbmd1YWdlU2V0LCBsYW5ndWFnZXMsICgpKTsKLSAgICBpZiAobGFuZ3Vh
Z2VzLmlzRW1wdHkoKSkgewotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7Ci0g
ICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFk
ZCgiamF2YXNjcmlwdDEuMCIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS4x
Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjIiKTsKLSAgICAgICAgbGFu
Z3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMyIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZh
c2NyaXB0MS40Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjUiKTsKLSAg
ICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuNiIpOwotICAgICAgICBsYW5ndWFnZXMu
YWRkKCJqYXZhc2NyaXB0MS43Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImxpdmVzY3JpcHQi
KTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiZWNtYXNjcmlwdCIpOwotICAgICAgICBsYW5ndWFn
ZXMuYWRkKCJqc2NyaXB0Iik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhbmd1YWdlU2V0
PiBsYW5ndWFnZXM7CisgICAgaWYgKGxhbmd1YWdlcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdCIpOworICAgICAgICBsYW5ndWFnZXMu
Z2V0KCkuYWRkKCJqYXZhc2NyaXB0Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImph
dmFzY3JpcHQxLjAiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEu
MSIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0MS4yIik7CisgICAg
ICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFzY3JpcHQxLjMiKTsKKyAgICAgICAgbGFuZ3Vh
Z2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNCIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCku
YWRkKCJqYXZhc2NyaXB0MS41Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFz
Y3JpcHQxLjYiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNyIp
OworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJsaXZlc2NyaXB0Iik7CisgICAgICAgIGxh
bmd1YWdlcy5nZXQoKS5hZGQoImVjbWFzY3JpcHQiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgp
LmFkZCgianNjcmlwdCIpOwogICAgIH0KIAotICAgIHJldHVybiBsYW5ndWFnZXMuY29udGFpbnMo
bGFuZ3VhZ2UpOworICAgIHJldHVybiBsYW5ndWFnZXMuZ2V0KCkuY29udGFpbnMobGFuZ3VhZ2Up
OwogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVudCgpCkBAIC0zNDcs
NyArMzQ3LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpCiAKICAgICBpZiAobV9yZXF1ZXN0VXNlc0FjY2Vzc0NvbnRyb2wgJiYg
IW1fY2FjaGVkU2NyaXB0LT5wYXNzZXNTYW1lT3JpZ2luUG9saWN5Q2hlY2soKm1fZWxlbWVudC5k
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVu
dCgpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25z
b2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlwdCBsb2FkIGRlbmll
ZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFs
KCJDcm9zcy1vcmlnaW4gc2NyaXB0IGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJj
ZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAgICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25z
b2xlTWVzc2FnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDcyZTNhZDQuLjdiODllMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJWaXNpYmxl
VW5pdHMuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTYyLDcgKzYzLDcgQEAgc3RhdGljIGludCB0b0lk
ZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUpCiAKIHN0YXRpYyBTdHJpbmcmIHN0
eWxlU3BhbkNsYXNzU3RyaW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBzdHlsZVNwYW5DbGFzc1N0cmluZywgKChBcHBsZVN0eWxlU3BhbkNsYXNzKSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0eWxlU3BhbkNsYXNzU3RyaW5n
KEFwcGxlU3R5bGVTcGFuQ2xhc3MpOwogICAgIHJldHVybiBzdHlsZVNwYW5DbGFzc1N0cmluZzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRl
eCBmOTY4MmE0Li5jMTM0MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIK
ICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJO
YW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTksOCArMjYwLDggQEAgYm9vbCBN
YXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlRWxlbWVudChjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogICAgIGlmIChwcmVmaXguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIWVs
ZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zQXRvbSk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCB4bWxuc1dpdGhDb2xvbiwgKEFTQ0lJTGl0ZXJhbCgieG1sbnM6
IikpKTsKLSAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zV2l0aENvbG9uICsg
cHJlZml4KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB4bWxuc1dpdGhDb2xv
bihBU0NJSUxpdGVyYWwoInhtbG5zOiIpKTsKKyAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmli
dXRlKHhtbG5zV2l0aENvbG9uLmdldCgpICsgcHJlZml4KTsKIH0KIAogYm9vbCBNYXJrdXBBY2N1
bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlLCBOYW1lc3BhY2VzJiBuYW1lc3BhY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA3ODk3MmM3Li5lYjQxMGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcApAQCAtMTA0LDE0ICsxMDQsMTQgQEAgcHJpdmF0ZToKIAogc3RhdGljIGJvb2wgaXNJ
bnRlcmNoYW5nZU5ld2xpbmVOb2RlKGNvbnN0IE5vZGUgKm5vZGUpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJp
bmcsIChBcHBsZUludGVyY2hhbmdlTmV3bGluZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nKEFwcGxlSW50ZXJjaGFuZ2VO
ZXdsaW5lKTsKICAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSAmJiAK
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmli
dXRlKGNsYXNzQXR0cikgPT0gaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmc7CiB9CiAKIHN0
YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9kZSAqbm9k
ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb252ZXJ0
ZWRTcGFjZVNwYW5DbGFzc1N0cmluZywgKEFwcGxlQ29udmVydGVkU3BhY2UpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZyhB
cHBsZUNvbnZlcnRlZFNwYWNlKTsKICAgICByZXR1cm4gbm9kZS0+aXNIVE1MRWxlbWVudCgpICYm
IAogICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCAqPihub2RlKS0+Z2V0
QXR0cmlidXRlKGNsYXNzQXR0cikgPT0gY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmc7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDMwNmY0YjIuLjJkN2Fk
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC00MjgsNyArNDI4
LDcgQEAgYm9vbCBpc1RhYmxlU3RydWN0dXJlTm9kZShjb25zdCBOb2RlICpub2RlKQogCiBjb25z
dCBTdHJpbmcmIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcsICgmbm9CcmVh
a1NwYWNlLCAxKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbm9uQnJlYWtp
bmdTcGFjZVN0cmluZygmbm9CcmVha1NwYWNlLCAxKTsKICAgICByZXR1cm4gbm9uQnJlYWtpbmdT
cGFjZVN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDZkMzI2NTYu
LmM3YWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTIxMyw4ICsyMTMsOCBA
QCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFN0
cmluZ0J1aWxkZXImIG91dCwgU3R5bGVQcgogCiBjb25zdCBTdHJpbmcmIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyhib29sIGlzQmxvY2spCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xvc2UsIChBU0NJSUxp
dGVyYWwoIjwvZGl2PiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2UsIChBU0NJSUxpdGVyYWwoIjwvc3Bhbj4iKSkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGRpdkNsb3NlKEFTQ0lJTGl0
ZXJhbCgiPC9kaXY+IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+
IHN0eWxlU3BhbkNsb3NlKEFTQ0lJTGl0ZXJhbCgiPC9zcGFuPiIpKTsKICAgICByZXR1cm4gaXNC
bG9jayA/IGRpdkNsb3NlIDogc3R5bGVTcGFuQ2xvc2U7CiB9CiAKQEAgLTU3Nyw3ICs1NzcsNyBA
QCBzdGF0aWMgTm9kZSogaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKGNvbnN0IFJhbmdlKiBy
YW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaAogc3RhdGljIFN0cmluZyBjcmVhdGVNYXJrdXBJbnRl
cm5hbChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJhbmdlJiByYW5nZSwgVmVjdG9yPE5vZGUq
Piogbm9kZXMsCiAgICAgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGJv
b2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJM
cykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBp
bnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcsIChBU0NJSUxpdGVyYWwoIjxiciBjbGFzcz1cIiIgQXBw
bGVJbnRlcmNoYW5nZU5ld2xpbmUgIlwiPiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiPGJy
IGNsYXNzPVwiIiBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAiXCI+IikpOwogCiAgICAgYm9vbCBj
b2xsYXBzZWQgPSByYW5nZS5jb2xsYXBzZWQoKTsKICAgICBpZiAoY29sbGFwc2VkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5jcHAKaW5kZXggNmIwMzNiMC4uMGY0Y2U5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MSwxMSArNjIsMTAgQEAgdm9p
ZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJiB1cmwpCiAKIFVSTFJl
Z2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQmxvYlVSTFJlZ2lzdHJ5LCBpbnN0YW5jZSwgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxCbG9iVVJMUmVnaXN0cnk+IGluc3RhbmNlOwogICAgIHJldHVy
biBpbnN0YW5jZTsKIH0KIAotCiBCbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25s
eURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCBhMzJhMGI3Li5hZGIwZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTU4LDcgKzU5LDcgQEAgdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlu
cHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCopCiAKIHZvaWQgQmFzZUNob29z
ZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHZhbHVlQ29udGFp
bmVyUHNldWRvLCAoIi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiB2YWx1ZUNvbnRhaW5lclBzZXVkbygiLXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBSZWY8SFRNTERp
dkVsZW1lbnQ+IHZhbHVlQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50
KCkuZG9jdW1lbnQoKSk7CiAgICAgdmFsdWVDb250YWluZXItPnNldFBzZXVkbyh2YWx1ZUNvbnRh
aW5lclBzZXVkbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCBiMWU4
MjlkLi5iMzRmN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw3ICs2Miw3IEBA
IERhdGVDb21wb25lbnRzOjpUeXBlIERhdGVJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIAog
U3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAo
ZGF0ZURlZmF1bHRTdGVwLCBkYXRlRGVmYXVsdFN0ZXBCYXNlLCBkYXRlU3RlcFNjYWxlRmFjdG9y
LCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERl
c2NyaXB0aW9uKGRhdGVEZWZhdWx0U3RlcCwgZGF0ZURlZmF1bHRTdGVwQmFzZSwgZGF0ZVN0ZXBT
Y2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpOwog
CiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwogICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9
IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2lt
YWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKaW5kZXggYjJlZmU4NS4uYjI5NDUxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5o
IgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDcgKzYzLDcgQEAgRGVjaW1h
bCBEYXRlVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3Rl
cFJhbmdlIERhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5n
IGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwg
KGRhdGVUaW1lRGVmYXVsdFN0ZXAsIGRhdGVUaW1lRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZVN0
ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb24+IHN0ZXBEZXNjcmlwdGlvbihkYXRlVGltZURlZmF1bHRTdGVwLCBkYXRlVGltZURlZmF1
bHRTdGVwQmFzZSwgZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3Rl
cFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKICAg
ICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjpt
aW5pbXVtRGF0ZVRpbWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
VGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5jcHAKaW5kZXggNGE0MzhmMy4uODIxYzgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjgsNyArNjksNyBAQCB2b2lkIERhdGVUaW1l
TG9jYWxJbnB1dFR5cGU6OnNldFZhbHVlQXNEYXRlKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbgogCiBTdGVwUmFuZ2UgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6Y3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0
aW9uLCBzdGVwRGVzY3JpcHRpb24sIChkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXAsIGRhdGVUaW1l
TG9jYWxEZWZhdWx0U3RlcEJhc2UsIGRhdGVUaW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IsIFN0ZXBS
YW5nZTo6U2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRp
b24oZGF0ZVRpbWVMb2NhbERlZmF1bHRTdGVwLCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNl
LCBkYXRlVGltZUxvY2FsU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcik7CiAKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7CiAgICAgY29u
c3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJp
YnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11
bURhdGVUaW1lKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXgg
ZGFlMTc4Mi4uZTZlMDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KIApAQCAtNDQsMTAg
KzQ1LDEwIEBAIHN0YXRpYyBib29sIGlzVmFsaWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBh
ZGRyZXNzKQogICAgIGlmICghYWRkcmVzc0xlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEpTQzo6WWFycjo6UmVn
dWxhckV4cHJlc3Npb24sIHJlZ0V4cCwgKGVtYWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2
ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJF
eHByZXNzaW9uPiByZWdFeHAoZW1haWxQYXR0ZXJuLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKIAog
ICAgIGludCBtYXRjaExlbmd0aDsKLSAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAubWF0Y2go
YWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKKyAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAu
Z2V0KCkubWF0Y2goYWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKIAogICAgIHJldHVybiAhbWF0
Y2hPZmZzZXQgJiYgbWF0Y2hMZW5ndGggPT0gYWRkcmVzc0xlbmd0aDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggYjBmM2E5Mi4uY2RjN2IxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzMyw3ICszMzQsNyBAQCBBdG9t
aWNTdHJpbmcgRm9ybUtleUdlbmVyYXRvcjo6Zm9ybUtleShjb25zdCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlJiBjbwogewogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IG93bmVy
Rm9ybUZvclN0YXRlKGNvbnRyb2wpOwogICAgIGlmICghZm9ybSkgewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmb3JtS2V5Rm9yTm9Pd25lciwg
KCJObyBvd25lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZm9ybUtleUZvck5vT3duZXIo
Ik5vIG93bmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAg
IHJldHVybiBmb3JtS2V5Rm9yTm9Pd25lcjsKICAgICB9CiAgICAgRm9ybVRvS2V5TWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fZm9ybVRvS2V5TWFwLmZpbmQoZm9ybSk7CkBAIC0zODYsNyArMzg3
LDcgQEAgc3RhdGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogICAgIC8vIEluIHRoZSBs
ZWdhY3kgdmVyc2lvbiBvZiBzZXJpYWxpemVkIHN0YXRlLCB0aGUgZmlyc3QgaXRlbSB3YXMgYSBu
YW1lCiAgICAgLy8gYXR0cmlidXRlIHZhbHVlIG9mIGEgZm9ybSBjb250cm9sLiBUaGUgZm9sbG93
aW5nIHN0cmluZyBsaXRlcmFsIHNob3VsZAogICAgIC8vIGNvbnRhaW4gc29tZSBjaGFyYWN0ZXJz
IHdoaWNoIGFyZSByYXJlbHkgdXNlZCBmb3IgbmFtZSBhdHRyaWJ1dGUgdmFsdWVzLgotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNpZ25hdHVyZSwgKEFTQ0lJTGl0
ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxuXHI9
JiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2lnbmF0dXJlKEFTQ0lJ
TGl0ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxu
XHI9JiIpKTsKICAgICByZXR1cm4gc2lnbmF0dXJlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDllYWVjZmQuLjQxOWE0YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC02MTksNyArNjE5LDcgQEAgdHlw
ZWRlZiBIYXNoTWFwPGNvbnN0IEhUTUxBbmNob3JFbGVtZW50KiwgUmVmUHRyPEVsZW1lbnQ+PiBS
b290RWRpdGFibGVFbGVtZW50TWEKIAogc3RhdGljIFJvb3RFZGl0YWJsZUVsZW1lbnRNYXAmIHJv
b3RFZGl0YWJsZUVsZW1lbnRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChSb290RWRpdGFibGVFbGVtZW50TWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Um9vdEVkaXRhYmxlRWxlbWVudE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggMmU3M2Rl
ZC4uZGY4ZTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAK
QEAgLTY1LDE1ICs2NSwxNSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxCdXR0b25FbGVtZW50
Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAg
ICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJtaXQsICgic3VibWl0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VibWl0KCJzdWJtaXQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgICAgIHJldHVybiBzdWJtaXQ7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBCVVRUT046IHsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJ1dHRvbiwgKCJidXR0b24iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBidXR0b24oImJ1dHRvbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbjsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIFJFU0VUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCByZXNldCwgKCJyZXNldCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHJlc2V0KCJyZXNldCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAgICAgcmV0dXJuIHJlc2V0
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAKaW5kZXggOTE2MmFmYy4uZDA4N2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBIVE1MRmll
bGRTZXRFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZpZWxkc2V0
LCAoImZpZWxkc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZpZWxkc2V0KCJmaWVs
ZHNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBm
aWVsZHNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVP
d25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgKaW5kZXggMDFmYTcwMC4uOTY2NzFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg4LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVy
Tm9kZSo+JiBkaXNhYmxlZFN1YnRyZWVSb290cygpCiAgICAgewotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+LCBub2Rl
cywgKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaENvdW50ZWRTZXQ8Q29u
dGFpbmVyTm9kZSo+PiBub2RlczsKICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAppbmRleCBhYTA5MWZiLi44OTQ0
YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogICAgIEtleWdlblNlbGVjdEVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICA6IEhUTUxTZWxlY3RFbGVtZW50KHNlbGVj
dFRhZywgZG9jdW1lbnQsIDApCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwc2V1ZG9JZCwgKCItd2Via2l0LWtleWdlbi1zZWxlY3Qi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LWtleWdlbi1zZWxl
Y3QiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgc2V0UHNl
dWRvKHBzZXVkb0lkKTsKICAgICB9CiAKQEAgLTExMiw3ICsxMTMsNyBAQCBib29sIEhUTUxLZXln
ZW5FbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kZWRfdmFsdWVzLCBi
b29sKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxLZXlnZW5FbGVtZW50Ojpmb3JtQ29udHJv
bFR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGtleWdlbiwgKCJrZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4ga2V5Z2VuKCJrZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4ga2V5Z2VuOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKaW5kZXggYjU4MzIyMy4uMWM0OWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBzdGF0aWMgTGlua0V2ZW50U2VuZGVyJiBsaW5rTG9hZEV2ZW50U2VuZGVyKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTGlua0V2ZW50U2VuZGVyLCBzaGFy
ZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPExpbmtFdmVudFNlbmRlcj4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyKGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwogICAgIHJldHVybiBzaGFyZWRMb2FkRXZlbnRTZW5kZXI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDgxNTE2
ZmEuLjY4NGQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtMjA1LDcgKzIwNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB0eXBlZGVmIEhh
c2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVt
ZW50U2V0TWFwOwogc3RhdGljIERvY3VtZW50RWxlbWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1l
bnRTZXRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEb2N1bWVu
dEVsZW1lbnRTZXRNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEb2N1
bWVudEVsZW1lbnRTZXRNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGFiYTAwMWIuLmM0NTZlNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00MDQsOCArNDA0
LDggQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkLCBhbGwgY2FsbGVycyBhcmUgYWxtb3N0IGNl
cnRhaW5seSB3cm9uZy4KIHN0YXRpYyBib29sIGlzUmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIHRhZ0xpc3QsICgpKTsKLSAgICBpZiAodGFn
TGlzdC5pc0VtcHR5KCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4+IHRhZ0xpc3Q7CisgICAgaWYgKHRhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGF1dG8qIHRhZ3MgPSBIVE1MTmFtZXM6OmdldEhUTUxUYWdzKCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRNTE5hbWVzOjpIVE1MVGFnc0NvdW50OyBpKysp
IHsKICAgICAgICAgICAgIGlmICgqdGFnc1tpXSA9PSBiZ3NvdW5kVGFnCkBAIC00MjAsMTAgKzQy
MCwxMCBAQCBzdGF0aWMgYm9vbCBpc1JlY29nbml6ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUpCiAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IGNoYW5nZXMgaG93
IHdlIHBhcnNlIGRvY3VtZW50cy4KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHRhZ0xpc3QuYWRkKHRhZ3NbaV0tPmxvY2FsTmFtZSgpLmltcGwo
KSk7CisgICAgICAgICAgICB0YWdMaXN0LmdldCgpLmFkZCh0YWdzW2ldLT5sb2NhbE5hbWUoKS5p
bXBsKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiB0YWdMaXN0LmNvbnRhaW5zKHRh
Z05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICByZXR1cm4gdGFnTGlzdC5nZXQoKS5jb250
YWlucyh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVs
ZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50LmNwcAppbmRleCBlMGJkOGNmLi44NjIyNjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBI
VE1MT3B0R3JvdXBFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcHRn
cm91cCwgKCJvcHRncm91cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBvcHRncm91cCgi
b3B0Z3JvdXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gb3B0Z3JvdXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91
dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5j
cHAKaW5kZXggMmY2YmE3Yi4uZWRkYTRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01NCw3ICs1NSw3IEBAIFJlZjxIVE1MT3V0cHV0RWxlbWVudD4gSFRN
TE91dHB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgp
IGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21p
Y1N0cmluZywgb3V0cHV0LCAoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBv
dXRwdXQoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBvdXRwdXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKaW5kZXggMDExNzVkOS4uNTdhNTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3Ry
YXIoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4mKTsKIAogc3RhdGljIFZlY3RvcjxSZXBsYWNlbWVu
dFBsdWdpbio+JiByZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFJlcGxhY2VtZW50UGx1Z2luKj4sIHJlZ2lz
dGVyZWRSZXBsYWNlbWVudHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9y
PFJlcGxhY2VtZW50UGx1Z2luKj4+IHJlZ2lzdGVyZWRSZXBsYWNlbWVudHM7CiAgICAgc3RhdGlj
IGJvb2wgZW5naW5lc1F1ZXJpZWQgPSBmYWxzZTsKICAgICAKICAgICBpZiAoZW5naW5lc1F1ZXJp
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApp
bmRleCBkNjhhNTk5Li4wOWU3YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTc0LDI5ICs3NCwyOSBAQCBzdGF0aWMgY29uc3QgYXV0
byByZW1vdmVTbmFwc2hvdFRpbWVyRGVsYXkgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHsg
MTUwMCB9OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJp
bmcgbWltZVR5cGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE1pbWVU
eXBlVG9Mb2NhbGl6ZWRTdHJpbmdNYXAsIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLCAoKSk7Ci0g
ICAgU3RyaW5nIHRpdGxlVGV4dCA9IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLmdldChtaW1lVHlw
ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1pbWVUeXBlVG9Mb2NhbGl6ZWRTdHJpbmdN
YXA+IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwOworICAgIFN0cmluZyB0aXRsZVRleHQgPSBtaW1l
VHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5nZXQobWltZVR5cGUpOwogICAgIGlmICghdGl0bGVU
ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIAogICAgIHRpdGxlVGV4
dCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxUaXRsZShtaW1lVHlw
ZSk7CiAgICAgaWYgKHRpdGxlVGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHRpdGxlVGV4dCA9IHNu
YXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpOwotICAgIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFw
LnNldChtaW1lVHlwZSwgdGl0bGVUZXh0KTsKKyAgICBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5n
ZXQoKS5zZXQobWltZVR5cGUsIHRpdGxlVGV4dCk7CiAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIH07
CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgc3VidGl0bGVUZXh0KFBhZ2UqIHBhZ2UsIFN0cmluZyBt
aW1lVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTWltZVR5cGVU
b0xvY2FsaXplZFN0cmluZ01hcCwgbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAsICgpKTsKLSAg
ICBTdHJpbmcgc3VidGl0bGVUZXh0ID0gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuZ2V0KG1p
bWVUeXBlKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWltZVR5cGVUb0xvY2FsaXplZFN0
cmluZ01hcD4gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXA7CisgICAgU3RyaW5nIHN1YnRpdGxl
VGV4dCA9IG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLmdldChtaW1lVHlwZSk7CiAg
ICAgaWYgKCFzdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3VidGl0bGVU
ZXh0OwogCiAgICAgc3VidGl0bGVUZXh0ID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0lu
U3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBlKTsKICAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1w
dHkoKSkKICAgICAgICAgc3VidGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRp
dGxlKCk7Ci0gICAgbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuc2V0KG1pbWVUeXBlLCBzdWJ0
aXRsZVRleHQpOworICAgIG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLnNldChtaW1l
VHlwZSwgc3VidGl0bGVUZXh0KTsKICAgICByZXR1cm4gc3VidGl0bGVUZXh0OwogfTsKIApAQCAt
NDA4LDExICs0MDgsMTEgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2Vy
QWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVybGF5KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0
b3IsICgiLnNuYXBzaG90LW92ZXJsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc2VsZWN0b3Io
Ii5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgU2hhZG93Um9vdCogc2hhZG93ID0gdXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlm
ICghc2hhZG93KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHNu
YXBzaG90TGFiZWwgPSBzaGFkb3ctPnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IsIEFTU0VSVF9OT19F
WENFUFRJT04pOworICAgIFJlZlB0cjxFbGVtZW50PiBzbmFwc2hvdExhYmVsID0gc2hhZG93LT5x
dWVyeVNlbGVjdG9yKHNlbGVjdG9yLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBy
ZXR1cm4gbm9kZSAmJiBzbmFwc2hvdExhYmVsICYmIChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0
KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yoc25hcHNob3RMYWJlbC5nZXQoKSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU3MzA0N2YuLmFl
ZGVkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC05
Nyw4ICs5Nyw4IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxl
OjpDaGFuZ2Ugc3R5bGVDaGFuZ2UpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVs
ZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2VsZWN0TXVsdGlwbGUsICgic2VsZWN0
LW11bHRpcGxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNlbGVjdE9u
ZSwgKCJzZWxlY3Qtb25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNlbGVjdE11bHRp
cGxlKCJzZWxlY3QtbXVsdGlwbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzZWxlY3RP
bmUoInNlbGVjdC1vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gbV9tdWx0aXBsZSA/IHNlbGVjdE11bHRpcGxlIDogc2VsZWN0T25lOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAppbmRleCBhY2VkZWQ0Li41MWM2
ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIFN0eWxlRXZlbnRT
ZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3R5bGVFdmVudFNlbmRlciwgc2hhcmVkTG9hZEV2ZW50U2VuZGVyLCAoZXZl
bnROYW1lcygpLmxvYWRFdmVudCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHlsZUV2
ZW50U2VuZGVyPiBzaGFyZWRMb2FkRXZlbnRTZW5kZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7
CiAgICAgcmV0dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNzg5NDM3Yy4uMmM4Y2U0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xMTUsNyAr
MTE1LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRleHRBcmVh
RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0ZXh0YXJlYSwgKCJ0ZXh0YXJlYSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0ZXh0YXJlYSgidGV4dGFyZWEiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gdGV4dGFyZWE7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggZDdmMDczNy4uMDk2MzcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTM3NSw5ICszNzUsOSBAQCBpbnQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVTZWxlY3Rpb25FbmQoKSBjb25zdAog
CiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcoVGV4dEZpZWxkU2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBub25lLCAoIm5vbmUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9yd2FyZCwgKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJhY2t3YXJkLCAoImJhY2t3YXJkIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBmb3J3YXJkKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmFja3dhcmQo
ImJhY2t3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDEzMTBjZTkuLjVjYmYyZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC02NCwxMCArNjQsMTAg
QEAgYm9vbCBJbWFnZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNv
ZGluZywgYm9vbCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG90WFN0cmluZywgKEFTQ0lJTGl0
ZXJhbCgiLngiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGRvdFlTdHJpbmcsIChBU0NJSUxpdGVyYWwoIi55IikpKTsKLSAgICBlbmNvZGluZy5hcHBlbmRE
YXRhKG5hbWUgKyBkb3RYU3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueCgpKTsKLSAgICBlbmNvZGlu
Zy5hcHBlbmREYXRhKG5hbWUgKyBkb3RZU3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkb3RYU3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
LngiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZG90WVN0cmluZyhBU0NJ
SUxpdGVyYWwoIi55IikpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSArIGRvdFhTdHJp
bmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi54KCkpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEo
bmFtZSArIGRvdFlTdHJpbmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi55KCkpOwogCiAgICAgaWYg
KCFlbGVtZW50KCkudmFsdWUoKS5pc0VtcHR5KCkpCiAgICAgICAgIGVuY29kaW5nLmFwcGVuZERh
dGEobmFtZSwgZWxlbWVudCgpLnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5h
bWVzLmNwcAppbmRleCBhYzA4OTZhLi40Mzg3NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZU5hbWVzLmNwcApAQCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgSW5wdXRUeXBlTmFtZXMgewpA
QCAtMzEsMTM5ICszMywxMzkgQEAgbmFtZXNwYWNlIElucHV0VHlwZU5hbWVzIHsKIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBidXR0b24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGNoZWNrYm94KCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImNo
ZWNrYm94IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImNoZWNrYm94IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgY29sb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
bmFtZSgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBy
ZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBkYXRlKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImRhdGUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiZGF0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IGRhdGV0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBuYW1lLCAoImRhdGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImRh
dGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWVsb2NhbCgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRl
dGltZS1sb2NhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJkYXRldGltZS1sb2NhbCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImVtYWlsIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5hbWUoImVtYWlsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgZmlsZSgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwg
KCJmaWxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImZpbGUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBoaWRkZW4oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIG5hbWUsICgiaGlkZGVuIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5h
bWUoImhpZGRlbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImltYWdlIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImltYWdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbW9udGgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIG5hbWUsICgibW9udGgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgibW9udGgi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBudW1iZXIoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgibnVtYmVyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IG5hbWUoIm51bWJlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3N3
b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBuYW1lLCAoInBhc3N3b3JkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInBhc3N3b3Jk
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaW8oKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgicmFkaW8iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gbmFtZSgicmFkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiByYW5nZSgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFt
ZSwgKCJyYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJyYW5nZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInNlYXJj
aCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJzZWFyY2giLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBzdWJtaXQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIG5hbWUsICgic3VibWl0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUo
InN1Ym1pdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHRlbGVwaG9uZSgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ0ZWwiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGVsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
dGV4dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgbmFtZSwgKCJ0ZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInRleHQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiB0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInRpbWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gbmFtZSgidGltZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHVybCgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ1cmwiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidXJsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
d2VlaygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgbmFtZSwgKCJ3ZWVrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoIndlZWsiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IGRiYjAyYWIuLjQ3YTk1
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKQEAgLTI5MCwxOSAr
MjkwLDE5IEBAIHZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChib29sIGZsYWcpCiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBsYXliYWNrU3RhdGVXYWl0aW5nKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB3YWl0aW5nLCAoIndh
aXRpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gd2FpdGluZygid2FpdGluZyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiB3YWl0aW5nOwogfQogCiBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwbGF5YmFja1N0YXRlUGxheWluZygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGxheWluZywgKCJw
bGF5aW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBsYXlpbmcoInBsYXlpbmciLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcGxheWluZzsKIH0KIAog
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGxheWJhY2tTdGF0ZUVuZGVkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbmRlZCwgKCJlbmRl
ZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggNDcyOTg3Mi4uNjBjMzE2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkwLDcgKzkxLDcgQEAgRGVjaW1hbCBNb250aElucHV0
VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIE1vbnRoSW5w
dXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykg
Y29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJh
bmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKG1vbnRoRGVmYXVsdFN0ZXAs
IG1vbnRoRGVmYXVsdFN0ZXBCYXNlLCBtb250aFN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQ
YXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0ZXBEZXNjcmlwdGlvbihtb250
aERlZmF1bHRTdGVwLCBtb250aERlZmF1bHRTdGVwQmFzZSwgbW9udGhTdGVwU2NhbGVGYWN0b3Is
IFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0
IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmli
dXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKG1vbnRoRGVmYXVsdFN0ZXBCYXNlKSk7
CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFz
dEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50
czo6bWluaW11bU1vbnRoKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNw
cAppbmRleCBmZDM1YmI4Li5mNjYwNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnR5cGVN
aXNtYXRjaCgpIGNvbnN0CiAKIFN0ZXBSYW5nZSBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBS
YW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlv
biwgc3RlcERlc2NyaXB0aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVw
QmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRpb24obnVtYmVy
RGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9y
KTsKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJU
eXBlKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3Rl
cEJhc2UpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1heCBmb3IgbnVtYmVyIGlucHV0IHR5cGUuCiAgICAgY29uc3QgRGVjaW1hbCBmbG9hdE1h
eCA9IERlY2ltYWw6OmZyb21Eb3VibGUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggMjRmN2JiYy4uZTBk
NzcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTExMyw3ICsx
MTMsNyBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QKIAog
U3RlcFJhbmdlIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5n
IGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwg
KHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZh
Y3RvcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVs
dFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3Rvcik7CiAKICAgICBjb25zdCBEZWNpbWFsIG1p
bmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIp
LCByYW5nZURlZmF1bHRNaW5pbXVtKTsKICAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBlbnN1
cmVNYXhpbXVtKHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0
ciksIHJhbmdlRGVmYXVsdE1heGltdW0pLCBtaW5pbXVtLCByYW5nZURlZmF1bHRNYXhpbXVtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCBjNDc3MThhLi5lYmYzMWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNjUsMTMgKzY2LDEzIEBAIFN0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0
IERlY2ltYWwmIHN0ZXBCYXNlLCBjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25zdCBEZWNpCiBE
ZWNpbWFsIFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9yKCkgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHVzZSBEQkxfTUFOVF9ESUcgaW5zdGVhZCBvZiBGTFRfTUFOVF9ESUcgcmVn
YXJkaW5nIHRvIEhUTUw1IHNwZWNpZmljYXRpb24uCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IERlY2ltYWwsIHR3b1Bvd2VyT2ZGbG9hdE1hbnRpc3NhQml0cywgKERl
Y2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgRGVjaW1hbD4gdHdvUG93ZXJPZkZsb2F0TWFudGlz
c2FCaXRzKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcp
OwogICAgIHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5zdGVwVmFsdWVTaG91bGRCZSA9PSBTdGVw
VmFsdWVTaG91bGRCZVJlYWwgPyBtX3N0ZXAgLyB0d29Qb3dlck9mRmxvYXRNYW50aXNzYUJpdHMg
OiBEZWNpbWFsKDApOwogfQogCiBEZWNpbWFsIFN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAo
Y29uc3QgRGVjaW1hbCYgY3VycmVudFZhbHVlLCBjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSkgY29u
c3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwg
dGVuUG93ZXJPZjIxLCAoRGVjaW1hbDo6UG9zaXRpdmUsIDIxLCAxKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IERlY2ltYWw+IHRlblBvd2VyT2YyMShEZWNpbWFsOjpQb3NpdGl2
ZSwgMjEsIDEpOwogICAgIGlmIChuZXdWYWx1ZSA+PSB0ZW5Qb3dlck9mMjEpCiAgICAgICAgIHJl
dHVybiBuZXdWYWx1ZTsKIApAQCAtMTUwLDcgKzE1MSw3IEBAIGJvb2wgU3RlcFJhbmdlOjpzdGVw
TWlzbWF0Y2goY29uc3QgRGVjaW1hbCYgdmFsdWVGb3JDaGVjaykgY29uc3QKICAgICAvLyBEZWNp
bWFsJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0LiBJZiB0aGUgY3Vy
cmVudCB2YWx1ZQogICAgIC8vIGlzIGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJMX01BTlRfRElHLCB0
aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIGZvcgogICAgIC8vIHJlbWFpbmRlciBtYWtlcyBubyBz
ZW5zZS4KLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwg
dHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cywgKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5U
NjRfQygxKSA8PCBEQkxfTUFOVF9ESUcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgRGVjaW1hbD4gdHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cyhEZWNpbWFsOjpQb3NpdGl2
ZSwgMCwgVUlOVDY0X0MoMSkgPDwgREJMX01BTlRfRElHKTsKICAgICBpZiAodmFsdWUgLyB0d29Q
b3dlck9mRG91YmxlTWFudGlzc2FCaXRzID4gbV9zdGVwKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgLy8gVGhlIGNvbXB1dGF0aW9uIGZvbGxvd3MgSFRNTDUgNC4xMC43LjIuMTAgYFRoZSBz
dGVwIGF0dHJpYnV0ZScgOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKaW5kZXgg
YzA5MDQxOS4uODczYmM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCkBA
IC03Nyw3ICs3Nyw3IEBAIERlY2ltYWwgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3Rl
cFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShB
bnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3Rl
cERlc2NyaXB0aW9uLCAodGltZURlZmF1bHRTdGVwLCB0aW1lRGVmYXVsdFN0ZXBCYXNlLCB0aW1l
U3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdl
cikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNj
cmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHRpbWVEZWZhdWx0U3RlcCwgdGltZURlZmF1bHRTdGVw
QmFzZSwgdGltZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91
bGRCZUludGVnZXIpOwogCiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1i
ZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwogICAgIGNvbnN0IERl
Y2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUo
bWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1UaW1l
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCmluZGV4IDg0Y2E5ODguLjE4
YzA0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcApAQCAtNTYsNyArNTYs
NyBAQCBEYXRlQ29tcG9uZW50czo6VHlwZSBXZWVrSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0
CiAKIFN0ZXBSYW5nZSBXZWVrSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRs
aW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlv
biwgKHdlZWtEZWZhdWx0U3RlcCwgd2Vla0RlZmF1bHRTdGVwQmFzZSwgd2Vla1N0ZXBTY2FsZUZh
Y3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0
ZXBEZXNjcmlwdGlvbih3ZWVrRGVmYXVsdFN0ZXAsIHdlZWtEZWZhdWx0U3RlcEJhc2UsIHdlZWtT
dGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2Vy
KTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQo
KS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlKTsKICAgICBj
b25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0
cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjptaW5p
bXVtV2VlaygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA2NTQyN2ExLi5hNjAzMzdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYg
VVNFKENHKQpAQCAtMTk1OSw3ICsxOTYwLDcgQEAgUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjp3ZWJraXRHZXRJbWFnZURhdGFIRChmbG9hdCBzeCwgZmxvYXQKIFJl
ZlB0cjxJbWFnZURhdGE+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRhKElt
YWdlQnVmZmVyOjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0sIGZsb2F0IHN4LCBm
bG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsK
ICAgICBpZiAoIWNhbnZhcygpLT5vcmlnaW5DbGVhbigpKSB7Ci0gICAgICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0aGUgY2FudmFz
IGhhcyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEuIikpKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJV
bmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0aGUgY2FudmFzIGhh
cyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEuIikpOwogICAgICAgICBjYW52YXMo
KS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UpOwogICAgICAgICBlYyA9IFNFQ1VS
SVRZX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGQ5YWUxMmEuLmExOTFmMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk
ZSAiWExpbmtOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNzMsNyArMjc0LDcgQEAgdm9pZCBYU1NBdWRpdG9yOjpp
bml0KERvY3VtZW50KiBkb2N1bWVudCwgWFNTQXVkaXRvckRlbGVnYXRlKiBhdWRpdG9yRGVsZWdh
dGUpCiAKICAgICBTdHJpbmcgaHR0cEJvZHlBc1N0cmluZzsKICAgICBpZiAoRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyID0gZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCkpIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgWFNTUHJvdGVjdGlvbkhlYWRlciwgKEFTQ0lJTGl0ZXJhbCgiWC1YU1MtUHJvdGVjdGlvbiIp
KSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IFhTU1Byb3RlY3Rpb25I
ZWFkZXIoQVNDSUlMaXRlcmFsKCJYLVhTUy1Qcm90ZWN0aW9uIikpOwogICAgICAgICBTdHJpbmcg
aGVhZGVyVmFsdWUgPSBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQo
WFNTUHJvdGVjdGlvbkhlYWRlcik7CiAgICAgICAgIFN0cmluZyBlcnJvckRldGFpbHM7CiAgICAg
ICAgIHVuc2lnbmVkIGVycm9yUG9zaXRpb24gPSAwOwpAQCAtNTIzLDcgKzUyNCw3IEBAIGJvb2wg
WFNTQXVkaXRvcjo6ZmlsdGVyQnV0dG9uVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiBy
ZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5q
ZWN0ZWQoY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNhZmVKYXZhU2NyaXB0VVJMLCAoQVNDSUlM
aXRlcmFsKCJqYXZhc2NyaXB0OnZvaWQoMCkiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHNhZmVKYXZhU2NyaXB0VVJMKEFTQ0lJTGl0ZXJhbCgiamF2YXNjcmlwdDp2b2lk
KDApIikpOwogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVxdWVzdC50b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyArK2kpIHsK
QEAgLTUzOCw3ICs1MzksNyBAQCBib29sIFhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmli
dXRlc0lmSW5qZWN0ZWQoY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIHJlcXVlc3QudG9rZW4uZXJhc2VWYWx1ZU9mQXR0cmlidXRlKGkp
OwogICAgICAgICBpZiAodmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwpCi0gICAgICAgICAgICBy
ZXF1ZXN0LnRva2VuLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoaSwgc2FmZUphdmFTY3JpcHRVUkwp
OworICAgICAgICAgICAgcmVxdWVzdC50b2tlbi5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGksIHNh
ZmVKYXZhU2NyaXB0VVJMLmdldCgpKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgPSB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggMDc5YmMwZi4uZjdh
M2M3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcApAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
CiB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRl
RGlzcGxheSgpCiB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdGVkQ2xhc3NWYWx1ZSwgKCJzZWxl
Y3RlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzZWxlY3RlZENsYXNzVmFsdWUoInNlbGVjdGVk
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAoIW1lZGlh
Q29udHJvbGxlcigpLT5oYXNDbG9zZWRDYXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC0x
MDM4LDcgKzEwMzgsNyBAQCBSZWY8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50PiBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZQogCiBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBnZXRNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnRT
aGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1k
aXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGlkKCItd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXRpbWUtcmVtYWluaW5nLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gaWQ7CiB9CiAKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIFJlZjxNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xDdXJyZW50VGlt
ZURpc3BsYXlFbGVtZW50CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGdldE1lZGlhQ29u
dHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1t
ZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBpZCgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBpZDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKaW5k
ZXggMTY0NWI4Mi4uODA4MmNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTWV0ZXJTaGFk
b3dFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIE1l
dGVySW5uZXJFbGVtZW50OjpNZXRlcklubmVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgOiBNZXRlclNoYWRvd0VsZW1lbnQoZG9jdW1lbnQpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1p
bm5lci1lbGVtZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LW1l
dGVyLWlubmVyLWVsZW1lbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBzZXRQc2V1ZG8ocHNldWRvSWQpOwogfQogCkBAIC04MCw5ICs4MCw5IEBAIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWV0ZXJWYWx1ZUVsZW1lbnQ6
OnZhbHVlUHNldWRvSWQoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG9wdGltdW1Qc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLW9wdGlt
dW0tdmFsdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc3Vib3B0aW11bVBzZXVk
b0lkLCAoIi13ZWJraXQtbWV0ZXItc3Vib3B0aW11bS12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBldmVuTGVzc0dvb2RQc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLWV2ZW4t
bGVzcy1nb29kLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wdGltdW1Qc2V1ZG9JZCgi
LXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc3Vib3B0
aW11bVBzZXVkb0lkKCItd2Via2l0LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBldmVuTGVzc0dvb2RQc2V1ZG9JZCgiLXdlYmtpdC1tZXRlci1ldmVuLWxlc3Mt
Z29vZC12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAg
SFRNTE1ldGVyRWxlbWVudCogbWV0ZXIgPSBtZXRlckVsZW1lbnQoKTsKICAgICBpZiAoIW1ldGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaApp
bmRleCA0ZjliMzA0Li43NzA2YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZXRlclNoYWRvd0VsZW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShNRVRF
Ul9FTEVNRU5UKQogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC03NSw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgTWV0ZXJCYXJFbGVtZW50
KERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgOiBNZXRlclNoYWRvd0VsZW1lbnQoZG9jdW1l
bnQpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBwc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLWJhciIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gcHNldWRvSWQoIi13ZWJraXQtbWV0ZXItYmFyIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHNldFBzZXVkbyhwc2V1ZG9JZCk7CiAgICAgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCmluZGV4IGZiNTgzMzYuLjBkODkxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNTc2LDEzICs1NzYsMTMgQEAgSFRN
TElucHV0RWxlbWVudCogU2xpZGVyVGh1bWJFbGVtZW50Ojpob3N0SW5wdXQoKSBjb25zdAogCiBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzbGlkZXJUaHVtYlNoYWRvd1BzZXVkb0lkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBz
bGlkZXJUaHVtYiwgKCItd2Via2l0LXNsaWRlci10aHVtYiIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBzbGlkZXJUaHVtYigiLXdlYmtpdC1zbGlkZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc2xpZGVyVGh1bWI7CiB9CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhU2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgbWVkaWFTbGlkZXJUaHVtYiwgKCItd2Via2l0LW1lZGlhLXNsaWRlci10aHVtYiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBtZWRpYVNsaWRlclRodW1iKCItd2Via2l0LW1lZGlhLXNs
aWRlci10aHVtYiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBtZWRpYVNsaWRlclRodW1iOwogfQogCkBAIC02NDIsOCArNjQyLDggQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
CiAgICAgLy8gdGhhdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBzdHlsZSwgd2hpY2ggbWVhbnMgdGhl
IHN0eWxlIG5lZWRzIHRvIGJlIGNvbXB1dGVkIHR3aWNlIHRvIGdldAogICAgIC8vIGEgY29ycmVj
dCB2YWx1ZTogb25jZSB0byBnZXQgdGhlIElucHV0J3MgYXBwZWFyYW5jZSwgdGhlbiBhIHNlY29u
ZCB0aW1lIHRvIHN0eWxlIHRoZSBzaGFkb3cgdHJlZSBjb3JyZWN0bHkuCiAKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtZWRpYVNsaWRlckNv
bnRhaW5lciwgKCItd2Via2l0LW1lZGlhLXNsaWRlci1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2xpZGVyQ29udGFpbmVyLCAoIi13ZWJraXQtc2xpZGVy
LWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBtZWRpYVNsaWRlckNvbnRh
aW5lcigiLXdlYmtpdC1tZWRpYS1zbGlkZXItY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gc2xpZGVyQ29udGFpbmVyKCItd2Via2l0LXNsaWRlci1jb250YWluZXIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIGlmICghaXM8SFRNTElucHV0
RWxlbWVudD4oKnNoYWRvd0hvc3QoKSkpCiAgICAgICAgIHJldHVybiBzbGlkZXJDb250YWluZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcAppbmRleCA4NzMyOTI1Li5h
NDJlMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTM4
LDQyICszOCw0MyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZlLCAoImFsdGVy
bmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHRlcm5h
dGl2ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktl
eXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIGRlc2NyaXB0aW9uLCAoImRlc2NyaXB0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IGRlc2NyaXB0aW9uKCJkZXNjcmlwdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWFpbiwgKCJtYWluIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IG1haW4oIm1haW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gbWFpbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1Ry
YWNrOjptYWluRGVzY0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW5EZXNjLCAoIm1haW4tZGVzYyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBtYWluRGVzYygibWFpbi1kZXNjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1haW5EZXNjOwogfQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhbnNsYXRpb24sICgi
dHJhbnNsYXRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdHJhbnNsYXRpb24oInRyYW5zbGF0
aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHRy
YW5zbGF0aW9uOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRh
cnlLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBjb21tZW50YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gY29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggMGQ5YTJiNi4uNzI5ZjUyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtNDksNTUgKzQ5LDU1IEBAIHN0YXRpYyBj
b25zdCBpbnQgaW52YWxpZFRyYWNrSW5kZXggPSAtMTsKIAogY29uc3QgQXRvbWljU3RyaW5nJiBU
ZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc3VidGl0bGVzOwogfQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0
aW9ucywgKCJjYXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjYXB0aW9ucygi
Y2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gY2FwdGlvbnM7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpkZXNjcmlw
dGlvbnNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbnMsICgiZGVzY3JpcHRpb25zIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IGRlc2NyaXB0aW9ucygiZGVzY3JpcHRpb25zIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uczsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmNoYXB0ZXJzS2V5d29yZCgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2hh
cHRlcnMsICgiY2hhcHRlcnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2hhcHRlcnMo
ImNoYXB0ZXJzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIGNoYXB0ZXJzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6bWV0YWRh
dGFLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBtZXRhZGF0YSwgKCJtZXRhZGF0YSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBtZXRhZGF0YSgibWV0YWRhdGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gbWV0YWRhdGE7CiB9CiAgICAgCiBjb25zdCBBdG9taWNTdHJp
bmcmIFRleHRUcmFjazo6Zm9yY2VkS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9yY2VkLCAoImZvcmNlZCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBmb3JjZWQoImZvcmNlZCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBmb3JjZWQ7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgVGV4dFRyYWNrOjpkaXNhYmxlZEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG9wZW4sICgiZGlzYWJsZWQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gb3BlbigiZGlzYWJsZWQiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gb3BlbjsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNsb3NlZCwgKCJoaWRk
ZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2xvc2VkKCJoaWRkZW4iLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY2xvc2VkOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGVuZGVkLCAo
InNob3dpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZW5kZWQoInNob3dpbmciLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IDY0ZTZmZDIu
LjdlNTkyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBjdWVTaGFkb3dQc2V1ZG9JZCgpCiAgICAgewotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjdWUsICgiY3VlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjdWUoImN1ZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gY3VlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IDdhYzg2NjEuLjAyMzBmNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTcyLDMxICs3MiwzMSBAQCBDT01QSUxFX0FT
U0VSVChXVEZfQVJSQVlfTEVOR1RIKGRpc3BsYXlBbGlnbm1lbnRNYXApID09IFZUVEN1ZTo6TnVt
YmVyT2ZBbGlnbm1lbgogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiBzdGFydEtleXdvcmQoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0YXJ0LCAo
QVNDSUlMaXRlcmFsKCJzdGFydCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IFN0cmluZz4gc3RhcnQoQVNDSUlMaXRlcmFsKCJzdGFydCIpKTsKICAgICByZXR1cm4gc3RhcnQ7
CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIG1pZGRsZUtleXdvcmQoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIG1pZGRsZSwgKEFTQ0lJTGl0
ZXJhbCgibWlkZGxlIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5n
PiBtaWRkbGUoQVNDSUlMaXRlcmFsKCJtaWRkbGUiKSk7CiAgICAgcmV0dXJuIG1pZGRsZTsKIH0K
IAogc3RhdGljIGNvbnN0IFN0cmluZyYgZW5kS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZW5kLCAoQVNDSUlMaXRlcmFsKCJlbmQi
KSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGVuZChBU0NJSUxp
dGVyYWwoImVuZCIpKTsKICAgICByZXR1cm4gZW5kOwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5n
JiBsZWZ0S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgbGVmdCwgKCJsZWZ0IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IGxlZnQoImxlZnQiKTsKICAgICByZXR1cm4gbGVmdDsKIH0KIAogc3RhdGlj
IGNvbnN0IFN0cmluZyYgcmlnaHRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCByaWdodCwgKCJyaWdodCIpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiByaWdodCgicmlnaHQiKTsKICAgICByZXR1cm4g
cmlnaHQ7CiB9CiAKQEAgLTEwNywxMyArMTA3LDEzIEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGhv
cml6b250YWxLZXl3b3JkKCkKIAogc3RhdGljIGNvbnN0IFN0cmluZyYgdmVydGljYWxHcm93aW5n
TGVmdEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIHZlcnRpY2FscmwsIChBU0NJSUxpdGVyYWwoInJsIikpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2ZXJ0aWNhbHJsKEFTQ0lJTGl0ZXJhbCgicmwi
KSk7CiAgICAgcmV0dXJuIHZlcnRpY2Fscmw7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHZl
cnRpY2FsR3Jvd2luZ1JpZ2h0S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdmVydGljYWxsciwgKEFTQ0lJTGl0ZXJhbCgibHIiKSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZlcnRpY2FsbHIoQVND
SUlMaXRlcmFsKCJsciIpKTsKICAgICByZXR1cm4gdmVydGljYWxscjsKIH0KIApAQCAtMjI1LDcg
KzIyNSw3IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6
ZSYgdmlkZW9TaXplKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZUVEN1ZUJveDo6dnR0Q3VlQm94
U2hhZG93UHNldWRvSWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkLCAoIi13ZWJr
aXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2st
ZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZDsKIH0KIApAQCAtMjM4LDcgKzIzOCw3IEBA
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVlRUQ3VlOjpj
dWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkLCAo
Ii13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEt
dGV4dC10cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQ7CiB9CiAKQEAg
LTU5Nyw3ICs1OTcsNyBAQCBzdGF0aWMgYm9vbCBpc0N1ZVBhcmFncmFwaFNlcGFyYXRvcihVQ2hh
ciBjaGFyYWN0ZXIpCiAKIHZvaWQgVlRUQ3VlOjpkZXRlcm1pbmVUZXh0RGlyZWN0aW9uKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBydFRhZywg
KEFTQ0lJTGl0ZXJhbCgicnQiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBT
dHJpbmc+IHJ0VGFnKEFTQ0lJTGl0ZXJhbCgicnQiKSk7CiAgICAgY3JlYXRlV2ViVlRUTm9kZVRy
ZWUoKTsKICAgICBpZiAoIW1fd2ViVlRUTm9kZVRyZWUpCiAgICAgICAgIHJldHVybjsKQEAgLTc0
MSw3ICs3NDEsNyBAQCB2b2lkIFZUVEN1ZTo6Y2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKQog
ICAgIAogdm9pZCBWVFRDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMoQ29udGFpbmVyTm9kZSog
cm9vdCwgY29uc3QgTWVkaWFUaW1lJiBwcmV2aW91c1RpbWVzdGFtcCwgY29uc3QgTWVkaWFUaW1l
JiBtb3ZpZVRpbWUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IFN0cmluZywgdGltZXN0YW1wVGFnLCAoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHRpbWVzdGFtcFRhZyhBU0NJSUxp
dGVyYWwoInRpbWVzdGFtcCIpKTsKICAgICAKICAgICBib29sIGlzUGFzdE5vZGUgPSB0cnVlOwog
ICAgIE1lZGlhVGltZSBjdXJyZW50VGltZXN0YW1wID0gcHJldmlvdXNUaW1lc3RhbXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKaW5kZXggODU3OTg2OC4uOTQxMWY3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMTg4LDcgKzE4OCw3
IEBAIHZvaWQgVlRUUmVnaW9uOjpzZXRWaWV3cG9ydEFuY2hvclkoZG91YmxlIHZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKIAogY29uc3QgQXRvbWljU3RyaW5nIFZUVFJlZ2lvbjo6c2Nyb2xsKCkg
Y29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCB1cFNjcm9sbFZhbHVlS2V5d29yZCwgKCJ1cCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiB1cFNjcm9sbFZhbHVlS2V5d29yZCgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKIAogICAgIGlmIChtX3Njcm9sbCkKICAgICAgICAgcmV0dXJuIHVwU2Ny
b2xsVmFsdWVLZXl3b3JkOwpAQCAtMTk4LDcgKzE5OCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyBW
VFRSZWdpb246OnNjcm9sbCgpIGNvbnN0CiAKIHZvaWQgVlRUUmVnaW9uOjpzZXRTY3JvbGwoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdXBTY3JvbGxWYWx1
ZUtleXdvcmQsICgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdXBTY3JvbGxWYWx1
ZUtleXdvcmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAg
ICBpZiAodmFsdWUgIT0gZW1wdHlTdHJpbmcoKSAmJiB2YWx1ZSAhPSB1cFNjcm9sbFZhbHVlS2V5
d29yZCkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CkBAIC0yNjgsNyArMjY4LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIHBhcnNlZEVudGlyZVJ1bihjb25zdCBWVFRTY2FubmVyJiBpbnB1dCwg
Y29uc3QgVlRUU2Nhbm5lcjo6UnUKIAogdm9pZCBWVFRSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVl
KFJlZ2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2Nyb2xsVXBWYWx1
ZUtleXdvcmQsICgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc2Nyb2xsVXBWYWx1
ZUtleXdvcmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAg
ICBWVFRTY2FubmVyOjpSdW4gdmFsdWVSdW4gPSBpbnB1dC5jb2xsZWN0VW50aWw8aXNIVE1MU3Bh
Y2U8VUNoYXI+PigpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBWVFRSZWdpb246OnBhcnNl
U2V0dGluZ1ZhbHVlKFJlZ2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFNjcm9sbDoKLSAgICAgICAgaWYgKGlucHV0
LnNjYW5SdW4odmFsdWVSdW4sIHNjcm9sbFVwVmFsdWVLZXl3b3JkKSkKKyAgICAgICAgaWYgKGlu
cHV0LnNjYW5SdW4odmFsdWVSdW4sIHNjcm9sbFVwVmFsdWVLZXl3b3JkLmdldCgpKSkKICAgICAg
ICAgICAgIG1fc2Nyb2xsID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiVlRUUmVnaW9uOjpwYXJzZVNldHRpbmdWYWx1ZSwgaW52YWxpZCBTY3JvbGwiKTsKQEAg
LTMyNiw3ICszMjYsNyBAQCB2b2lkIFZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUoUmVnaW9u
U2V0dGluZyBzZXR0aW5nLCBWVFRTY2FubmVyJiBpbnB1dCkKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBWVFRSZWdpb246OnRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFj
a1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzLCAoInNjcm9sbGluZyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNz
KCJzY3JvbGxpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAg
IHJldHVybiB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKaW5kZXggOTc0ZTQ5Ny4uNzM0MDkzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBAIC00NywzNyArNDcs
MzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJh
Y2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx0ZXJuYXRpdmUoImFsdGVybmF0aXZlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGFsdGVybmF0aXZl
OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgY2FwdGlvbnMsICgiY2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2Fw
dGlvbnMoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIGNhcHRpb25zOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6
Om1haW5LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNT
dHJpbmc+IGNhcHRpb25zKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIGNhcHRpb25zOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVv
VHJhY2s6OnNpZ25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBzaWduLCAoInNpZ24iLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gc2lnbigic2lnbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBzaWduOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6
OnN1YnRpdGxlc0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc3VidGl0bGVzOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50YXJ5
LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY29tbWVudGFyeSgi
Y29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBjb21tZW50YXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRF
bGVtZW50LmNwcAppbmRleCBhM2MwMzY2Li4xZjYxMGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFnTmFt
ZShXZWJWVFROb2RlVHlwZSBub2RlVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgY1RhZywgKG51bGxBdG9tLCAiYyIsIG51bGxBdG9tKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZUYWcs
IChudWxsQXRvbSwgInYiLCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChRdWFsaWZpZWROYW1lLCBsYW5nVGFnLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0
b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwg
YlRhZywgKG51bGxBdG9tLCAiYiIsIG51bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHVUYWcsIChudWxsQXRvbSwgInUiLCBudWxsQXRv
bSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBp
VGFnLCAobnVsbEF0b20sICJpIiwgbnVsbEF0b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgcnVieVRhZywgKG51bGxBdG9tLCAicnVieSIsIG51
bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5h
bWUsIHJ0VGFnLCAobnVsbEF0b20sICJydCIsIG51bGxBdG9tKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGNUYWcobnVsbEF0b20sICJjIiwgbnVsbEF0b20pOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2VGFnKG51bGxBdG9tLCAi
diIsIG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4g
bGFuZ1RhZyhudWxsQXRvbSwgImxhbmciLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFF1YWxpZmllZE5hbWU+IGJUYWcobnVsbEF0b20sICJiIiwgbnVsbEF0b20pOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxBdG9tLCAidSIs
IG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gaVRh
ZyhudWxsQXRvbSwgImkiLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1
YWxpZmllZE5hbWU+IHJ1YnlUYWcobnVsbEF0b20sICJydWJ5IiwgbnVsbEF0b20pOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydFRhZyhudWxsQXRvbSwgInJ0Iiwg
bnVsbEF0b20pOwogICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKICAgICBjYXNlIFdlYlZUVE5vZGVU
eXBlQ2xhc3M6CiAgICAgICAgIHJldHVybiBjVGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVEVsZW1lbnQuaAppbmRleCA4OWQzZDJjLi41ZWZkYzE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsMTMgKzYz
LDEzIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUF0
dHJpYnV0ZU5hbWUoKQogICAgIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxBdG9tLCAidm9pY2UiLCBudWxsQXRv
bSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VB
dHRyKG51bGxBdG9tLCAidm9pY2UiLCBudWxsQXRvbSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0
dHI7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0
cmlidXRlTmFtZSgpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoUXVhbGlmaWVkTmFtZSwgdm9pY2VBdHRyLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20p
KTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZvaWNlQXR0
cihudWxsQXRvbSwgImxhbmciLCBudWxsQXRvbSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5k
ZXggMTkyMjAxMC4uOWViMTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpoYXNSZXF1
aXJlZEZpbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbGluZSkKIHZvaWQgV2ViVlRUUGFyc2Vy
Ojpjb2xsZWN0TWV0YWRhdGFIZWFkZXIoY29uc3QgU3RyaW5nJiBsaW5lKQogewogICAgIC8vIFdl
YlZUVCBoZWFkZXIgcGFyc2luZyAoV2ViVlRUIHBhcnNlciBhbGdvcml0aG0gc3RlcCAxMikKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCByZWdp
b25IZWFkZXJOYW1lLCAoIlJlZ2lvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiByZWdp
b25IZWFkZXJOYW1lKCJSZWdpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKIAogICAgIC8vIFN0ZXAgMTIuNCBJZiBsaW5lIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgIjoi
IChBIFUrMDAzQSBDT0xPTiksIHRoZW4gc2V0IG1ldGFkYXRhJ3MKICAgICAvLyBuYW1lIHRvIHRo
ZSBzdWJzdHJpbmcgb2YgbGluZSBiZWZvcmUgdGhlIGZpcnN0ICI6IiBjaGFyYWN0ZXIgYW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAx
MWU1MjQ5Li5lOWIzMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTc5LDEwICs3OSwxMCBAQCBlbnVtIEZvcmNlUHNldWRvQ2xhc3NG
bGFncyB7CiAKIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlUHNldWRvQ2xhc3NNYXNrKGNvbnN0IElu
c3BlY3RvckFycmF5JiBwc2V1ZG9DbGFzc0FycmF5KQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGFjdGl2ZSwgKEFTQ0lJTGl0ZXJhbCgiYWN0aXZlIikpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBob3ZlciwgKEFTQ0lJ
TGl0ZXJhbCgiaG92ZXIiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGZvY3VzLCAoQVNDSUlMaXRlcmFsKCJmb2N1cyIpKSk7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdmlzaXRlZCwgKEFTQ0lJTGl0ZXJhbCgidmlzaXRl
ZCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWN0aXZlKEFTQ0lJTGl0
ZXJhbCgiYWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGhvdmVy
KEFTQ0lJTGl0ZXJhbCgiaG92ZXIiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gZm9jdXMoQVNDSUlMaXRlcmFsKCJmb2N1cyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiB2aXNpdGVkKEFTQ0lJTGl0ZXJhbCgidmlzaXRlZCIpKTsKICAgICBpZiAoIXBz
ZXVkb0NsYXNzQXJyYXkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBQc2V1ZG9DbGFzc05vbmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
aW5kZXggNWNlOGMyNi4uZDY2MDIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTIzMCw4ICsyMzAsOCBAQCB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJh
bWUqIGZyYW1lLAogLy9zdGF0aWMKIFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1h
cFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIVFRQSGVhZGVy
LCAoQVNDSUlMaXRlcmFsKCJTb3VyY2VNYXAiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkLCAoQVNDSUlM
aXRlcmFsKCJYLVNvdXJjZU1hcCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc291cmNlTWFwSFRUUEhlYWRlcihBU0NJSUxpdGVyYWwoIlNvdXJjZU1hcCIpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRl
ZChBU0NJSUxpdGVyYWwoIlgtU291cmNlTWFwIikpOwogCiAgICAgaWYgKCFjYWNoZWRSZXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDQxODMzMzAuLjQ3NjFlNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTg4MCw3ICs4ODAsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
U2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIoYwogCiBzdGF0aWMgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2Vs
ZWN0b3I+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1bGVTb3VyY2VEYXRhKiBzb3Vy
Y2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBz
ZWxlY3Rvckxpc3QsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24sIGNvbW1lbnQsICgiL1xc
KlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJs
ZWQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVz
c2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6Ollh
cnI6Ok11bHRpbGluZUVuYWJsZWQpOwogCiAgICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3Jl
YXRlKCk7CiAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZp
cnN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCBmMWFkZjFkLi4yMDBlYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxpbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFja0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKQEAg
LTczLDggKzc0LDggQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVp
bmdEZXN0cm95ZWQpCiAKIFN0cmluZyBQYWdlRGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9y
U2NyaXB0KGNvbnN0IFNjcmlwdCYgc2NyaXB0KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXIsIChBU0NJSUxpdGVyYWwoIlNv
dXJjZU1hcCIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
c291cmNlTWFwSFRUUEhlYWRlckRlcHJlY2F0ZWQsIChBU0NJSUxpdGVyYWwoIlgtU291cmNlTWFw
IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVh
ZGVyKEFTQ0lJTGl0ZXJhbCgiU291cmNlTWFwIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkKEFTQ0lJTGl0ZXJhbCgiWC1T
b3VyY2VNYXAiKSk7CiAKICAgICBpZiAoIXNjcmlwdC51cmwuaXNFbXB0eSgpKSB7CiAgICAgICAg
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1fcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZSgm
bV9wYWdlLm1haW5GcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3JpcHQudXJsKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCBlZDE3ZmE5Li4yOGVmMDdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2
b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
CiAgICAgICAgIG1faGFzUGVuZGluZ0Vycm9yRXZlbnQgPSB0cnVlOwogICAgICAgICBlcnJvckV2
ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24oKnRoaXMpOwogCi0gICAgICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRl
cmFsKCJDcm9zcy1vcmlnaW4gaW1hZ2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291
cmNlIFNoYXJpbmcgcG9saWN5LiIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIGltYWdlIGxv
YWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAg
ICAgICAgIGVsZW1lbnQoKS5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7CiAKICAg
ICAgICAgQVNTRVJUKCFtX2hhc1BlbmRpbmdMb2FkRXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCA0MGU5YWQ1Li42ZGExMDgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZv
aWQgVGV4dFRyYWNrTG9hZGVyOjpkZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjCiAKIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5
UHJldmVudGVkTG9hZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiB0ZXh0IHRy
YWNrIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4i
KSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFT
Q0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHRleHQgdHJhY2sgbG9hZCBkZW5pZWQgYnkgQ3Jvc3Mt
T3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKTsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICBk
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICBtX3N0YXRlID0gRmFpbGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmNwcAppbmRleCA1YWQ1N2VjLi5hMDVkYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODcsNyArODgsNyBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIENhY2hlZFJlc291cmNlUmVxdWVzdDo6aW5pdGlhdG9yTmFtZSgpIGNvbnN0CiAg
ICAgaWYgKCFtX2luaXRpYXRvck5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9pbml0
aWF0b3JOYW1lOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgZGVmYXVsdE5hbWUsICgicmVzb3VyY2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZGVm
YXVsdE5hbWUoInJlc291cmNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIGRlZmF1bHROYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBmZWYzOGQ3Li4yYjY0M2I1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJTdWRkZW5UZXJtaW5hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBv
b2wuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogLy8gRm9yIG1ldGhv
ZHMgdGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9ydCBBUEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgLSBz
aG91bGQgbm90IGJlIGNhbGxlZCBpbnRlcm5hbGx5CkBAIC04NzksOCArODgwLDggQEAgU3RyaW5n
IEljb25EYXRhYmFzZTo6ZGF0YWJhc2VQYXRoKCkgY29uc3QKIAogU3RyaW5nIEljb25EYXRhYmFz
ZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lLCAoQVNDSUlMaXRlcmFs
KCJXZWJwYWdlSWNvbnMuZGIiKSkpOwotICAgIHJldHVybiBkZWZhdWx0RGF0YWJhc2VGaWxlbmFt
ZS5pc29sYXRlZENvcHkoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkZWZh
dWx0RGF0YWJhc2VGaWxlbmFtZShBU0NJSUxpdGVyYWwoIldlYnBhZ2VJY29ucy5kYiIpKTsKKyAg
ICByZXR1cm4gZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUuZ2V0KCkuaXNvbGF0ZWRDb3B5KCk7CiB9
CiAKIC8vIFVubGlrZSBnZXRPckNyZWF0ZVBhZ2VVUkxSZWNvcmQoKSwgZ2V0T3JDcmVhdGVJY29u
UmVjb3JkKCkgZG9lcyBub3QgbWFyayB0aGUgaWNvbiBhcyAiaW50ZXJlc3RlZCBpbiBpbXBvcnQi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAppbmRl
eCBhOTc0Y2Q4Li4xNjNlYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJVc2VyU3R5bGVT
aGVldFR5cGVzLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjg0LDcgKzI4NSw3IEBAIHZvaWQg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoY29u
c3QgU3RyaW5nJiBvdmVycmlkCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVwZGF0ZUNh
cHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpCiB7CiAgICAgLy8gSWRlbnRpZnkgb3VyIG92ZXJyaWRl
IHN0eWxlIHNoZWV0IHdpdGggYSB1bmlxdWUgVVJMIC0gYSBuZXcgc2NoZW1lIGFuZCBhIFVVSUQu
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTCwgY2FwdGlvbnNTdHlsZVNo
ZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYx
Mi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVSTD4gY2FwdGlvbnNTdHlsZVNoZWV0VVJMKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2Fw
dGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIik7CiAK
ICAgICBhdXRvJiBwYWdlcyA9IG1fcGFnZUdyb3VwLnBhZ2VzKCk7CiAgICAgZm9yIChhdXRvJiBw
YWdlIDogcGFnZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggNmExZTliNy4uNzJjYWIxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjaW5jbHVk
ZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgpAQCAtMjQ2LDcgKzI0Nyw3IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGRlZmF1
bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNwZWNpZmllZCBpbiBtZWRpYUNv
bnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXBhc3Qtbm9kZXMKICAgICAv
LyBhbmQgd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZnV0dXJlLW5vZGVzLgotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKENv
bG9yKDAsIDAsIDAsIDAuOCAqIDI1NSkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q29s
b3I+IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMCwgMC44ICogMjU1KTsKIAogICAgIE1B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKIApAQCAtMzQ5LDEwICszNTAsMTAg
QEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjb2xvclByb3BlcnR5Q1NT
KENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IEMKIAogU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRFZGdlQ1NTKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVSYWlzZWQsICgiIC0u
MDVlbSAtLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlRGVwcmVz
c2VkLCAoIiAuMDVlbSAuMDVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5
bGVEcm9wU2hhZG93LCAoIiAuMDc1ZW0gLjA3NWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGVkZ2VTdHlsZVVuaWZvcm0sICgiIC4wM2VtICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlZGdlU3R5
bGVSYWlzZWQoQVNDSUlMaXRlcmFsKCIgLS4wNWVtIC0uMDVlbSAwICIpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlZGdlU3R5bGVEZXByZXNzZWQoQVNDSUlMaXRl
cmFsKCIgLjA1ZW0gLjA1ZW0gMCAiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IFN0cmluZz4gZWRnZVN0eWxlRHJvcFNoYWRvdyhBU0NJSUxpdGVyYWwoIiAuMDc1ZW0gLjA3NWVt
IDAgIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGVkZ2VTdHls
ZVVuaWZvcm0oQVNDSUlMaXRlcmFsKCIgLjAzZW0gIikpOwogCiAgICAgYm9vbCB1bnVzZWQ7CiAg
ICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcih1bnVzZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGM0NjExOGQuLjA1OWJi
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwpAQCAtOTk0LDcgKzk5NSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2VB
bmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0CiAKIGJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRV
UkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFT
Q0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIEphdmFTY3JpcHQgVVJMIGJlY2F1c2UgaXQg
dmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6
ICIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2Uo
QVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBVUkwgYmVjYXVzZSBp
dCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZTogIikpOwogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja0lubGluZUFu
ZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBj
b25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIHRydWUpCiAgICAgICAgIDog
KG1fcmVwb3J0T25seSB8fCBjaGVja0lubGluZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRT
cmMuZ2V0KCkpKSk7CkBAIC0xMDAyLDcgKzEwMDMsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
OgogCiBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhjb25z
dCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExp
bmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1
cykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBj
b25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIGlubGluZSBl
dmVudCBoYW5kbGVyIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUg
aW5saW5lIGV2ZW50IGhhbmRsZXIgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENv
bnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpOwogICAgIHJldHVybiByZXBvcnRp
bmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRS
ZXBvcnQgPwogICAgICAgICBjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVE
aXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwg
Y29udGV4dExpbmUsIHRydWUpCiAgICAgICAgIDogKG1fcmVwb3J0T25seSB8fCBjaGVja0lubGlu
ZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpKSk7CkBAIC0xMDEwLDcgKzEw
MTEsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhj
b25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0CiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9y
ZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVz
ZWQgdG8gZXhlY3V0ZSBpbmxpbmUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxv
d2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1
c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xs
b3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7CiAgICAgcmV0dXJu
IHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
czo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKG9w
ZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVNZXNzYWdlLCBjb250
ZXh0VVJMLCBjb250ZXh0TGluZSwgdHJ1ZSkgOgogICAgICAgICAobV9yZXBvcnRPbmx5IHx8IGNo
ZWNrSW5saW5lKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSkpKTsKQEAgLTEw
MTgsNyArMTAxOSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHQo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yCiAKIGJvb2wgQ1NQRGlyZWN0
aXZlTGlzdDo6YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0
IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJh
bCgiUmVmdXNlZCB0byBhcHBseSBpbmxpbmUgc3R5bGUgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUg
Zm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwo
IlJlZnVzZWQgdG8gYXBwbHkgaW5saW5lIHN0eWxlIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZv
bGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKICAgICByZXR1
cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzOjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24o
b3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29u
dGV4dFVSTCwgY29udGV4dExpbmUsIGZhbHNlKSA6CiAgICAgICAgIChtX3JlcG9ydE9ubHkgfHwg
Y2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpKSk7CkBAIC0x
MDI2LDcgKzEwMjcsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZAogCiBib29sIENTUERpcmVj
dGl2ZUxpc3Q6OmFsbG93RXZhbChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFT
Q0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBldmFsdWF0ZSBzY3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRl
cyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxp
dGVyYWwoIlJlZnVzZWQgdG8gZXZhbHVhdGUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhl
IGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKICAgICBy
ZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzOjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tFdmFsQW5kUmVwb3J0VmlvbGF0aW9u
KG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVNZXNzYWdlLCBT
dHJpbmcoKSwgV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBzdGF0ZSkgOgogICAg
ICAgICAobV9yZXBvcnRPbmx5IHx8IGNoZWNrRXZhbChvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3Jp
cHRTcmMuZ2V0KCkpKSk7CkBAIC0xNjc2LDEyICsxNjc3LDEyIEBAIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBj
b25zdCBTCiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRVbnN1cHBvcnRlZERp
cmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgYWxsb3csIChBU0NJSUxpdGVyYWwoImFsbG93IikpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBvcHRpb25zLCAoQVND
SUlMaXRlcmFsKCJvcHRpb25zIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBwb2xpY3lVUkksIChBU0NJSUxpdGVyYWwoInBvbGljeS11cmkiKSkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFsbG93TWVzc2FnZSwgKEFT
Q0lJTGl0ZXJhbCgiVGhlICdhbGxvdycgZGlyZWN0aXZlIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGgg
J2RlZmF1bHQtc3JjJy4gUGxlYXNlIHVzZSB0aGF0IGRpcmVjdGl2ZSBpbnN0ZWFkLCBhcyAnYWxs
b3cnIGhhcyBubyBlZmZlY3QuIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBvcHRpb25zTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiVGhlICdvcHRpb25zJyBk
aXJlY3RpdmUgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCAndW5zYWZlLWlubGluZScgYW5kICd1bnNh
ZmUtZXZhbCcgc291cmNlIGV4cHJlc3Npb25zIGZvciB0aGUgJ3NjcmlwdC1zcmMnIGFuZCAnc3R5
bGUtc3JjJyBkaXJlY3RpdmVzLiBQbGVhc2UgdXNlIHRob3NlIGRpcmVjdGl2ZXMgaW5zdGVhZCwg
YXMgJ29wdGlvbnMnIGhhcyBubyBlZmZlY3QuIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBwb2xpY3lVUklNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJUaGUg
J3BvbGljeS11cmknIGRpcmVjdGl2ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHNwZWNpZmlj
YXRpb24uIFBsZWFzZSBzcGVjaWZ5IGEgY29tcGxldGUgcG9saWN5IHZpYSB0aGUgQ29udGVudC1T
ZWN1cml0eS1Qb2xpY3kgaGVhZGVyLiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gYWxsb3coQVNDSUlMaXRlcmFsKCJhbGxvdyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBvcHRpb25zKEFTQ0lJTGl0ZXJhbCgib3B0aW9ucyIpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwb2xpY3lVUkkoQVNDSUlMaXRlcmFsKCJwb2xpY3kt
dXJpIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFsbG93TWVzc2FnZShB
U0NJSUxpdGVyYWwoIlRoZSAnYWxsb3cnIGRpcmVjdGl2ZSBoYXMgYmVlbiByZXBsYWNlZCB3aXRo
ICdkZWZhdWx0LXNyYycuIFBsZWFzZSB1c2UgdGhhdCBkaXJlY3RpdmUgaW5zdGVhZCwgYXMgJ2Fs
bG93JyBoYXMgbm8gZWZmZWN0LiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiBvcHRpb25zTWVzc2FnZShBU0NJSUxpdGVyYWwoIlRoZSAnb3B0aW9ucycgZGlyZWN0aXZlIGhh
cyBiZWVuIHJlcGxhY2VkIHdpdGggJ3Vuc2FmZS1pbmxpbmUnIGFuZCAndW5zYWZlLWV2YWwnIHNv
dXJjZSBleHByZXNzaW9ucyBmb3IgdGhlICdzY3JpcHQtc3JjJyBhbmQgJ3N0eWxlLXNyYycgZGly
ZWN0aXZlcy4gUGxlYXNlIHVzZSB0aG9zZSBkaXJlY3RpdmVzIGluc3RlYWQsIGFzICdvcHRpb25z
JyBoYXMgbm8gZWZmZWN0LiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBw
b2xpY3lVUklNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiVGhlICdwb2xpY3ktdXJpJyBkaXJlY3RpdmUg
aGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uLiBQbGVhc2Ugc3BlY2lmeSBh
IGNvbXBsZXRlIHBvbGljeSB2aWEgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGhlYWRlci4i
KSk7CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgYWxsb3cpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDk5YTlmNWEuLjg2MmI5
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTExMCw2ICsxMTAsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xODUsMTMgKzE4NiwxMyBAQCB0eXBl
ZGVmIEhhc2hDb3VudGVkU2V0PERPTVdpbmRvdyo+IERPTVdpbmRvd1NldDsKIAogc3RhdGljIERP
TVdpbmRvd1NldCYgd2luZG93c1dpdGhVbmxvYWRFdmVudExpc3RlbmVycygpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKERPTVdpbmRvd1NldCwgd2luZG93c1dpdGhVbmxv
YWRFdmVudExpc3RlbmVycywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxET01XaW5k
b3dTZXQ+IHdpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnM7CiAgICAgcmV0dXJuIHdpbmRv
d3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnM7CiB9CiAKIHN0YXRpYyBET01XaW5kb3dTZXQmIHdp
bmRvd3NXaXRoQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChET01XaW5kb3dTZXQsIHdpbmRvd3NXaXRoQmVmb3JlVW5sb2Fk
RXZlbnRMaXN0ZW5lcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE9NV2luZG93
U2V0PiB3aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzOwogICAgIHJldHVybiB3
aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMWNlN2I1NC4uOTE4MmQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1ZGUgIldpbmRvd3NL
ZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00MDEsNyArNDAyLDcgQEAgRXZlbnRIYW5k
bGVyOjp+RXZlbnRIYW5kbGVyKCkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogRHJhZ1N0YXRl
JiBFdmVudEhhbmRsZXI6OmRyYWdTdGF0ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKERyYWdTdGF0ZSwgc3RhdGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RHJhZ1N0YXRlPiBzdGF0ZTsKICAgICByZXR1cm4gc3RhdGU7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKERSQUdfU1VQUE9SVCkKQEAgLTMwNzYsMTAgKzMwNzcsMTAgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50
KQogCiBzdGF0aWMgRm9jdXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb25Gb3JLZXkoY29uc3QgQXRv
bWljU3RyaW5nJiBrZXlJZGVudGlmaWVyKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIERvd24sICgiRG93biIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBVcCwgKCJVcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBMZWZ0
LCAoIkxlZnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgUmlnaHQsICgiUmlnaHQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gRG93bigiRG93biIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IFVwKCJVcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IExlZnQoIkxlZnQiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBSaWdodCgiUmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKIAogICAgIEZvY3VzRGlyZWN0aW9uIHJldFZhbCA9IEZvY3VzRGlyZWN0aW9uTm9uZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBiNzYzMzY4Li43NDBlOWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNz
aW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICAvLyBS
RVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBv
biB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAg
V2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uLCB3b3JkUmVnRXhwLCAoIlxcdyIsIFRleHRDYXNl
U2Vuc2l0aXZlKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIsIFRleHRDYXNlU2Vuc2l0aXZlKTsKICAgICBT
dHJpbmdCdWlsZGVyIHBhdHRlcm47CiAgICAgcGF0dGVybi5hcHBlbmQoJygnKTsKICAgICB1bnNp
Z25lZCBpbnQgbnVtTGFiZWxzID0gbGFiZWxzLnNpemUoKTsKQEAgLTMxNyw4ICszMTcsOCBAQCBz
dGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAgICAgIGJvb2wgc3RhcnRzV2l0aFdvcmRDaGFyID0g
ZmFsc2U7CiAgICAgICAgIGJvb2wgZW5kc1dpdGhXb3JkQ2hhciA9IGZhbHNlOwogICAgICAgICBp
ZiAobGFiZWwubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IHdv
cmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAwOwotICAgICAgICAgICAg
ZW5kc1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3RyaW5nKGxhYmVs
Lmxlbmd0aCgpIC0gMSwgMSkpID49IDA7CisgICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXIg
PSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKKyAg
ICAgICAgICAgIGVuZHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVs
LnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAppbmRleCAwZjVl
MmJlLi4wYmUyZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAKICNpbmNsdWRlICJOZXR3
b3JrU3RhdGVOb3RpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgT1MoTElOVVgpCkBAIC05Myw3ICs5
NCw3IEBAIFN0cmluZyBOYXZpZ2F0b3JCYXNlOjpwbGF0Zm9ybSgpIGNvbnN0CiAgICAgaWYgKCFT
dHJpbmcoV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0pLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNOwogICAgIHN0cnVjdCB1dHNuYW1lIG9zbmFt
ZTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBwbGF0Zm9ybU5h
bWUsICh1bmFtZSgmb3NuYW1lKSA+PSAwID8gU3RyaW5nKG9zbmFtZS5zeXNuYW1lKSArIFN0cmlu
ZygiICIpICsgU3RyaW5nKG9zbmFtZS5tYWNoaW5lKSA6IGVtcHR5U3RyaW5nKCkpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwbGF0Zm9ybU5hbWUodW5hbWUoJm9zbmFtZSkg
Pj0gMCA/IFN0cmluZyhvc25hbWUuc3lzbmFtZSkgKyBTdHJpbmcoIiAiKSArIFN0cmluZyhvc25h
bWUubWFjaGluZSkgOiBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gcGxhdGZvcm1OYW1lOwog
I2Vsc2UKICAgICByZXR1cm4gV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcAppbmRleCBmNmNjYzE0Li43NDUwYzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAKQEAgLTMx
LDE0ICszMSwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBhZ2VWaXNpYmls
aXR5U3RhdGUuaCIKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFN0cmluZyBwYWdlVmlzaWJpbGl0eVN0YXRlU3RyaW5nKFBhZ2VWaXNp
YmlsaXR5U3RhdGUgc3RhdGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgdmlzaWJsZSwgKEFTQ0lJTGl0ZXJhbCgidmlzaWJsZSIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgaGlkZGVuLCAoQVND
SUlMaXRlcmFsKCJoaWRkZW4iKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHByZXJlbmRlciwgKEFTQ0lJTGl0ZXJhbCgicHJlcmVuZGVyIikpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2aXNpYmxlKEFTQ0lJTGl0
ZXJhbCgidmlzaWJsZSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5n
PiBoaWRkZW4oQVNDSUlMaXRlcmFsKCJoaWRkZW4iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IFN0cmluZz4gcHJlcmVuZGVyKEFTQ0lJTGl0ZXJhbCgicHJlcmVuZGVyIikpOwog
CiAgICAgc3dpdGNoIChzdGF0ZSkgewogICAgIGNhc2UgUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2li
bGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGUzOTgxNGIuLjNi
ZDMyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlx
dWVfcHRyPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsKIAogc3RhdGlj
IE9yaWdpbkFjY2Vzc01hcCYgb3JpZ2luQWNjZXNzTWFwKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoT3JpZ2luQWNjZXNzTWFwLCBvcmlnaW5BY2Nlc3NNYXAsICgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3JpZ2luQWNjZXNzTWFwPiBvcmlnaW5BY2Nlc3NN
YXA7CiAgICAgcmV0dXJuIG9yaWdpbkFjY2Vzc01hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDJlYTE4ZWMuLjY1NjljZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAogI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIsNyArNjMsNyBA
QCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPgogCiBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6
cGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHNjaGVtZVNlcGFyYXRvciwgKEFTQ0lJTGl0ZXJhbCgi
Oi8vIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBzY2hlbWVT
ZXBhcmF0b3IoQVNDSUlMaXRlcmFsKCI6Ly8iKSk7CiAKICAgICBzaXplX3Qgc2NoZW1lRW5kUG9z
ID0gcGF0dGVybi5maW5kKHNjaGVtZVNlcGFyYXRvcik7CiAgICAgaWYgKHNjaGVtZUVuZFBvcyA9
PSBub3RGb3VuZCkKQEAgLTcwLDcgKzcxLDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46
OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKIAogICAgIG1fc2NoZW1lID0gcGF0dGVybi5s
ZWZ0KHNjaGVtZUVuZFBvcyk7CiAKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRQb3MgPSBzY2hlbWVF
bmRQb3MgKyBzY2hlbWVTZXBhcmF0b3IubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgaG9zdFN0YXJ0
UG9zID0gc2NoZW1lRW5kUG9zICsgc2NoZW1lU2VwYXJhdG9yLmdldCgpLmxlbmd0aCgpOwogICAg
IGlmIChob3N0U3RhcnRQb3MgPj0gcGF0dGVybi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggNzg3ZjBhMC4uNDc0NTFjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApA
QCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
ckNvbXBhcmlzb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNjQ1LDE5ICs2
NDYsMTggQEAgc3RhdGljIGlubGluZSBzaXplX3Qgc2hhZG93TGlzdExlbmd0aChjb25zdCBTaGFk
b3dEYXRhKiBzaGFkb3cpCiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgU2hhZG93RGF0YSogc2hhZG93
Rm9yQmxlbmRpbmcoY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRh
KiBvdGhlclNoYWRvdykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU2hh
ZG93RGF0YSwgZGVmYXVsdFNoYWRvd0RhdGEsIChJbnRQb2ludCgpLCAwLCAwLCBOb3JtYWwsIGZh
bHNlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdEluc2V0U2hhZG93RGF0YSwgKEludFBvaW50KCksIDAs
IDAsIEluc2V0LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7Ci0KLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdFdlYktpdEJveFNoYWRvd0Rh
dGEsIChJbnRQb2ludCgpLCAwLCAwLCBOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCkp
OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0
SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIHRydWUs
IENvbG9yOjp0cmFuc3BhcmVudCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dE
YXRhPiBkZWZhdWx0U2hhZG93RGF0YShJbnRQb2ludCgpLCAwLCAwLCBOb3JtYWwsIGZhbHNlLCBD
b2xvcjo6dHJhbnNwYXJlbnQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRh
PiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKEludFBvaW50KCksIDAsIDAsIEluc2V0LCBmYWxzZSwg
Q29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0
YT4gZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFsLCB0
cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFk
b3dEYXRhPiBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKEludFBvaW50KCksIDAsIDAs
IEluc2V0LCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnQpOwogCiAgICAgaWYgKHNyY1NoYWRvdykK
ICAgICAgICAgcmV0dXJuIHNyY1NoYWRvdzsKIAogICAgIGlmIChvdGhlclNoYWRvdy0+c3R5bGUo
KSA9PSBJbnNldCkKLSAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRv
dygpID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEgOiAmZGVmYXVsdEluc2V0U2hh
ZG93RGF0YTsKKyAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygp
ID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAmZGVmYXVsdEluc2V0
U2hhZG93RGF0YS5nZXQoKTsKIAotICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hT
aGFkb3coKSA/ICZkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YSA6ICZkZWZhdWx0U2hhZG93RGF0
YTsKKyAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVs
dFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAmZGVmYXVsdFNoYWRvd0RhdGEuZ2V0KCk7CiB9
CiAKIGNsYXNzIFByb3BlcnR5V3JhcHBlclNoYWRvdyA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0
eVdyYXBwZXJCYXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
b21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IGI4MjIyNTYuLjY1NTFkNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTIyMSw3ICsyMjIsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBk
YXRlS2V5ZnJhbWVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBSZW5kZQogICAg
ICAgICAvLyBUb3NzIHRoZSBhbmltYXRpb24gb3JkZXIgbWFwLgogICAgICAgICBtX2tleWZyYW1l
QW5pbWF0aW9uT3JkZXJNYXAuY2xlYXIoKTsKIAotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBub25lLCAoIm5vbmUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5vdyBtYXJrIGFueSBzdGlsbCBh
Y3RpdmUgYW5pbWF0aW9ucyBhcyBhY3RpdmUgYW5kIGFkZCBhbnkgbmV3IGFuaW1hdGlvbnMuCiAg
ICAgICAgIGlmICh0YXJnZXRTdHlsZS0+YW5pbWF0aW9ucygpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Vyc29yLmNwcAppbmRleCA5MzU5M2FkLi42MGE2MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1
cnNvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4OSwyNTkgKzE5
MCwyNTkgQEAgUGxhdGZvcm1DdXJzb3IgQ3Vyc29yOjpwbGF0Zm9ybUN1cnNvcigpIGNvbnN0CiAK
IGNvbnN0IEN1cnNvciYgcG9pbnRlckN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6UG9pbnRlcikpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpQb2ludGVyKTsKICAgICByZXR1cm4gYzsK
IH0KIAogY29uc3QgQ3Vyc29yJiBjcm9zc0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Q3Jvc3MpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Q3Jvc3MpOwogICAgIHJldHVybiBjOwog
fQogCiBjb25zdCBDdXJzb3ImIGhhbmRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkhhbmQpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6SGFuZCk7CiAgICAgcmV0dXJuIGM7CiB9CiAK
IGNvbnN0IEN1cnNvciYgbW92ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6TW92ZSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpNb3ZlKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiB2ZXJ0aWNhbFRleHRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlZlcnRpY2FsVGV4dCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpWZXJ0aWNhbFRleHQpOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNlbGxDdXJzb3IoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkNlbGwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Q2VsbCk7CiAgICAgcmV0
dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY29udGV4dE1lbnVDdXJzb3IoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkNvbnRleHRN
ZW51KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkNvbnRl
eHRNZW51KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBhbGlhc0N1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6QWxpYXMpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
QWxpYXMpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHpvb21JbkN1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6Wm9vbUluKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6
Olpvb21Jbik7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgem9vbU91dEN1cnNv
cigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1
cnNvcjo6Wm9vbU91dCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vy
c29yOjpab29tT3V0KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBjb3B5Q3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpDb3B5KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OkNvcHkpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vbmVDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6Ok5vbmUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
Tm9uZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgcHJvZ3Jlc3NDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6OlByb2dyZXNzKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OlByb2dyZXNzKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub0Ryb3BD
dXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMs
IChDdXJzb3I6Ok5vRHJvcCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMo
Q3Vyc29yOjpOb0Ryb3ApOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vdEFs
bG93ZWRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJz
b3IsIGMsIChDdXJzb3I6Ok5vdEFsbG93ZWQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Q3Vyc29yPiBjKEN1cnNvcjo6Tm90QWxsb3dlZCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0
IEN1cnNvciYgaUJlYW1DdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OklCZWFtKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEN1cnNvcj4gYyhDdXJzb3I6OklCZWFtKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3Qg
Q3Vyc29yJiB3YWl0Q3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpXYWl0KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEN1cnNvcj4gYyhDdXJzb3I6OldhaXQpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJz
b3ImIGhlbHBDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChD
dXJzb3IsIGMsIChDdXJzb3I6OkhlbHApKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vy
c29yPiBjKEN1cnNvcjo6SGVscCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYg
ZWFzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEN1cnNvciwgYywgKEN1cnNvcjo6RWFzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpFYXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAog
Y29uc3QgQ3Vyc29yJiBub3J0aFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhSZXNpemUpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhSZXNpemUpOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vcnRoRWFzdFJlc2l6ZUN1cnNvcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6
Tm9ydGhFYXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhD
dXJzb3I6Ok5vcnRoRWFzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNv
ciYgbm9ydGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aFdlc3RSZXNpemUpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhXZXN0UmVzaXplKTsKICAg
ICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBzb3V0aFJlc2l6ZUN1cnNvcigpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6U291
dGhSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
U291dGhSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNvdXRoRWFz
dFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6U291dGhFYXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRoRWFzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7
CiB9CiAKIGNvbnN0IEN1cnNvciYgc291dGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpTb3V0aFdlc3RS
ZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6U291
dGhXZXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiB3ZXN0UmVz
aXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29y
LCBjLCAoQ3Vyc29yOjpXZXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1
cnNvcj4gYyhDdXJzb3I6Oldlc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIG5vcnRoU291dGhSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoU291dGhSZXNpemUpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhTb3V0aFJlc2l6
ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgZWFzdFdlc3RSZXNpemVDdXJz
b3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChD
dXJzb3I6OkVhc3RXZXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNv
cj4gYyhDdXJzb3I6OkVhc3RXZXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3Qg
Q3Vyc29yJiBub3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoRWFzdFNvdXRo
V2VzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29y
OjpOb3J0aEVhc3RTb3V0aFdlc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhXZXN0U291dGhF
YXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6
Ok5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgY29sdW1uUmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpDb2x1bW5SZXNpemUpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Q29sdW1uUmVzaXplKTsKICAgICByZXR1
cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiByb3dSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlJvd1Jlc2l6ZSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpSb3dSZXNpemUp
OwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG1pZGRsZVBhbm5pbmdDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6Ok1pZGRsZVBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBj
KEN1cnNvcjo6TWlkZGxlUGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBD
dXJzb3ImIGVhc3RQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpFYXN0UGFubmluZykpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpFYXN0UGFubmluZyk7CiAgICAgcmV0dXJu
IGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIG5vcnRoUGFubmluZ0N1cnNvcigpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhQ
YW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5v
cnRoUGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIG5vcnRo
RWFzdFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoRWFzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhFYXN0UGFubmluZyk7CiAgICAgcmV0
dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIG5vcnRoV2VzdFBhbm5pbmdDdXJzb3IoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6
Ok5vcnRoV2VzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBj
KEN1cnNvcjo6Tm9ydGhXZXN0UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25z
dCBDdXJzb3ImIHNvdXRoUGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6U291dGhQYW5uaW5nKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRoUGFubmluZyk7CiAgICAg
cmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIHNvdXRoRWFzdFBhbm5pbmdDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6OlNvdXRoRWFzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29y
PiBjKEN1cnNvcjo6U291dGhFYXN0UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBj
b25zdCBDdXJzb3ImIHNvdXRoV2VzdFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlNvdXRoV2VzdFBhbm5pbmcp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6U291dGhXZXN0
UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIHdlc3RQYW5u
aW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29y
LCBjLCAoQ3Vyc29yOjpXZXN0UGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxD
dXJzb3I+IGMoQ3Vyc29yOjpXZXN0UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0
IEN1cnNvciYgZ3JhYkN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEN1cnNvciwgYywgKEN1cnNvcjo6R3JhYikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDdXJzb3I+IGMoQ3Vyc29yOjpHcmFiKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vy
c29yJiBncmFiYmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEN1cnNvciwgYywgKEN1cnNvcjo6R3JhYmJpbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6R3JhYmJpbmcpOwogICAgIHJldHVybiBjOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKaW5kZXggNTg5MTdmZi4uNjU1NzhkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBTdHJpbmcg
ZGVmYXVsdExhbmd1YWdlKCkKIAogc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5n
dWFnZXNPdmVycmlkZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFZl
Y3RvcjxTdHJpbmc+LCBvdmVycmlkZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8U3RyaW5nPj4gb3ZlcnJpZGU7CiAgICAgcmV0dXJuIG92ZXJyaWRlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IDkzZDJlOTAu
Ljc5NTFmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0
cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3Mu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIAogI2lmIFVTRShDRikKQEAgLTc5LDExICs4MCwxMSBAQCBzdGF0aWMg
U3RyaW5nIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWwpCiAKICAgICAvLyBUcnVuY2F0ZSB0aGUgc3RyaW5nIGlmIGl0J3MgdG9vIGxvbmcuIFRo
aXMgaXMgaW4gY29uc2lzdGVuY3kgd2l0aCBBcHBLaXQuCiAgICAgdW5zaWduZWQgbWF4TnVtYmVy
T2ZHcmFwaGVtZUNsdXN0ZXJzSW5Mb29rdXBNZW51SXRlbSA9IDI0OwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGVsbGlwc2lzLCAoJmhvcml6b250YWxFbGxpcHNp
cywgMSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGVsbGlwc2lzKCZob3Jp
em9udGFsRWxsaXBzaXMsIDEpOwogCiAgICAgU3RyaW5nIHRyaW1tZWQgPSBvcmlnaW5hbC5zdHJp
cFdoaXRlU3BhY2UoKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYXJhY3RlcnMgPSBudW1DaGFy
YWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKHRyaW1tZWQsIG1heE51bWJlck9mR3JhcGhlbWVDbHVz
dGVyc0luTG9va3VwTWVudUl0ZW0pOwotICAgIHJldHVybiBudW1iZXJPZkNoYXJhY3RlcnMgPT0g
dHJpbW1lZC5sZW5ndGgoKSA/IHRyaW1tZWQgOiB0cmltbWVkLmxlZnQobnVtYmVyT2ZDaGFyYWN0
ZXJzKSArIGVsbGlwc2lzOworICAgIHJldHVybiBudW1iZXJPZkNoYXJhY3RlcnMgPT0gdHJpbW1l
ZC5sZW5ndGgoKSA/IHRyaW1tZWQgOiB0cmltbWVkLmxlZnQobnVtYmVyT2ZDaGFyYWN0ZXJzKSAr
IGVsbGlwc2lzLmdldCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggMTI3Y2M1YS4uNjIwZjFjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCkBAIC0zNTIsMTYgKzM1MywxNiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3Vw
cG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMoKQogCiBzdGF0aWMgTWVkaWFNSU1FVHlwZU1hcCYgbWVk
aWFNSU1FVHlwZU1hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE1l
ZGlhTUlNRVR5cGVNYXAsIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAsICgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFNSU1FVHlwZU1hcD4gbWVkaWFNSU1FVHlwZUZvckV4
dGVuc2lvbk1hcDsKIAotICAgIGlmICghbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5pc0Vt
cHR5KCkpCisgICAgaWYgKCFtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldCgpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXA7CiAKICAg
ICBjb25zdCB1bnNpZ25lZCBudW1QYWlycyA9IHNpemVvZihjb21tb25NZWRpYVR5cGVzKSAvIHNp
emVvZihjb21tb25NZWRpYVR5cGVzWzBdKTsKICAgICBmb3IgKHVuc2lnbmVkIG5keCA9IDA7IG5k
eCA8IG51bVBhaXJzOyArK25keCkgewogCi0gICAgICAgIGlmIChtZWRpYU1JTUVUeXBlRm9yRXh0
ZW5zaW9uTWFwLmNvbnRhaW5zKGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24pKQotICAg
ICAgICAgICAgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5nZXQoY29tbW9uTWVkaWFUeXBl
c1tuZHhdLmV4dGVuc2lvbiktPmFwcGVuZChjb21tb25NZWRpYVR5cGVzW25keF0udHlwZSk7Cisg
ICAgICAgIGlmIChtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldCgpLmNvbnRhaW5zKGNv
bW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24pKQorICAgICAgICAgICAgbWVkaWFNSU1FVHlw
ZUZvckV4dGVuc2lvbk1hcC5nZXQoKS5nZXQoY29tbW9uTWVkaWFUeXBlc1tuZHhdLmV4dGVuc2lv
biktPmFwcGVuZChjb21tb25NZWRpYVR5cGVzW25keF0udHlwZSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4qIHN5bm9ueW1zID0gbmV3IFZlY3RvcjxTdHJpbmc+
OwogCkBAIC0zNzEsNyArMzcyLDcgQEAgc3RhdGljIE1lZGlhTUlNRVR5cGVNYXAmIG1lZGlhTUlN
RVR5cGVNYXAoKQogICAgICAgICAgICAgaWYgKCFzeXN0ZW1UeXBlLmlzRW1wdHkoKSAmJiBjb21t
b25NZWRpYVR5cGVzW25keF0udHlwZSAhPSBzeXN0ZW1UeXBlKQogICAgICAgICAgICAgICAgIHN5
bm9ueW1zLT5hcHBlbmQoc3lzdGVtVHlwZSk7CiAgICAgICAgICAgICBzeW5vbnltcy0+YXBwZW5k
KGNvbW1vbk1lZGlhVHlwZXNbbmR4XS50eXBlKTsKLSAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVG
b3JFeHRlbnNpb25NYXAuYWRkKGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24sIHN5bm9u
eW1zKTsKKyAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuZ2V0KCkuYWRk
KGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24sIHN5bm9ueW1zKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtNjQyLDcgKzY0Myw3IEBAIEhhc2hTZXQ8U3RyaW5nPiYgTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0VW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKIAogY29uc3QgU3RyaW5nJiBkZWZh
dWx0TUlNRVR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIGRlZmF1bHRNSU1FVHlwZSwgKEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBk
ZWZhdWx0TUlNRVR5cGUoQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSk7
CiAgICAgcmV0dXJuIGRlZmF1bHRNSU1FVHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4IGE4YjBhMTEuLmI2NDY1MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKQEAgLTM2LDEyICszNiwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBsb2NhbFVSTFNjaGVt
ZXMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFw
LCBsb2NhbFNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1l
c01hcD4gbG9jYWxTY2hlbWVzOwogCi0gICAgaWYgKGxvY2FsU2NoZW1lcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgbG9jYWxTY2hlbWVzLmFkZCgiZmlsZSIpOworICAgIGlmIChsb2NhbFNjaGVtZXMu
Z2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGxvY2FsU2NoZW1lcy5nZXQoKS5hZGQoImZpbGUi
KTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbG9jYWxTY2hlbWVzLmFkZCgiYXBwbGV3
ZWJkYXRhIik7CisgICAgICAgIGxvY2FsU2NoZW1lcy5nZXQoKS5hZGQoImFwcGxld2ViZGF0YSIp
OwogI2VuZGlmCiAgICAgfQogCkBAIC01MCwyMSArNTAsMjEgQEAgc3RhdGljIFVSTFNjaGVtZXNN
YXAmIGxvY2FsVVJMU2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBkaXNwbGF5SXNv
bGF0ZWRVUkxTY2hlbWVzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
VVJMU2NoZW1lc01hcCwgZGlzcGxheUlzb2xhdGVkU2NoZW1lcywgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBkaXNwbGF5SXNvbGF0ZWRTY2hlbWVzOwogICAg
IHJldHVybiBkaXNwbGF5SXNvbGF0ZWRTY2hlbWVzOwogfQogCiBzdGF0aWMgVVJMU2NoZW1lc01h
cCYgc2VjdXJlU2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFVSTFNjaGVtZXNNYXAsIHNlY3VyZVNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2VjdXJlU2NoZW1lczsKIAotICAgIGlmIChzZWN1cmVTY2hl
bWVzLmlzRW1wdHkoKSkgewotICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZCgiaHR0cHMiKTsKLSAg
ICAgICAgc2VjdXJlU2NoZW1lcy5hZGQoImFib3V0Iik7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMu
YWRkKCJkYXRhIik7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuYWRkKCJ3c3MiKTsKKyAgICBpZiAo
c2VjdXJlU2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5n
ZXQoKS5hZGQoImh0dHBzIik7CisgICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJhYm91
dCIpOworICAgICAgICBzZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgiZGF0YSIpOworICAgICAgICBz
ZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgid3NzIik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAg
ICAgIHNlY3VyZVNjaGVtZXMuYWRkKFFMUHJldmlld1Byb3RvY29sKCkpOworICAgICAgICBzZWN1
cmVTY2hlbWVzLmdldCgpLmFkZChRTFByZXZpZXdQcm90b2NvbCgpKTsKICNlbmRpZgogICAgIH0K
IApAQCAtNzMsMTQgKzczLDE0IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzZWN1cmVTY2hlbWVz
KCkKIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIHNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxT
Y2hlbWVzTWFwPiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnM7CiAKLSAgICBpZiAoc2NoZW1lc1dp
dGhVbmlxdWVPcmlnaW5zLmlzRW1wdHkoKSkgewotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9y
aWdpbnMuYWRkKCJhYm91dCIpOwotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuYWRk
KCJqYXZhc2NyaXB0Iik7CisgICAgaWYgKHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgi
YWJvdXQiKTsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgiamF2
YXNjcmlwdCIpOwogICAgICAgICAvLyBUaGlzIGlzIGEgd2lsbGZ1bCB2aW9sYXRpb24gb2YgSFRN
TDUuCiAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE4ODUKLSAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZCgiZGF0YSIpOwor
ICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuZ2V0KCkuYWRkKCJkYXRhIik7CiAgICAg
fQogCiAgICAgcmV0dXJuIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2luczsKQEAgLTg4LDI2ICs4OCwy
NiBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKIAog
c3RhdGljIFVSTFNjaGVtZXNNYXAmIGVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgZW1wdHlEb2N1bWVudFNj
aGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gZW1w
dHlEb2N1bWVudFNjaGVtZXM7CiAKLSAgICBpZiAoZW1wdHlEb2N1bWVudFNjaGVtZXMuaXNFbXB0
eSgpKQotICAgICAgICBlbXB0eURvY3VtZW50U2NoZW1lcy5hZGQoImFib3V0Iik7CisgICAgaWYg
KGVtcHR5RG9jdW1lbnRTY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkKKyAgICAgICAgZW1wdHlEb2N1
bWVudFNjaGVtZXMuZ2V0KCkuYWRkKCJhYm91dCIpOwogCiAgICAgcmV0dXJuIGVtcHR5RG9jdW1l
bnRTY2hlbWVzOwogfQogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBzY2hlbWVzRm9yYmlkZGVu
RnJvbURvbWFpblJlbGF4YXRpb24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChIYXNoU2V0PFN0cmluZz4sIHNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBzY2hlbWVzOwogICAgIHJldHVybiBzY2hlbWVzOwogfQog
CiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVz
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwg
Y2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1l
czsKIAotICAgIGlmIChjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcy5hZGQoImJsb2Ii
KTsKKyAgICBpZiAoY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLmdldCgpLmlzRW1w
dHkoKSkgeworICAgICAgICBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMuZ2V0KCku
YWRkKCJibG9iIik7CiAgICAgfQogCiAgICAgcmV0dXJuIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0U2NoZW1lczsKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2Fu
RGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkKIAogc3RhdGljIFVSTFNjaGVtZXNNYXAm
IG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgbm90QWxsb3dpbmdKYXZhc2NyaXB0VVJM
c1NjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4g
bm90QWxsb3dpbmdKYXZhc2NyaXB0VVJMc1NjaGVtZXM7CiAgICAgcmV0dXJuIG5vdEFsbG93aW5n
SmF2YXNjcmlwdFVSTHNTY2hlbWVzOwogfQogCkBAIC0xNDIsMjQgKzE0MiwyNCBAQCBjb25zdCBV
UkxTY2hlbWVzTWFwJiBTY2hlbWVSZWdpc3RyeTo6bG9jYWxTY2hlbWVzKCkKIAogc3RhdGljIFVS
TFNjaGVtZXNNYXAmIHNjaGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJy
b3dzaW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1l
c01hcCwgc2NoZW1lc0FsbG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmcs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lc0Fs
bG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiAgICAgcmV0dXJuIHNj
aGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOwogfQogCiBz
dGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZh
dGVCcm93c2luZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNj
aGVtZXNNYXAsIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmcs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lc0Fs
bG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsKICAgICByZXR1cm4gc2NoZW1l
c0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsKIH0KIAogc3RhdGljIFVS
TFNjaGVtZXNNYXAmIENPUlNFbmFibGVkU2NoZW1lcygpCiB7CiAgICAgLy8gRklYTUU6IGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTYwCi0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIENPUlNFbmFibGVkU2NoZW1lcywgKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBDT1JTRW5hYmxlZFNj
aGVtZXM7CiAKLSAgICBpZiAoQ09SU0VuYWJsZWRTY2hlbWVzLmlzRW1wdHkoKSkgewotICAgICAg
ICBDT1JTRW5hYmxlZFNjaGVtZXMuYWRkKCJodHRwIik7Ci0gICAgICAgIENPUlNFbmFibGVkU2No
ZW1lcy5hZGQoImh0dHBzIik7CisgICAgaWYgKENPUlNFbmFibGVkU2NoZW1lcy5nZXQoKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmdldCgpLmFkZCgiaHR0cCIpOwor
ICAgICAgICBDT1JTRW5hYmxlZFNjaGVtZXMuZ2V0KCkuYWRkKCJodHRwcyIpOwogICAgIH0KIAog
ICAgIHJldHVybiBDT1JTRW5hYmxlZFNjaGVtZXM7CkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGlj
IFVSTFNjaGVtZXNNYXAmIENPUlNFbmFibGVkU2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVz
TWFwJiBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgc2NoZW1lcywgKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOwogICAgIHJl
dHVybiBzY2hlbWVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZS5jcHAKaW5kZXggZDczN2UyZC4uNDM4ZjM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lLmNwcApAQCAtMjgsMTMgKzI4LDE0IEBACiAKICNpbmNsdWRlICJTY3Jv
bGxiYXJUaGVtZU1vY2suaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9sbGJhclRoZW1l
JiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKQogewogICAgIGlmIChTZXR0aW5nczo6bW9ja1Njcm9s
bGJhcnNFbmFibGVkKCkpIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFNjcm9sbGJhclRoZW1lTW9jaywgbW9ja1RoZW1lLCAoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTY3JvbGxiYXJUaGVtZU1vY2s+IG1vY2tUaGVtZTsKICAgICAgICAgcmV0dXJu
IG1vY2tUaGVtZTsKICAgICB9CiAgICAgcmV0dXJuIG5hdGl2ZVRoZW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMLmNwcAppbmRleCA0ZDFjNzdhLi44ODliNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5j
cHAKQEAgLTE5ODEsNyArMTk4MSw3IEBAIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25z
dCBTdHJpbmcmIHVybCkKIAogY29uc3QgVVJMJiBibGFua1VSTCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTCwgc3RhdGljQmxhbmtVUkwsIChQYXJzZWRVUkxTdHJp
bmcsICJhYm91dDpibGFuayIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0
aWNCbGFua1VSTChQYXJzZWRVUkxTdHJpbmcsICJhYm91dDpibGFuayIpOwogICAgIHJldHVybiBz
dGF0aWNCbGFua1VSTDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRp
b24vQW5pbWF0aW9uLmNwcAppbmRleCBkNjc3MGE0Li4xMjA2MTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcApAQCAtMjIsNiArMjIsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgogCisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQW5pbWF0
aW9uOjpBbmltYXRpb24oKQpAQCAtMTYwLDcgKzE2Miw3IEBAIGJvb2wgQW5pbWF0aW9uOjphbmlt
YXRpb25zTWF0Y2goY29uc3QgQW5pbWF0aW9uJiBvdGhlciwgYm9vbCBtYXRjaFBsYXlTdGF0ZXMp
IGNvCiAKIGNvbnN0IFN0cmluZyYgQW5pbWF0aW9uOjppbml0aWFsTmFtZSgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaW5pdGlhbFZhbHVlLCAoQVNDSUlM
aXRlcmFsKCJub25lIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBpbml0
aWFsVmFsdWUoQVNDSUlMaXRlcmFsKCJub25lIikpOwogICAgIHJldHVybiBpbml0aWFsVmFsdWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3Bw
CmluZGV4IGFlOTU1MDIuLjNjMmRhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtMjksMTIgKzI5LDEzIEBACiAjaWYgVVNFKEFVRElP
X1NFU1NJT04pCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvU2Vzc2lvbiYg
QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXVkaW9TZXNzaW9uLCBzZXNzaW9uLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF1ZGlvU2Vzc2lvbj4gc2Vzc2lvbjsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBk
MWY1MjQ2Li4wYmI0ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uaApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDYg
KzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3Qp
OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxBdWRpb1Nlc3Np
b24+OwogICAgIEF1ZGlvU2Vzc2lvbigpOwogICAgIH5BdWRpb1Nlc3Npb24oKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBhZjk5
MmZiLi5lYTMzZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RWxldmF0aW9uLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY4LDE4ICs2OSwx
OCBAQCBjb25zdCBmbG9hdCBSZXNwb25zZVNhbXBsZVJhdGUgPSA0NDEwMDsKIHN0YXRpYyBBdWRp
b0J1cyogZ2V0Q29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlc0ZvclN1YmplY3QoY29uc3QgU3Ry
aW5nJiBzdWJqZWN0TmFtZSkKIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBdWRpb0J1
cyo+IEF1ZGlvQnVzTWFwOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdWRp
b0J1c01hcCwgYXVkaW9CdXNNYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXVk
aW9CdXNNYXA+IGF1ZGlvQnVzTWFwOwogCiAgICAgQXVkaW9CdXMqIGJ1czsKLSAgICBBdWRpb0J1
c01hcDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBhdWRpb0J1c01hcC5maW5kKHN1YmplY3ROYW1lKTsK
LSAgICBpZiAoaXRlcmF0b3IgPT0gYXVkaW9CdXNNYXAuZW5kKCkpIHsKKyAgICBBdWRpb0J1c01h
cDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBhdWRpb0J1c01hcC5nZXQoKS5maW5kKHN1YmplY3ROYW1l
KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gYXVkaW9CdXNNYXAuZ2V0KCkuZW5kKCkpIHsKICAgICAg
ICAgUmVmUHRyPEF1ZGlvQnVzPiBjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzID0gQXVkaW9C
dXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKHN1YmplY3ROYW1lLnV0ZjgoKS5kYXRhKCksIFJlc3Bv
bnNlU2FtcGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9u
c2VzKTsKICAgICAgICAgaWYgKCFjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3Bv
bnNlcy5yZWxlYXNlKCkubGVha1JlZigpOwotICAgICAgICBhdWRpb0J1c01hcC5zZXQoc3ViamVj
dE5hbWUsIGJ1cyk7CisgICAgICAgIGF1ZGlvQnVzTWFwLmdldCgpLnNldChzdWJqZWN0TmFtZSwg
YnVzKTsKICAgICB9IGVsc2UKICAgICAgICAgYnVzID0gaXRlcmF0b3ItPnZhbHVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHAKaW5kZXggOWQ4ZDFlMS4uYWRkYjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApA
QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb1NlcnZpY2VzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBT
T0ZUX0xJTktfRlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKIFNPRlRfTElOSyhBdWRpb1Rvb2xib3gs
IEF1ZGlvQ29tcG9uZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQg
aW5Db21wb25lbnQsIGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChp
bkNvbXBvbmVudCwgaW5EZXNjKSkKQEAgLTYyLDcgKzYzLDcgQEAgY29uc3QgaW50IGtQcmVmZXJy
ZWRCdWZmZXJTaXplID0gMjU2OwogdHlwZWRlZiBIYXNoU2V0PEF1ZGlvRGVzdGluYXRpb25JT1Mq
PiBBdWRpb0Rlc3RpbmF0aW9uU2V0Owogc3RhdGljIEF1ZGlvRGVzdGluYXRpb25TZXQmIGF1ZGlv
RGVzdGluYXRpb25zKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXVk
aW9EZXN0aW5hdGlvblNldCwgYXVkaW9EZXN0aW5hdGlvblNldCwgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdWRpb0Rlc3RpbmF0aW9uU2V0PiBhdWRpb0Rlc3RpbmF0aW9uU2V0Owog
ICAgIHJldHVybiBhdWRpb0Rlc3RpbmF0aW9uU2V0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGUzZWE4NmEuLmI3
YmNiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUm90YXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ3LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBWZWN0b3I8Rmxv
YXRSZWN0Pj4gUmVwYWludE1hcDsKIHN0YXRpYyBSZXBhaW50TWFwJiByZXBhaW50UmVjdE1hcCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFJlcGFpbnRNYXAsIG1hcCwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXBhaW50TWFwPiBtYXA7CiAgICAgcmV0
dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCmluZGV4IDgzNWRlYTAuLjQ0ODI2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04OCw4ICs4OSw4IEBAIEZsb2F0U2l6ZSBJbWFn
ZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0aW9uU2l6ZShGbG9hdFNpemUgc2l6ZSkgY29uc3QKIAog
dm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9y
U3BhY2UsIENvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoVmVjdG9yPGludD4sIGRldmljZVJnYkxVVCwgKCkpOwotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8aW50PiwgbGluZWFyUmdiTFVULCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxpbnQ+PiBkZXZpY2VSZ2JMVVQ7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxpbnQ+PiBsaW5lYXJSZ2JMVVQ7CiAKICAg
ICBpZiAoc3JjQ29sb3JTcGFjZSA9PSBkc3RDb2xvclNwYWNlKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5k
ZXggMjFkODBhZS4uZmJmOWUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMjM1LDE5ICsyMzUsMTkgQEAgc3RhdGljIHZvaWQg
YWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3IsIE1lZGlh
RW5naW5lU3VwcG8KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRpb25PY3Rl
dFN0cmVhbSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgYXBwbGljYXRpb25PY3RldFN0cmVhbSwgKCJhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYXBwbGljYXRpb25PY3RldFN0cmVh
bSgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW07CiB9CiAKIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRQbGFpbigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdGV4dFBsYWluLCAoInRleHQvcGxh
aW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdGV4dFBsYWluKCJ0ZXh0L3BsYWluIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHRleHRQbGFp
bjsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY29kZWNzKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb2RlY3MsICgi
Y29kZWNzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNvZGVjcygiY29kZWNzIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNvZGVjczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApp
bmRleCA3YzBjMDcwLi44OThkNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkltYWdl
QnVmZmVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTUsNyArMTU2LDcgQEAgcHJpdmF0
ZToKIAogU2NyYXRjaEJ1ZmZlciYgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU2NyYXRjaEJ1ZmZlciwgc2NyYXRjaEJ1ZmZl
ciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3JhdGNoQnVmZmVyPiBzY3JhdGNo
QnVmZmVyOwogICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCAxZmFjNzA0Li4zZDZjZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAg
LTM5Miw3ICszOTIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqYm9vbFN0cmluZyhib29sIHZhbCkK
IHR5cGVkZWYgSGFzaE1hcDxNZWRpYVBsYXllciosIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMqPiBQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlOwogc3RhdGljIFBsYXllclRvUHJpdmF0
ZU1hcFR5cGUmIHBsYXllclRvUHJpdmF0ZU1hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFBsYXllclRvUHJpdmF0ZU1hcFR5cGUsIG1hcCwgKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlPiBtYXA7CiAgICAgcmV0dXJu
IG1hcDsKIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXggNzI0ODkzYi4uNjE0MDI1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VBbHBoYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VBbHBoYS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJGaWx0ZXIuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNiw3ICszNyw3IEBA
IFJlZjxTb3VyY2VBbHBoYT4gU291cmNlQWxwaGE6OmNyZWF0ZShGaWx0ZXJFZmZlY3QmIHNvdXJj
ZUVmZmVjdCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
Zywgc19lZmZlY3ROYW1lLCAoIlNvdXJjZUFscGhhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IHNfZWZmZWN0TmFtZSgiU291cmNlQWxwaGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICByZXR1cm4gc19lZmZlY3ROYW1lOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGlj
LmNwcAppbmRleCA2MWJiMWI4Li4yMzEzYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKQEAgLTIz
LDYgKzIzLDcgQEAKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC0zNSw3ICszNiw3IEBAIFJlZjxTb3VyY2VHcmFwaGljPiBTb3Vy
Y2VHcmFwaGljOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
U291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc19lZmZlY3ROYW1lLCAoIlNvdXJjZUdyYXBo
aWMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc19lZmZlY3ROYW1lKCJTb3VyY2VHcmFw
aGljIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNf
ZWZmZWN0TmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IDA4MGE5
MTIuLjIxMDBlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTQzLDYgKzQz
LDcgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFFUS2l0
L1FUS2l0Lmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFFUS2l0KQogCkBAIC0xMjcxLDcgKzEy
NzIsNyBAQCBzdGF0aWMgdm9pZCBhZGRGaWxlVHlwZXNUb0NhY2hlKE5TQXJyYXkgKiBmaWxlVHlw
ZXMsIEhhc2hTZXQ8U3RyaW5nPiAmY2FjaGUpCiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gbWlt
ZUNvbW1vblR5cGVzQ2FjaGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChIYXNoU2V0PFN0cmluZz4sIGNhY2hlLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8U3RyaW5nPj4gY2FjaGU7CiAgICAgc3RhdGljIGJvb2wgdHlwZUxpc3RJbml0aWFs
aXplZCA9IGZhbHNlOwogCiAgICAgaWYgKCF0eXBlTGlzdEluaXRpYWxpemVkKSB7CkBAIC0xMjg1
LDcgKzEyODYsNyBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IG1pbWVDb21tb25UeXBlc0NhY2hl
KCkKIAogc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBtaW1lTW9kZXJuVHlwZXNDYWNoZSgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwgY2FjaGUs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZTsK
ICAgICBzdGF0aWMgYm9vbCB0eXBlTGlzdEluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgCiAgICAg
aWYgKCF0eXBlTGlzdEluaXRpYWxpemVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvQ3Vyc29ySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9D
dXJzb3JJT1MuY3BwCmluZGV4IGY5NmJmYWYuLmM5ZjBlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwCkBAIC0yNiwxMSArMjYsMTMgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBDdXJzb3ImIGN1
cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEN1cnNv
ciwgY3Vyc29yLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEN1cnNvcj4g
Y3Vyc29yOwogICAgIHJldHVybiBjdXJzb3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5j
cHAKaW5kZXggZGU3YjRlMC4uNWMzNjYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgog
I2luY2x1ZGUgIlRpbGVDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzksNyArODAsNyBAQCB2b2lkIFRpbGVD
b250cm9sbGVyTWVtb3J5SGFuZGxlcjo6dHJpbVVucGFyZW50ZWRUaWxlc1RvVGFyZ2V0KGludCB0
YXJnZXQpCiAKIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlciYgdGlsZUNvbnRyb2xsZXJNZW1v
cnlIYW5kbGVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVyLCBzdGF0aWNUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5k
bGVyPiBzdGF0aWNUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXI7CiAgICAgcmV0dXJuIHN0YXRp
Y1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCmluZGV4IGJlMGRjMTUuLjM4
NzU1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90
aW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1v
dGlvbk1hbmFnZXIubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBrR3Jh
dml0eSA9IDkuODA2NjU7CiAKICsgKFdlYkNvcmVNb3Rpb25NYW5hZ2VyICopc2hhcmVkTWFuYWdl
cgogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChSZXRhaW5QdHI8V2ViQ29y
ZU1vdGlvbk1hbmFnZXI+LCBzaGFyZWRNb3Rpb25NYW5hZ2VyLCAoW1tXZWJDb3JlTW90aW9uTWFu
YWdlciBhbGxvY10gaW5pdF0pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PFdlYkNvcmVNb3Rpb25NYW5hZ2VyPj4gc2hhcmVkTW90aW9uTWFuYWdlcihbW1dlYkNvcmVNb3Rp
b25NYW5hZ2VyIGFsbG9jXSBpbml0XSk7CiAgICAgcmV0dXJuIHNoYXJlZE1vdGlvbk1hbmFnZXIu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCAwOWZi
ODI5Li5lM2FkM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0x
NTYsOCArMTU2LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3QKICAgICAgICAgU3RyaW5nIGxv
Y2FsaXplZERldmljZU5hbWU7CiAKICAgICAgICAgaWYgKG1fdmlkZW9FbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpKSB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBhaXJwbGF5LCAoQVNDSUlMaXRlcmFsKCJhaXJwbGF5IikpKTsKLSAgICAgICAg
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHR2b3V0LCAoQVNDSUlM
aXRlcmFsKCJ0dm91dCIpKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBhaXJwbGF5KEFTQ0lJTGl0ZXJhbCgiYWlycGxheSIpKTsKKyAgICAgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHR2b3V0KEFTQ0lJTGl0ZXJhbCgidHZvdXQiKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFN0cmluZyB0eXBlID0gbV92aWRlb0VsZW1lbnQtPm1l
ZGlhQ29udHJvbHNIb3N0KCktPmV4dGVybmFsRGV2aWNlVHlwZSgpOwogICAgICAgICAgICAgaWYg
KHR5cGUgPT0gYWlycGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAKaW5kZXggMGZiOGFlOS4uZDNhNmYyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRPYnNl
cnZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRl
bnRPYnNlcnZhdGlvbi5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIEhhc2hNYXA8dm9pZCAq
LCB2b2lkICo+ICogV2ViVGhyZWFkR2V0T2JzZXJ2ZWRDb250ZW50TW9kaWZpZXJzKCkKIHsKICAg
ICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOwogICAgIHR5cGVkZWYgSGFz
aE1hcDx2b2lkICosIHZvaWQgKj4gVm9pZFZvaWRNYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFZvaWRWb2lkTWFwLCBvYnNlcnZlZENvbnRlbnRNb2RpZmllcnMsICgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Vm9pZFZvaWRNYXA+IG9ic2VydmVkQ29udGVudE1v
ZGlmaWVyczsKICAgICByZXR1cm4gJm9ic2VydmVkQ29udGVudE1vZGlmaWVyczsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXggNDE2ZDVkZC4u
ZjZmY2NhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1t
CkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW1wb3J0
ICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbXBvcnQgIlRleHRSdW4uaCIKKyNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE2MCw3ICsxNjEs
NyBAQCBjb25zdCBmbG9hdCBEcmFnTGlua1VybEZvbnRTaXplID0gMTA7CiBzdGF0aWMgRm9udENh
c2NhZGUmIGZvbnRGcm9tTlNGb250KE5TRm9udCAqZm9udCkKIHsKICAgICBzdGF0aWMgTlNGb250
ICpjdXJyZW50Rm9udDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRm9udENh
c2NhZGUsIGN1cnJlbnRSZW5kZXJlciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxG
b250Q2FzY2FkZT4gY3VycmVudFJlbmRlcmVyOwogICAgIAogICAgIGlmIChbZm9udCBpc0VxdWFs
OmN1cnJlbnRGb250XSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRSZW5kZXJlcjsKQEAgLTE2OCw3
ICsxNjksNyBAQCBzdGF0aWMgRm9udENhc2NhZGUmIGZvbnRGcm9tTlNGb250KE5TRm9udCAqZm9u
dCkKICAgICAgICAgQ0ZSZWxlYXNlKGN1cnJlbnRGb250KTsKICAgICBjdXJyZW50Rm9udCA9IGZv
bnQ7CiAgICAgQ0ZSZXRhaW4oY3VycmVudEZvbnQpOwotICAgIGN1cnJlbnRSZW5kZXJlciA9IEZv
bnRDYXNjYWRlKEZvbnRQbGF0Zm9ybURhdGEodG9DVEZvbnQoZm9udCksIFtmb250IHBvaW50U2l6
ZV0pKTsKKyAgICBjdXJyZW50UmVuZGVyZXIuZ2V0KCkgPSBGb250Q2FzY2FkZShGb250UGxhdGZv
cm1EYXRhKHRvQ1RGb250KGZvbnQpLCBbZm9udCBwb2ludFNpemVdKSk7CiAgICAgcmV0dXJuIGN1
cnJlbnRSZW5kZXJlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
CmluZGV4IGE4ZTZhMTEuLjhjZDk3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKICNpbXBv
cnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4K
KyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCiBzdGF0aWMgTlNSZWN0IGZvY3VzUmluZ0NsaXBSZWN0OwpAQCAtMTMyLDggKzEzMyw4
IEBAIGVudW0gewogCiBUaGVtZSogcGxhdGZvcm1UaGVtZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFRoZW1lTWFjLCB0aGVtZU1hYywgKCkpOwotICAgIHJldHVybiAm
dGhlbWVNYWM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRoZW1lTWFjPiB0aGVtZU1hYzsK
KyAgICByZXR1cm4gJnRoZW1lTWFjLmdldCgpOwogfQogCiAvLyBIZWxwZXIgZnVuY3Rpb25zIHVz
ZWQgYnkgYSBidW5jaCBvZiBkaWZmZXJlbnQgY29udHJvbCBwYXJ0cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQppbmRleCAzNjg2NDUyLi5jMjg0YWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgogCiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgor
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC05OCwxMiArOTksMTIg
QEAgdm9pZCBXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
LCBXZWJDb3JlOjpUaHJlYWRWaW9sYXRpb24KICAgICBpZiAocm91bmQgPj0gTWF4aW11bVRocmVh
ZFZpb2xhdGlvblJvdW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBsb2dnZWRGdW5jdGlvbnMsICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBsb2dnZWRGdW5jdGlvbnM7
CiAgICAgc3dpdGNoICh0aHJlYWRWaW9sYXRpb25CZWhhdmlvcltyb3VuZF0pIHsKICAgICAgICAg
Y2FzZSBOb1RocmVhZENoZWNrOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTG9n
T25GaXJzdFRocmVhZFZpb2xhdGlvbjoKLSAgICAgICAgICAgIGlmIChsb2dnZWRGdW5jdGlvbnMu
YWRkKGZ1bmN0aW9uKS5pc05ld0VudHJ5KSB7CisgICAgICAgICAgICBpZiAobG9nZ2VkRnVuY3Rp
b25zLmdldCgpLmFkZChmdW5jdGlvbikuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgIE5T
TG9nKEAiV2ViS2l0IFRocmVhZGluZyBWaW9sYXRpb24gLSAlcyBjYWxsZWQgZnJvbSBzZWNvbmRh
cnkgdGhyZWFkIiwgZnVuY3Rpb24pOwogICAgICAgICAgICAgICAgIE5TTG9nKEAiQWRkaXRpb25h
bCB0aHJlYWRpbmcgdmlvbGF0aW9ucyBmb3IgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBiZSBsb2dn
ZWQuIik7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRl
eCBiOGU0NGNiLi43OTZjMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RD
bGllbnQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01Myw2ICs1NCw3IEBAIHByaXZhdGU6CiB9OwogCiBj
bGFzcyBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIENhcHR1cmVEZXZpY2VN
YW5hZ2VyIHsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8QVZDYXB0dXJlRGV2aWNl
TWFuYWdlcj47CiBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8Q2FwdHVyZURldmljZUluZm8+
JiBjYXB0dXJlRGV2aWNlTGlzdCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tCmluZGV4IDU3ZDIxNjAuLjczYzMxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjppc0F2YWlsYWJsZSgpCiAKIEFWQ2FwdHVyZURldmljZU1hbmFnZXImIEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNpbmdsZXRvbigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEFWQ2FwdHVyZURldmljZU1hbmFnZXIsIG1hbmFnZXIsICgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QVZDYXB0dXJlRGV2aWNlTWFuYWdlcj4gbWFuYWdlcjsKICAgICByZXR1
cm4gbWFuYWdlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuY3BwCmluZGV4IGI0OWQxZjYuLjYzYzhlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6cGxhdGZvcm1DZW50ZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMsIGNlbnRlciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjPiBjZW50ZXI7CiAgICAgcmV0dXJuIGNlbnRlcjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAK
aW5kZXggYWVjMDQ1Yy4uMzEwMjgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRGF0YVZpZXcu
aD4KICNpbmNsdWRlIDxydW50aW1lL0ludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNzYsNyArNzcsNyBAQCBNb2NrVHJhY2tCb3g6Ok1vY2tUcmFja0Jv
eChBcnJheUJ1ZmZlciogZGF0YSkKIAogY29uc3QgU3RyaW5nJiBNb2NrVHJhY2tCb3g6OnR5cGUo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHRyYWssIChB
U0NJSUxpdGVyYWwoInRyYWsiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IHRyYWsoQVNDSUlMaXRlcmFsKCJ0cmFrIikpOwogICAgIHJldHVybiB0cmFrOwogfQogCkBAIC0x
MDUsNyArMTA2LDcgQEAgTW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlhbGl6YXRpb25C
b3goQXJyYXlCdWZmZXIqIGRhdGEpCiAKIGNvbnN0IFN0cmluZyYgTW9ja0luaXRpYWxpemF0aW9u
Qm94Ojp0eXBlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBpbml0LCAoQVNDSUlMaXRlcmFsKCJpbml0IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBpbml0KEFTQ0lJTGl0ZXJhbCgiaW5pdCIpKTsKICAgICByZXR1cm4gaW5pdDsK
IH0KIApAQCAtMTMzLDcgKzEzNCw3IEBAIE1vY2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3goQXJy
YXlCdWZmZXIqIGRhdGEpCiAKIGNvbnN0IFN0cmluZyYgTW9ja1NhbXBsZUJveDo6dHlwZSgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc21wbCwgKEFTQ0lJ
TGl0ZXJhbCgic21wbCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc21w
bChBU0NJSUxpdGVyYWwoInNtcGwiKSk7CiAgICAgcmV0dXJuIHNtcGw7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggNzdhNzFl
My4uNWQzMDBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC0zNjUsMTQgKzM2NiwxNCBAQCB2b2lkIGZpbmRDaGFyc2V0SW5NZWRpYVR5cGUoY29uc3Qg
U3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGludCYgY2hhcnNldFBvcywgdQogCiBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uIHBhcnNlWFNTUHJvdGVjdGlv
bkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCB1bnNp
Z25lZCYgZmFpbHVyZVBvc2l0aW9uLCBTdHJpbmcmIHJlcG9ydFVSTCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZFRvZ2ds
ZSwgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgMCBvciAxIikpKTsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZFNlcGFyYXRvciwg
KEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgc2VtaWNvbG9uIikpKTsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZEVxdWFscywgKEFT
Q0lJTGl0ZXJhbCgiZXhwZWN0ZWQgZXF1YWxzIHNpZ24iKSkpOwotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkTW9kZSwgKEFTQ0lJ
TGl0ZXJhbCgiaW52YWxpZCBtb2RlIGRpcmVjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRSZXBvcnQsIChBU0NJ
SUxpdGVyYWwoImludmFsaWQgcmVwb3J0IGRpcmVjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkR1cGxpY2F0ZU1vZGUsIChB
U0NJSUxpdGVyYWwoImR1cGxpY2F0ZSBtb2RlIGRpcmVjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkR1cGxpY2F0ZVJlcG9y
dCwgKEFTQ0lJTGl0ZXJhbCgiZHVwbGljYXRlIHJlcG9ydCBkaXJlY3RpdmUiKSkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlk
RGlyZWN0aXZlLCAoQVNDSUlMaXRlcmFsKCJ1bnJlY29nbml6ZWQgZGlyZWN0aXZlIikpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZFRvZ2ds
ZShBU0NJSUxpdGVyYWwoImV4cGVjdGVkIDAgb3IgMSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZFNlcGFyYXRvcihBU0NJSUxpdGVyYWwo
ImV4cGVjdGVkIHNlbWljb2xvbiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiBmYWlsdXJlUmVhc29uSW52YWxpZEVxdWFscyhBU0NJSUxpdGVyYWwoImV4cGVjdGVkIGVxdWFs
cyBzaWduIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZhaWx1cmVSZWFz
b25JbnZhbGlkTW9kZShBU0NJSUxpdGVyYWwoImludmFsaWQgbW9kZSBkaXJlY3RpdmUiKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNvbkludmFsaWRSZXBv
cnQoQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHJlcG9ydCBkaXJlY3RpdmUiKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNvbkR1cGxpY2F0ZU1vZGUoQVNDSUlM
aXRlcmFsKCJkdXBsaWNhdGUgbW9kZSBkaXJlY3RpdmUiKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNvbkR1cGxpY2F0ZVJlcG9ydChBU0NJSUxpdGVyYWwo
ImR1cGxpY2F0ZSByZXBvcnQgZGlyZWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkRGlyZWN0aXZlKEFTQ0lJTGl0ZXJhbCgidW5y
ZWNvZ25pemVkIGRpcmVjdGl2ZSIpKTsKIAogICAgIHVuc2lnbmVkIHBvcyA9IDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5k
ZXggNWEzZGQzOC4uMGEwYTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJU
aW1lci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsNyArNDksNyBAQCBzdGF0aWMg
QnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAmIGJ1aWx0aW5SZXNvdXJjZUhhbmRs
ZUNvbnN0cnVjdG9yTWFwKAogI2Vsc2UKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogI2Vu
ZGlmCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEJ1aWx0aW5SZXNvdXJjZUhh
bmRsZUNvbnN0cnVjdG9yTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXA+IG1hcDsKICAgICByZXR1cm4gbWFw
OwogfQogCkBAIC02MSw3ICs2Miw3IEBAIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJl
c291cmNlSGFuZGxlOjpCdWlsdGluU3luY2hyb25vdXNMb2FkZXI+IEJ1aWx0aW5SCiBzdGF0aWMg
QnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXAmIGJ1aWx0aW5SZXNvdXJj
ZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVyTWFwKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChCdWlsdGluUmVzb3VyY2VI
YW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEJ1aWx0aW5SZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVyTWFwPiBtYXA7CiAg
ICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggZWM3NWVkZS4uOTRl
ZDA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC04MywxNCArODMsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBhbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlSG9zdHMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNo
U2V0PFN0cmluZz4sIGhvc3RzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hT
ZXQ8U3RyaW5nPj4gaG9zdHM7CiAgICAgcmV0dXJuIGhvc3RzOwogfQogCiBzdGF0aWMgSGFzaE1h
cDxTdHJpbmcsIFJldGFpblB0cjxDRkRhdGFSZWY+PiYgY2xpZW50Q2VydHMoKQogewogICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxDRkRhdGFSZWY+PiBDZXJ0c01hcDsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ2VydHNNYXAsIGNlcnRzLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENlcnRzTWFwPiBjZXJ0czsKICAgICByZXR1cm4gY2Vy
dHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWlj
U3RyaW5nS2V5ZWRNUlVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9t
aWNTdHJpbmdLZXllZE1SVUNhY2hlLmgKaW5kZXggOWE1M2NhNi4uZDg5MmU5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmdLZXllZE1SVUNhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmdLZXllZE1S
VUNhY2hlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQXRvbWljU3RyaW5nS2V5ZWRNUlVD
YWNoZV9oCiAjZGVmaW5lIEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGVfaAogCisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDcgKzM3LDcgQEAgcHVibGljOgogICAgIFQg
Z2V0KGNvbnN0IEF0b21pY1N0cmluZyYga2V5KQogICAgIHsKICAgICAgICAgaWYgKGtleS5pc051
bGwoKSkgewotICAgICAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFQsIHZh
bHVlRm9yTnVsbCwgKGNyZWF0ZVZhbHVlRm9yTnVsbEtleSgpKSk7CisgICAgICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VD4gdmFsdWVGb3JOdWxsKGNyZWF0ZVZhbHVlRm9yTnVsbEtleSgp
KTsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvck51bGw7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKaW5kZXgg
NDBiOGJlOS4uNjBiMmU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFJldGFpblB0cjxDRkxvY2Fs
ZVJlZj4gQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+Pjo6
Y3JlYXRlCiAKIHN0YXRpYyBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxv
Y2FsZVJlZj4+JiBjZkxvY2FsZUNhY2hlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+
PiwgY2FjaGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nS2V5
ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+Pj4gY2FjaGU7CiAgICAgcmV0dXJuIGNh
Y2hlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA3
NGUwNTcyLi5iMjhhMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKQEAgLTE2NjAsOCArMTY2MCw4IEBAIFJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6YmxvY2tF
bGVtZW50Q29udGludWF0aW9uKCkgY29uc3QKICAgICAKIHN0YXRpYyBDb250aW51YXRpb25PdXRs
aW5lVGFibGVNYXAqIGNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKENvbnRpbnVhdGlvbk91dGxpbmVUYWJsZU1hcCwgdGFibGUs
ICgpKTsKLSAgICByZXR1cm4gJnRhYmxlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb250
aW51YXRpb25PdXRsaW5lVGFibGVNYXA+IHRhYmxlOworICAgIHJldHVybiAmdGFibGUuZ2V0KCk7
CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmFkZENvbnRpbnVhdGlvbldpdGhPdXRsaW5lKFJlbmRl
cklubGluZSogZmxvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNw
cAppbmRleCBjNzQ1NjM5Li40MDNjYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFr
ZUNvdW50ZXJOb2RlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZp
CiAKIHN0YXRpYyBDb3VudGVyTWFwcyYgY291bnRlck1hcHMoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChDb3VudGVyTWFwcywgc3RhdGljQ291bnRlck1hcHMsICgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q291bnRlck1hcHM+IHN0YXRpY0NvdW50ZXJNYXBz
OwogICAgIHJldHVybiBzdGF0aWNDb3VudGVyTWFwczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRl
eCBkOTNiM2VkLi5hZmNkYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtOTg3LDggKzk4Nyw4IEBA
IHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcChGbGV4Qm94
SXRlcmF0b3ImIGl0ZXJhdG9yLCBib29sCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBjb25zdCBVQ2hhciBlbGxpcHNpc0FuZFNwYWNlWzJdID0geyBob3Jpem9udGFsRWxsaXBzaXMs
ICcgJyB9OwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBlbGxpcHNpc0FuZFNwYWNlU3RyLCAoZWxsaXBzaXNBbmRTcGFjZSwgMikpOwotICAgICAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbGxpcHNpc1N0
ciwgKCZob3Jpem9udGFsRWxsaXBzaXMsIDEpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gZWxsaXBzaXNBbmRTcGFjZVN0cihlbGxpcHNpc0FuZFNwYWNlLCAy
KTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZWxsaXBzaXNT
dHIoJmhvcml6b250YWxFbGxpcHNpcywgMSk7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBs
aW5lU3R5bGUgPSBudW1WaXNpYmxlTGluZXMgPT0gMSA/IGZpcnN0TGluZVN0eWxlKCkgOiBzdHls
ZSgpOwogICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IGxpbmVTdHlsZS5mb250Q2Fz
Y2FkZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAy
NTFiMGVlLi5lYTM3OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKQEAgLTM2MzMsMTIgKzM2MzMsMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3Jt
UmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICBS
ZWZQdHI8SW1hZ2U+IHJlc2l6ZUNvcm5lckltYWdlOwogICAgIEZsb2F0U2l6ZSBjb3JuZXJSZXNp
emVyU2l6ZTsKICAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkgPj0gMikgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSW1hZ2Uq
LCByZXNpemVDb3JuZXJJbWFnZUhpUmVzLCAoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0
ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSkpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUhpUmVzKEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXJAMngiKS5sZWFrUmVmKCkpOwogICAg
ICAgICByZXNpemVDb3JuZXJJbWFnZSA9IHJlc2l6ZUNvcm5lckltYWdlSGlSZXM7CiAgICAgICAg
IGNvcm5lclJlc2l6ZXJTaXplID0gcmVzaXplQ29ybmVySW1hZ2UtPnNpemUoKTsKICAgICAgICAg
Y29ybmVyUmVzaXplclNpemUuc2NhbGUoMC41Zik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEltYWdlKiwgcmVzaXplQ29ybmVySW1hZ2VMb1Jl
cywgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXIiKS5s
ZWFrUmVmKCkpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlKj4gcmVzaXpl
Q29ybmVySW1hZ2VMb1JlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVz
aXplQ29ybmVyIikubGVha1JlZigpKTsKICAgICAgICAgcmVzaXplQ29ybmVySW1hZ2UgPSByZXNp
emVDb3JuZXJJbWFnZUxvUmVzOwogICAgICAgICBjb3JuZXJSZXNpemVyU2l6ZSA9IHJlc2l6ZUNv
cm5lckltYWdlLT5zaXplKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKaW5kZXggNTRmZWEwYy4uMTY5MmRkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBA
IC0yNiwxNCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJT
Y3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJTY3JvbGxiYXJUaGVtZSogUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OnJlbmRlclNjcm9sbGJhclRoZW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoUmVuZGVyU2Nyb2xsYmFyVGhlbWUsIHRoZW1lLCAoKSk7Ci0gICAgcmV0
dXJuICZ0aGVtZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVuZGVyU2Nyb2xsYmFyVGhl
bWU+IHRoZW1lOworICAgIHJldHVybiAmdGhlbWUuZ2V0KCk7CiB9CiAKIHZvaWQgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyJiBzY3JvbGxi
YXIsIGludCYgYmVmb3JlU2l6ZSwgaW50JiBhZnRlclNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBjNjhiYzhjLi4zYWI5YWM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIENvbG9yJiBjdXN0b21Gb2N1c1JpbmdDb2xvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBjb2xvciwgKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb2xvcj4gY29sb3I7CiAgICAgcmV0dXJuIGNv
bG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4
IGU0OTQ3MTMuLjkyNGVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHVuc2lnbmVkIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNT
dXNwZW5zaW9uU2NvcGU6OnNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvCiAKIFdpZGdl
dEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OldpZGdldFRvUGFyZW50TWFwJiBXaWRn
ZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXAoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChXaWRnZXRUb1BhcmVudE1hcCwg
bWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdpZGdldFRvUGFyZW50TWFwPiBt
YXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAppbmRleCA5MTJhYTVjLi4zOTU2NGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8u
aApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlICJT
aGFwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMwLDcgKzEzMSw3IEBAIHBy
aXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0ZDo6dW5pcXVl
X3B0cjxTaGFwZU91dHNpZGVJbmZvPj4gSW5mb01hcDsKICAgICBzdGF0aWMgSW5mb01hcCYgaW5m
b01hcCgpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSW5m
b01hcCwgc3RhdGljSW5mb01hcCwgKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SW5mb01hcD4gc3RhdGljSW5mb01hcDsKICAgICAgICAgcmV0dXJuIHN0YXRpY0luZm9NYXA7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cAppbmRleCA2NThkZWQ1Li4wYmQ5YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTEyNDgsOCArMTI0OCw4IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgUmVuZGVyU3R5bGU6Omh5cGhlblN0cmluZygpIGNvbnN0CiAgICAgICAgIHJldHVy
biBoeXBoZW5hdGlvblN0cmluZzsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkZXBlbmQg
b24gbG9jYWxlLgotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGh5cGhlbk1pbnVzU3RyaW5nLCAoJmh5cGhlbk1pbnVzLCAxKSk7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaHlwaGVuU3RyaW5nLCAoJmh5cGhl
biwgMSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGh5cGhlbk1p
bnVzU3RyaW5nKCZoeXBoZW5NaW51cywgMSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gaHlwaGVuU3RyaW5nKCZoeXBoZW4sIDEpOwogICAgIHJldHVybiBmb250Q2Fz
Y2FkZSgpLnByaW1hcnlGb250KCkuZ2x5cGhGb3JDaGFyYWN0ZXIoaHlwaGVuKSA/IGh5cGhlblN0
cmluZyA6IGh5cGhlbk1pbnVzU3RyaW5nOwogfQogCkBAIC0xMjYxLDI4ICsxMjYxLDI4IEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSBj
b25zdAogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0N1c3RvbToKICAgICAgICAgcmV0dXJuIHRl
eHRFbXBoYXNpc0N1c3RvbU1hcmsoKTsKICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3Q6IHsK
LSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmls
bGVkRG90U3RyaW5nLCAoJmJ1bGxldCwgMSkpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvcGVuRG90U3RyaW5nLCAoJndoaXRlQnVsbGV0LCAx
KSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpbGxlZERv
dFN0cmluZygmYnVsbGV0LCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gb3BlbkRvdFN0cmluZygmd2hpdGVCdWxsZXQsIDEpOwogICAgICAgICByZXR1cm4g
dGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWREb3RT
dHJpbmcgOiBvcGVuRG90U3RyaW5nOwogICAgIH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtD
aXJjbGU6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgZmlsbGVkQ2lyY2xlU3RyaW5nLCAoJmJsYWNrQ2lyY2xlLCAxKSk7Ci0gICAgICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9wZW5DaXJjbGVTdHJp
bmcsICgmd2hpdGVDaXJjbGUsIDEpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gZmlsbGVkQ2lyY2xlU3RyaW5nKCZibGFja0NpcmNsZSwgMSk7CisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wZW5DaXJjbGVTdHJpbmcoJndo
aXRlQ2lyY2xlLCAxKTsKICAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0
RW1waGFzaXNGaWxsRmlsbGVkID8gZmlsbGVkQ2lyY2xlU3RyaW5nIDogb3BlbkNpcmNsZVN0cmlu
ZzsKICAgICB9CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrRG91YmxlQ2lyY2xlOiB7Ci0gICAg
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpbGxlZERv
dWJsZUNpcmNsZVN0cmluZywgKCZmaXNoZXllLCAxKSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9wZW5Eb3VibGVDaXJjbGVTdHJpbmcsICgm
YnVsbHNleWUsIDEpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gZmlsbGVkRG91YmxlQ2lyY2xlU3RyaW5nKCZmaXNoZXllLCAxKTsKKyAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlbkRvdWJsZUNpcmNsZVN0cmluZygmYnVs
bHNleWUsIDEpOwogICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBo
YXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWREb3VibGVDaXJjbGVTdHJpbmcgOiBvcGVuRG91YmxlQ2ly
Y2xlU3RyaW5nOwogICAgIH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtUcmlhbmdsZTogewot
ICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWxs
ZWRUcmlhbmdsZVN0cmluZywgKCZibGFja1VwUG9pbnRpbmdUcmlhbmdsZSwgMSkpOwotICAgICAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvcGVuVHJpYW5n
bGVTdHJpbmcsICgmd2hpdGVVcFBvaW50aW5nVHJpYW5nbGUsIDEpKTsKKyAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkVHJpYW5nbGVTdHJpbmcoJmJsYWNr
VXBQb2ludGluZ1RyaWFuZ2xlLCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gb3BlblRyaWFuZ2xlU3RyaW5nKCZ3aGl0ZVVwUG9pbnRpbmdUcmlhbmdsZSwg
MSk7CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmls
bEZpbGxlZCA/IGZpbGxlZFRyaWFuZ2xlU3RyaW5nIDogb3BlblRyaWFuZ2xlU3RyaW5nOwogICAg
IH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtTZXNhbWU6IHsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVkU2VzYW1lU3RyaW5nLCAo
JnNlc2FtZURvdCwgMSkpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBvcGVuU2VzYW1lU3RyaW5nLCAoJndoaXRlU2VzYW1lRG90LCAxKSk7Cisg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpbGxlZFNlc2FtZVN0
cmluZygmc2VzYW1lRG90LCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gb3BlblNlc2FtZVN0cmluZygmd2hpdGVTZXNhbWVEb3QsIDEpOwogICAgICAgICBy
ZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQgPyBmaWxs
ZWRTZXNhbWVTdHJpbmcgOiBvcGVuU2VzYW1lU3RyaW5nOwogICAgIH0KICAgICBjYXNlIFRleHRF
bXBoYXNpc01hcmtBdXRvOgpAQCAtMTI5NywxMyArMTI5NywxMyBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3QKICNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpCiBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+
JiBSZW5kZXJTdHlsZTo6aW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+LCBlbXB0
eUxpc3QsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0eWxlRGFzaGJv
YXJkUmVnaW9uPj4gZW1wdHlMaXN0OwogICAgIHJldHVybiBlbXB0eUxpc3Q7CiB9CiAKIGNvbnN0
IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIFJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJk
UmVnaW9ucygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxT
dHlsZURhc2hib2FyZFJlZ2lvbj4sIG5vbmVMaXN0LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4+IG5vbmVMaXN0OwogICAgIHN0YXRp
YyBib29sIG5vbmVMaXN0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAogICAgIGlmICghbm9uZUxpc3RJ
bml0aWFsaXplZCkgewpAQCAtMTMxNCw3ICsxMzE0LDcgQEAgY29uc3QgVmVjdG9yPFN0eWxlRGFz
aGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKCkKICAgICAg
ICAgcmVnaW9uLm9mZnNldC5ib3R0b20oKSA9IExlbmd0aCgpOwogICAgICAgICByZWdpb24ub2Zm
c2V0LmxlZnQoKSA9IExlbmd0aCgpOwogICAgICAgICByZWdpb24udHlwZSA9IFN0eWxlRGFzaGJv
YXJkUmVnaW9uOjpOb25lOwotICAgICAgICBub25lTGlzdC5hcHBlbmQocmVnaW9uKTsKKyAgICAg
ICAgbm9uZUxpc3QuZ2V0KCkuYXBwZW5kKHJlZ2lvbik7CiAgICAgICAgIG5vbmVMaXN0SW5pdGlh
bGl6ZWQgPSB0cnVlOwogICAgIH0KICAgICByZXR1cm4gbm9uZUxpc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDY1ODVjNmUuLmVkNDlhYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03
MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiVW5pY29kZUJpZGkuaCIKICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yMDA4LDcgKzIwMDksNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IGluaXRpYWxDb2x1bW5Db3VudCgpIHsgcmV0
dXJuIDE7IH0KICAgICBzdGF0aWMgQ29sdW1uRmlsbCBpbml0aWFsQ29sdW1uRmlsbCgpIHsgcmV0
dXJuIENvbHVtbkZpbGxCYWxhbmNlOyB9CiAgICAgc3RhdGljIENvbHVtblNwYW4gaW5pdGlhbENv
bHVtblNwYW4oKSB7IHJldHVybiBDb2x1bW5TcGFuTm9uZTsgfQotICAgIHN0YXRpYyBjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb25zJiBpbml0aWFsVHJhbnNmb3JtKCkgeyBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoVHJhbnNmb3JtT3BlcmF0aW9ucywgb3BzLCAoKSk7IHJldHVybiBvcHM7
IH0KKyAgICBzdGF0aWMgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgaW5pdGlhbFRyYW5zZm9y
bSgpIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRyYW5zZm9ybU9wZXJhdGlvbnM+IG9wczsgcmV0
dXJuIG9wczsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5zZm9ybU9yaWdpblgoKSB7
IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0
aWFsVHJhbnNmb3JtT3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0K
ICAgICBzdGF0aWMgRVBvaW50ZXJFdmVudHMgaW5pdGlhbFBvaW50ZXJFdmVudHMoKSB7IHJldHVy
biBQRV9BVVRPOyB9CkBAIC0yMTE0LDkgKzIxMTUsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIGluaXRpYWxEYXNoYm9hcmRSZWdpb25z
KCk7CiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIG5vbmVE
YXNoYm9hcmRSZWdpb25zKCk7CiAjZW5kaWYKLSAgICBzdGF0aWMgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgaW5pdGlhbEZpbHRlcigpIHsgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZp
bHRlck9wZXJhdGlvbnMsIG9wcywgKCkpOyByZXR1cm4gb3BzOyB9CisgICAgc3RhdGljIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGluaXRpYWxGaWx0ZXIoKSB7IHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxGaWx0ZXJPcGVyYXRpb25zPiBvcHM7IHJldHVybiBvcHM7IH0KICNpZiBFTkFCTEUoRklMVEVS
U19MRVZFTF8yKQotICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBpbml0aWFsQmFj
a2Ryb3BGaWx0ZXIoKSB7IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGaWx0ZXJPcGVy
YXRpb25zLCBvcHMsICgpKTsgcmV0dXJuIG9wczsgfQorICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiBpbml0aWFsQmFja2Ryb3BGaWx0ZXIoKSB7IHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxGaWx0ZXJPcGVyYXRpb25zPiBvcHM7IHJldHVybiBvcHM7IH0KICNlbmRpZgogI2lmIEVOQUJM
RShDU1NfQ09NUE9TSVRJTkcpCiAgICAgc3RhdGljIEJsZW5kTW9kZSBpbml0aWFsQmxlbmRNb2Rl
KCkgeyByZXR1cm4gQmxlbmRNb2RlTm9ybWFsOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAppbmRleCAzYmUxZDdiLi5lYzJlMjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKQEAgLTEzMSwx
NSArMTMxLDE1IEBAIGJvb2wgUmVuZGVyU1ZHUGF0aDo6c2hvdWxkU3Ryb2tlWmVyb0xlbmd0aFN1
YnBhdGgoKSBjb25zdAogCiBQYXRoKiBSZW5kZXJTVkdQYXRoOjp6ZXJvTGVuZ3RoTGluZWNhcFBh
dGgoY29uc3QgRmxvYXRQb2ludCYgbGluZWNhcFBvc2l0aW9uKSBjb25zdAogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChQYXRoLCB0ZW1wUGF0aCwgKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxQYXRoPiB0ZW1wUGF0aDsKIAotICAgIHRlbXBQYXRoLmNsZWFyKCk7
CisgICAgdGVtcFBhdGguZ2V0KCkuY2xlYXIoKTsKICAgICBpZiAoc3R5bGUoKS5zdmdTdHlsZSgp
LmNhcFN0eWxlKCkgPT0gU3F1YXJlQ2FwKQotICAgICAgICB0ZW1wUGF0aC5hZGRSZWN0KHplcm9M
ZW5ndGhTdWJwYXRoUmVjdChsaW5lY2FwUG9zaXRpb24sIHRoaXMtPnN0cm9rZVdpZHRoKCkpKTsK
KyAgICAgICAgdGVtcFBhdGguZ2V0KCkuYWRkUmVjdCh6ZXJvTGVuZ3RoU3VicGF0aFJlY3QobGlu
ZWNhcFBvc2l0aW9uLCB0aGlzLT5zdHJva2VXaWR0aCgpKSk7CiAgICAgZWxzZQotICAgICAgICB0
ZW1wUGF0aC5hZGRFbGxpcHNlKHplcm9MZW5ndGhTdWJwYXRoUmVjdChsaW5lY2FwUG9zaXRpb24s
IHRoaXMtPnN0cm9rZVdpZHRoKCkpKTsKKyAgICAgICAgdGVtcFBhdGguZ2V0KCkuYWRkRWxsaXBz
ZSh6ZXJvTGVuZ3RoU3VicGF0aFJlY3QobGluZWNhcFBvc2l0aW9uLCB0aGlzLT5zdHJva2VXaWR0
aCgpKSk7CiAKLSAgICByZXR1cm4gJnRlbXBQYXRoOworICAgIHJldHVybiAmdGVtcFBhdGguZ2V0
KCk7CiB9CiAKIEZsb2F0UmVjdCBSZW5kZXJTVkdQYXRoOjp6ZXJvTGVuZ3RoU3VicGF0aFJlY3Qo
Y29uc3QgRmxvYXRQb2ludCYgbGluZWNhcFBvc2l0aW9uLCBmbG9hdCBzdHJva2VXaWR0aCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAK
aW5kZXggODIyODU4My4uOGExZmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTE4NywxMiArMTg3LDEyIEBAIHZvaWQgUmVuZGVy
U1ZHU2hhcGU6OmxheW91dCgpCiAKIFBhdGgqIFJlbmRlclNWR1NoYXBlOjpub25TY2FsaW5nU3Ry
b2tlUGF0aChjb25zdCBQYXRoKiBwYXRoLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZVRy
YW5zZm9ybSkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUGF0
aCwgdGVtcFBhdGgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UGF0aD4gdGVtcFBh
dGg7CiAKLSAgICB0ZW1wUGF0aCA9ICpwYXRoOwotICAgIHRlbXBQYXRoLnRyYW5zZm9ybShzdHJv
a2VUcmFuc2Zvcm0pOworICAgIHRlbXBQYXRoLmdldCgpID0gKnBhdGg7CisgICAgdGVtcFBhdGgu
Z2V0KCkudHJhbnNmb3JtKHN0cm9rZVRyYW5zZm9ybSk7CiAKLSAgICByZXR1cm4gJnRlbXBQYXRo
OworICAgIHJldHVybiAmdGVtcFBhdGguZ2V0KCk7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHU2hhcGU6
OnNldHVwTm9uU2NhbGluZ1N0cm9rZUNvbnRleHQoQWZmaW5lVHJhbnNmb3JtJiBzdHJva2VUcmFu
c2Zvcm0sIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCA4YmMwYTk5Li41MzdmZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFNW
R1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIFBhaQogCiBzdGF0aWMgQWZmaW5lVHJhbnNmb3JtJiBjdXJyZW50Q29udGVu
dFRyYW5zZm9ybWF0aW9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QWZmaW5lVHJhbnNmb3JtLCBzX2N1cnJlbnRDb250ZW50VHJhbnNmb3JtYXRpb24sICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QWZmaW5lVHJhbnNmb3JtPiBzX2N1cnJlbnRDb250ZW50
VHJhbnNmb3JtYXRpb247CiAgICAgcmV0dXJuIHNfY3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlv
bjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNv
dXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3Bw
CmluZGV4IGU2OGNlMzguLjJlMWYyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAgLTQ1LDQ0ICs0NSw0NCBAQCBTVkdSZXNvdXJjZXM6OlNW
R1Jlc291cmNlcygpCiAKIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGNsaXBwZXJGaWx0
ZXJNYXNrZXJUYWdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFz
aFNldDxBdG9taWNTdHJpbmc+LCBzX3RhZ0xpc3QsICgpKTsKLSAgICBpZiAoc190YWdMaXN0Lmlz
RW1wdHkoKSkgeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmlu
Zz4+IHNfdGFnTGlzdDsKKyAgICBpZiAoc190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgewogICAg
ICAgICAvLyAiY29udGFpbmVyIGVsZW1lbnRzIjogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEv
aW50cm8uaHRtbCNUZXJtQ29udGFpbmVyRWxlbWVudAogICAgICAgICAvLyAiZ3JhcGhpY3MgZWxl
bWVudHMiIDogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvaW50cm8uaHRtbCNUZXJtR3JhcGhp
Y3NFbGVtZW50Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmFUYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpjaXJjbGVUYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjplbGxpcHNlVGFnLmxvY2FsTmFt
ZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Z2x5cGhUYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpnVGFnLmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6aW1hZ2VUYWcubG9jYWxOYW1lKCkpOwot
ICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKLSAg
ICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bWFya2VyVGFnLmxvY2FsTmFtZSgpKTsKLSAg
ICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bWFza1RhZy5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6Om1pc3NpbmdfZ2x5cGhUYWcubG9jYWxOYW1lKCkp
OwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5hbWUoKSk7
Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgp
KTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cmVjdFRhZy5sb2NhbE5hbWUoKSk7
Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnN2Z1RhZy5sb2NhbE5hbWUoKSk7Ci0g
ICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRleHRUYWcubG9jYWxOYW1lKCkpOwotICAg
ICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp1c2VUYWcubG9jYWxOYW1lKCkpOworICAgICAg
ICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjphVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAg
ICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6Y2lyY2xlVGFnLmxvY2FsTmFtZSgpKTsK
KyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6ZWxsaXBzZVRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmdseXBoVGFnLmxv
Y2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6Z1RhZy5s
b2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmltYWdl
VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6
bGluZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFt
ZXM6Om1hcmtlclRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6Om1hc2tUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCku
YWRkKFNWR05hbWVzOjptaXNzaW5nX2dseXBoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190
YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAg
IHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkpOwor
ICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJlY3RUYWcubG9j
YWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpzdmdUYWcu
bG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0ZXh0
VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6
dXNlVGFnLmxvY2FsTmFtZSgpKTsKIAogICAgICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBkZWZp
bml0aW9ucyBpcyB0aGUgY2xpcFBhdGggZWxlbWVudCwgdGhlIFNWRyBzcGVjIHNheXMgdGhvdWdo
OgogICAgICAgICAvLyBUaGUgImNsaXBQYXRoIiBlbGVtZW50IG9yIGFueSBvZiBpdHMgY2hpbGRy
ZW4gY2FuIHNwZWNpZnkgcHJvcGVydHkgImNsaXAtcGF0aCIuCiAgICAgICAgIC8vIFNvIHdlIGhh
dmUgdG8gYWRkIGNsaXBQYXRoVGFnIGhlcmUsIG90aGVyd2hpc2UgY2xpcC1wYXRoIG9uIGNsaXBQ
YXRoIHdpbGwgZmFpbC4KICAgICAgICAgLy8gKEFscmVhZHkgbWFpbGVkIFNWRyBXRywgd2FpdGlu
ZyBmb3IgYSBzb2x1dGlvbikKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Y2xpcFBh
dGhUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVz
OjpjbGlwUGF0aFRhZy5sb2NhbE5hbWUoKSk7CiAKICAgICAgICAgLy8gTm90IGxpc3RlZCBpbiB0
aGUgZGVmaW5pdGlvbnMgYXJlIHRoZSB0ZXh0IGNvbnRlbnQgZWxlbWVudHMsIHRob3VnaCBmaWx0
ZXIvY2xpcHBlci9tYXNrZXIgb24gdHNwYW4vdGV4dC8uLiBpcyBhbGxvd2VkLgogICAgICAgICAv
LyAoQWxyZWFkeSBtYWlsZWQgU1ZHIFdHLCB3YWl0aW5nIGZvciBhIHNvbHV0aW9uKQotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjphbHRHbHlwaFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRleHRQYXRoVGFnLmxvY2FsTmFtZSgpKTsKLSAg
ICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6dHJlZlRhZy5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRzcGFuVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAg
ICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6YWx0R2x5cGhUYWcubG9jYWxOYW1lKCkp
OworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0ZXh0UGF0aFRhZy5sb2Nh
bE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRyZWZUYWcu
bG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0c3Bh
blRhZy5sb2NhbE5hbWUoKSk7CiAKICAgICAgICAgLy8gTm90IGxpc3RlZCBpbiB0aGUgZGVmaW5p
dGlvbnMgaXMgdGhlIGZvcmVpZ25PYmplY3QgZWxlbWVudCwgYnV0IGNsaXAtcGF0aAogICAgICAg
ICAvLyBpcyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGUuCi0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZH
TmFtZXM6OmZvcmVpZ25PYmplY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3Qu
Z2V0KCkuYWRkKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnLmxvY2FsTmFtZSgpKTsKIAogICAg
ICAgICAvLyBFbGVtZW50cyB0aGF0IHdlIGlnbm9yZSwgYXMgaXQgZG9lc24ndCBtYWtlIGFueSBz
ZW5zZS4KICAgICAgICAgLy8gZGVmcywgcGF0dGVybiwgc3dpdGNoIChGSVhNRTogTWFpbCBTVkcg
V0cgYWJvdXQgdGhlc2UpCkBAIC05NCwxMiArOTQsMTIgQEAgc3RhdGljIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiYgY2xpcHBlckZpbHRlck1hc2tlclRhZ3MoKQogCiBzdGF0aWMgSGFzaFNldDxBdG9t
aWNTdHJpbmc+JiBtYXJrZXJUYWdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBzX3RhZ0xpc3QsICgpKTsKLSAgICBpZiAoc190
YWdMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpsaW5l
VGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cGF0aFRh
Zy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlnb25U
YWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5bGlu
ZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRv
bWljU3RyaW5nPj4gc190YWdMaXN0OworICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgp
KSB7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxO
YW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxv
Y2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWdv
blRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6
OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gc190YWdMaXN0
OwpAQCAtMTA3LDIwICsxMDcsMjAgQEAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgbWFy
a2VyVGFncygpCiAKIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGZpbGxBbmRTdHJva2VU
YWdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9t
aWNTdHJpbmc+LCBzX3RhZ0xpc3QsICgpKTsKLSAgICBpZiAoc190YWdMaXN0LmlzRW1wdHkoKSkg
ewotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjphbHRHbHlwaFRhZy5sb2NhbE5hbWUo
KSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmNpcmNsZVRhZy5sb2NhbE5hbWUo
KSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmVsbGlwc2VUYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgp
KTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7
Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkp
OwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUo
KSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnJlY3RUYWcubG9jYWxOYW1lKCkp
OwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0ZXh0VGFnLmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFBhdGhUYWcubG9jYWxOYW1lKCkp
OwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0cmVmVGFnLmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6dHNwYW5UYWcubG9jYWxOYW1lKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IHNfdGFnTGlz
dDsKKyAgICBpZiAoc190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBzX3RhZ0xp
c3QuZ2V0KCkuYWRkKFNWR05hbWVzOjphbHRHbHlwaFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAg
IHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmNpcmNsZVRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmVsbGlwc2VUYWcubG9jYWxOYW1l
KCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cGF0aFRhZy5s
b2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHln
b25UYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVz
Ojpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6OnJlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCku
YWRkKFNWR05hbWVzOjp0ZXh0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0Lmdl
dCgpLmFkZChTVkdOYW1lczo6dGV4dFBhdGhUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3Rh
Z0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0cmVmVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAg
c190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dHNwYW5UYWcubG9jYWxOYW1lKCkpOwogICAg
IH0KIAogICAgIHJldHVybiBzX3RhZ0xpc3Q7CkBAIC0xMjgsMTIgKzEyOCwxMiBAQCBzdGF0aWMg
SGFzaFNldDxBdG9taWNTdHJpbmc+JiBmaWxsQW5kU3Ryb2tlVGFncygpCiAKIHN0YXRpYyBIYXNo
U2V0PEF0b21pY1N0cmluZz4mIGNoYWluYWJsZVJlc291cmNlVGFncygpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWljU3RyaW5nPiwgc190YWdMaXN0
LCAoKSk7Ci0gICAgaWYgKHNfdGFnTGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgc190YWdMaXN0
LmFkZChTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpmaWx0ZXJUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwYXR0ZXJuVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcubG9jYWxOYW1lKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IHNfdGFnTGlz
dDsKKyAgICBpZiAoc190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBzX3RhZ0xp
c3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmZpbHRlclRhZy5sb2NhbE5hbWUo
KSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBhdHRlcm5UYWcubG9j
YWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpyYWRpYWxH
cmFkaWVudFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHNfdGFnTGlzdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5nbGUuY3BwCmluZGV4IDU4OGYyNzcuLjlhNjk0ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuZ2xlLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEyLDE2ICsxMTMs
MTYgQEAgU3RyaW5nIFNWR0FuZ2xlOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsKICAgICBzd2l0
Y2ggKG1fdW5pdFR5cGUpIHsKICAgICBjYXNlIFNWR19BTkdMRVRZUEVfREVHOiB7Ci0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRlZ1N0cmluZywgKEFTQ0lJ
TGl0ZXJhbCgiZGVnIikpKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzKSArIGRlZ1N0cmluZzsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gZGVnU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZGVnIikpOworICAgICAgICByZXR1
cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgZGVnU3RyaW5nLmdl
dCgpOwogICAgIH0KICAgICBjYXNlIFNWR19BTkdMRVRZUEVfUkFEOiB7Ci0gICAgICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHJhZFN0cmluZywgKEFTQ0lJTGl0ZXJh
bCgicmFkIikpKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNp
ZmllZFVuaXRzKSArIHJhZFN0cmluZzsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gcmFkU3RyaW5nKEFTQ0lJTGl0ZXJhbCgicmFkIikpOworICAgICAgICByZXR1cm4gU3Ry
aW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgcmFkU3RyaW5nLmdldCgpOwog
ICAgIH0KICAgICBjYXNlIFNWR19BTkdMRVRZUEVfR1JBRDogewotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBncmFkU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJn
cmFkIikpKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzKSArIGdyYWRTdHJpbmc7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGdyYWRTdHJpbmcoQVNDSUlMaXRlcmFsKCJncmFkIikpOworICAgICAgICByZXR1cm4gU3Ry
aW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgZ3JhZFN0cmluZy5nZXQoKTsK
ICAgICB9CiAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgogICAgIGNhc2UgU1ZH
X0FOR0xFVFlQRV9VTktOT1dOOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVDb2xvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVDb2xv
ckVsZW1lbnQuY3BwCmluZGV4IGQ0NDkyYWQuLjBmYjZkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgUmVmPFNW
R0FuaW1hdGVDb2xvckVsZW1lbnQ+IFNWR0FuaW1hdGVDb2xvckVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJgogCiBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVWYWx1ZUlzQ3VycmVudENv
bG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY3VycmVudENvbG9yLCAoImN1cnJlbnRDb2xvciIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjdXJyZW50Q29sb3IoImN1cnJlbnRDb2xvciIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiB2YWx1ZSA9
PSBjdXJyZW50Q29sb3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQuY3BwCmluZGV4IDQ5NmMyZjMuLjc5YzA0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAtMTA4LDggKzEwOCw4IEBA
IHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0CiAgICAgCiBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6
Um90YXRlTW9kZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cm90YXRlTW9kZSgpIGNvbnN0CiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
YXV0b1ZhbCwgKCJhdXRvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGF1
dG9SZXZlcnNlLCAoImF1dG8tcmV2ZXJzZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBh
dXRvVmFsKCJhdXRvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYXV0b1JldmVyc2UoImF1
dG8tcmV2ZXJzZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgcm90YXRlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpyb3RhdGVB
dHRyKTsKICAgICBpZiAocm90YXRlID09IGF1dG9WYWwpCiAgICAgICAgIHJldHVybiBSb3RhdGVB
dXRvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCmluZGV4IDM0
NjI4YWQuLmViMTI0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRp
b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVu
dC5jcHAKQEAgLTI4NiwxMCArMjg2LDEwIEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6dXBk
YXRlQW5pbWF0aW9uTW9kZSgpCiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0Q2FsY01v
ZGUoY29uc3QgQXRvbWljU3RyaW5nJiBjYWxjTW9kZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkaXNjcmV0ZSwgKCJkaXNjcmV0ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBsaW5lYXIsICgibGluZWFyIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHBhY2VkLCAoInBhY2VkIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNwbGluZSwgKCJzcGxpbmUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZGlzY3JldGUoImRpc2NyZXRlIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21pY1N0cmluZz4gbGluZWFyKCJsaW5lYXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBwYWNlZCgicGFjZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzcGxpbmUoInNwbGlu
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChjYWxjTW9k
ZSA9PSBkaXNjcmV0ZSkKICAgICAgICAgc2V0Q2FsY01vZGUoQ2FsY01vZGVEaXNjcmV0ZSk7CiAg
ICAgZWxzZSBpZiAoY2FsY01vZGUgPT0gbGluZWFyKQpAQCAtMzA0LDggKzMwNCw4IEBAIHZvaWQg
U1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0Q2FsY01vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBjYWxj
TW9kZSkKIAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzZXRBdHRyaWJ1dGVUeXBlKGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjc3MsICgiQ1NTIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHhtbCwgKCJYTUwiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gY3NzKCJDU1MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB4bWwoIlhNTCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChhdHRyaWJ1dGVU
eXBlID09IGNzcykKICAgICAgICAgbV9hdHRyaWJ1dGVUeXBlID0gQXR0cmlidXRlVHlwZUNTUzsK
ICAgICBlbHNlIGlmIChhdHRyaWJ1dGVUeXBlID09IHhtbCkKQEAgLTMzMiwxNCArMzMyLDE0IEBA
IFN0cmluZyBTVkdBbmltYXRpb25FbGVtZW50Ojpmcm9tVmFsdWUoKSBjb25zdAogCiBib29sIFNW
R0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1bSwgKCJzdW0iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VtKCJzdW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0
dHJpYnV0ZShTVkdOYW1lczo6YWRkaXRpdmVBdHRyKTsKICAgICByZXR1cm4gdmFsdWUgPT0gc3Vt
IHx8IGFuaW1hdGlvbk1vZGUoKSA9PSBCeUFuaW1hdGlvbjsKIH0KIAogYm9vbCBTVkdBbmltYXRp
b25FbGVtZW50Ojppc0FjY3VtdWxhdGVkKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdW0sICgic3VtIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IHN1bSgic3VtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGZhc3RHZXRBdHRyaWJ1
dGUoU1ZHTmFtZXM6OmFjY3VtdWxhdGVBdHRyKTsKICAgICByZXR1cm4gdmFsdWUgPT0gc3VtICYm
IGFuaW1hdGlvbk1vZGUoKSAhPSBUb0FuaW1hdGlvbjsKIH0KQEAgLTY1Niw3ICs2NTYsNyBAQCB2
b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFkanVzdEZvckluaGVyaXRhbmNlKFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQsIGNvbnN0CiAKIHN0YXRpYyBib29sIGluaGVyaXRzRnJvbVByb3BlcnR5
KFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGluaGVyaXQsICgiaW5oZXJpdCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBpbmhlcml0KCJpbmhlcml0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAgICAgCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSB8fCB2YWx1ZSAhPSBpbmhlcml0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCAxZmFlYTUzLi5kZGY5MjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAg
LTc1LDI1ICs3NSwyNSBAQCBSZWY8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50
aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6a2VybmVsVW5p
dExlbmd0aFlJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHS2VybmVsVW5pdExlbmd0aFkiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0TGVuZ3RoWSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50
aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ6Om9yZGVyWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdPcmRlclgiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdPcmRlclgiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpvcmRlcllJZGVudGlmaWVy
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBz
X2lkZW50aWZpZXIsICgiU1ZHT3JkZXJZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRp
ZmllcigiU1ZHT3JkZXJZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBiYTJhM2Q0Li4xMmZhMGJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcApAQCAtNjMsMTMgKzYzLDEzIEBAIFJlZjxTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ+
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpCiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjprZXJuZWxVbml0TGVu
Z3RoWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmll
cjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6
Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRM
ZW5ndGhZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5p
dExlbmd0aFkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudC5jcHAKaW5kZXggYWVlMDhkZC4uZjkzZGFjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBS
ZWY8U1ZHRkVEcm9wU2hhZG93RWxlbWVudD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdTdGRE
ZXZpYXRpb25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHU3RkRGV2
aWF0aW9uWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVEcm9wU2hhZG93
RWxlbWVudDo6c3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdTdGREZXZp
YXRpb25ZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHU3RkRGV2aWF0
aW9uWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBz
X2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5jcHAKaW5kZXggMjJjMTc4Yi4uN2IyMWRlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAgLTU3LDEzICs1NywxMyBA
QCBSZWY8U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJT
VkdTdGREZXZpYXRpb25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZH
U3RkRGV2aWF0aW9uWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNW
R1N0ZERldmlhdGlvblkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdT
dGREZXZpYXRpb25ZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9y
cGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IDU5ZjA3ZDIuLjMzNzBlMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTU2LDEzICs1NiwxMyBA
QCBSZWY8U1ZHRkVNb3JwaG9sb2d5RWxlbWVudD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6cmFkaXVzWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdSYWRpdXNY
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHUmFkaXVzWCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cmFkaXVz
WUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdSYWRpdXNZIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IHNfaWRlbnRpZmllcigiU1ZHUmFkaXVzWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBmZWY3
ZWVkLi4xOWY1ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC02NywxMyArNjcsMTMgQEAgUmVmPFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQ+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWEKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxV
bml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5l
bFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmll
ciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50
aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCmluZGV4IDg2ZGNhZjEuLmI4MDhiZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKQEAg
LTYxLDEzICs2MSwxMyBAQCBSZWY8U1ZHRkVUdXJidWxlbmNlRWxlbWVudD4gU1ZHRkVUdXJidWxl
bmNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lk
ZW50aWZpZXIsICgiU1ZHQmFzZUZyZXF1ZW5jeVgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19p
ZGVudGlmaWVyKCJTVkdCYXNlRnJlcXVlbmN5WCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lk
ZW50aWZpZXIsICgiU1ZHQmFzZUZyZXF1ZW5jeVkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19p
ZGVudGlmaWVyKCJTVkdCYXNlRnJlcXVlbmN5WSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAppbmRleCBmMzJjMzJmLi4wYTc1ZjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCkBAIC04MiwxMyArODIsMTMgQEAgUmVmPFNW
R0ZpbHRlckVsZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2MKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGaWx0ZXJFbGVtZW50
OjpmaWx0ZXJSZXNYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0ZpbHRlclJlc1giLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdGaWx0ZXJSZXNYIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGaWx0ZXJFbGVtZW50OjpmaWx0ZXJSZXNZSWRlbnRp
ZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
Zywgc19pZGVudGlmaWVyLCAoIlNWR0ZpbHRlclJlc1kiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
c19pZGVudGlmaWVyKCJTVkdGaWx0ZXJSZXNZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5
cGhNYXAuaAppbmRleCBiNzQ3YzZkLi5jZTBiNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR2x5cGhNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAu
aApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTVkdHbHlwaCYgc3ZnR2x5
cGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghZ2x5cGgg
fHwgZ2x5cGggPiBtX2dseXBoVGFibGUuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU1ZHR2x5cGgsIGRlZmF1bHRHbHlwaCwgKCkpOworICAgICAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNWR0dseXBoPiBkZWZhdWx0R2x5cGg7CiAgICAg
ICAgICAgICByZXR1cm4gZGVmYXVsdEdseXBoOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBt
X2dseXBoVGFibGVbZ2x5cGggLSAxXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMYW5nU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAKaW5k
ZXggNDhiZTBkYy4uYjY1MTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xh
bmdTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAgdm9pZCBTVkdMYW5nU3BhY2U6OnNldFhtbGxhbmcoY29uc3QgQXRvbWlj
U3RyaW5nJiB4bWxMYW5nKQogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdMYW5nU3BhY2U6OnhtbHNw
YWNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc3BhY2UpIHsKLSAgICAgICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGVmYXVsdFN0cmluZywgKCJk
ZWZhdWx0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBkZWZhdWx0U3RyaW5nKCJk
ZWZhdWx0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJl
dHVybiBkZWZhdWx0U3RyaW5nOwogICAgIH0KIApAQCAtNjIsNyArNjIsNyBAQCBib29sIFNWR0xh
bmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
ICAgICAKIHZvaWQgU1ZHTGFuZ1NwYWNlOjphZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8
UXVhbGlmaWVkTmFtZT4mIHN1cHBvcnRlZEF0dHJpYnV0ZXMpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgeG1sUHJlZml4LCAoInhtbCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiB4bWxQcmVmaXgoInhtbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogCiAgICAgUXVhbGlmaWVkTmFtZSBsYW5nV2l0aFByZWZpeCA9IFhNTE5h
bWVzOjpsYW5nQXR0cjsKICAgICBsYW5nV2l0aFByZWZpeC5zZXRQcmVmaXgoeG1sUHJlZml4KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAppbmRleCAwNjY4N2YyLi5kZjk2
ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCkBAIC05MCwxMyAr
OTAsMTMgQEAgUmVmPFNWR01hcmtlckVsZW1lbnQ+IFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKIAogY29uc3QgQXRvbWljU3RyaW5nJiBT
VkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBlSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR09y
aWVudFR5cGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdPcmllbnRU
eXBlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNf
aWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdNYXJrZXJFbGVtZW50Ojpv
cmllbnRBbmdsZUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdPcmllbnRBbmdsZSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR09yaWVudEFuZ2xlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0K
IApAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVP
cmllbnRUeXBlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIGlmIChvd25lclR5cGUu
bV9vcmllbnRUeXBlLnZhbHVlICE9IFNWR01hcmtlck9yaWVudEF1dG8pCiAgICAgICAgIHJldHVy
bjsKIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGF1
dG9TdHJpbmcsICgiYXV0byIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBhdXRvU3RyaW5nKCJhdXRv
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgb3duZXJUeXBlLm1f
b3JpZW50VHlwZS5zeW5jaHJvbml6ZSgmb3duZXJUeXBlLCBvcmllbnRUeXBlUHJvcGVydHlJbmZv
KCktPmF0dHJpYnV0ZU5hbWUsIGF1dG9TdHJpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZUVsZW1lbnQuY3BwCmluZGV4IDhhYzI4ZGEuLjA0NWFlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCkBAIC02Miw5ICs2Miw5IEBAIHZvaWQgU1ZHU3R5bGVFbGVt
ZW50OjpzZXREaXNhYmxlZChib29sIHNldERpc2FibGVkKQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IFNWR1N0eWxlRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGVmYXVsdFZhbHVlLCAoInRleHQvY3Nz
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRlZmF1bHRWYWx1ZSgidGV4dC9jc3MiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIG4gPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnR5cGVBdHRyKTsKLSAgICByZXR1cm4gbi5p
c051bGwoKSA/IGRlZmF1bHRWYWx1ZSA6IG47CisgICAgcmV0dXJuIG4uaXNOdWxsKCkgPyBkZWZh
dWx0VmFsdWUuZ2V0KCkgOiBuOwogfQogCiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0VHlwZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtNzQsOSArNzQsOSBA
QCB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IEV4Y2VwdGlvbkNvZGUmKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6
bWVkaWEoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGRlZmF1bHRWYWx1ZSwgKCJhbGwiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gZGVmYXVsdFZhbHVlKCJhbGwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBmYXN0R2V0QXR0cmlidXRlKFNW
R05hbWVzOjptZWRpYUF0dHIpOwotICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVl
IDogbjsKKyAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZS5nZXQoKSA6IG47CiB9
CiAKIHZvaWQgU1ZHU3R5bGVFbGVtZW50OjpzZXRNZWRpYShjb25zdCBBdG9taWNTdHJpbmcmIG1l
ZGlhLCBFeGNlcHRpb25Db2RlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
cmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKaW5kZXgg
ZThhM2YxMi4uMjExYWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5z
Zm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJTVkdBbmdsZS5o
IgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xMzQsMjcgKzEzNSwyNyBAQCBjb25zdCBTdHJpbmcm
IFNWR1RyYW5zZm9ybTo6dHJhbnNmb3JtVHlwZVByZWZpeEZvclBhcnNpbmcoU1ZHVHJhbnNmb3Jt
VHlwZSB0eXBlKQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9VTktOT1dOOgogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fTUFUUklYOiB7Ci0gICAg
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG1hdHJpeFN0cmluZywg
KEFTQ0lJTGl0ZXJhbCgibWF0cml4KCIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IG1hdHJpeFN0cmluZyhBU0NJSUxpdGVyYWwoIm1hdHJpeCgiKSk7CiAgICAgICAg
IHJldHVybiBtYXRyaXhTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9UUkFO
U0xBVEU6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
dHJhbnNsYXRlU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ0cmFuc2xhdGUoIikpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHJhbnNsYXRlU3RyaW5nKEFTQ0lJTGl0ZXJh
bCgidHJhbnNsYXRlKCIpKTsKICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZVN0cmluZzsKICAgICB9
CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NDQUxFOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjYWxlU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzY2Fs
ZSgiKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY2FsZVN0cmlu
ZyhBU0NJSUxpdGVyYWwoInNjYWxlKCIpKTsKICAgICAgICAgcmV0dXJuIHNjYWxlU3RyaW5nOwog
ICAgIH0KICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fUk9UQVRFOiB7Ci0gICAgICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHJvdGF0ZVN0cmluZywgKEFTQ0lJTGl0ZXJh
bCgicm90YXRlKCIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHJv
dGF0ZVN0cmluZyhBU0NJSUxpdGVyYWwoInJvdGF0ZSgiKSk7CiAgICAgICAgIHJldHVybiByb3Rh
dGVTdHJpbmc7CiAgICAgfSAgICAKICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1g6IHsKLSAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc2tld1hTdHJpbmcs
IChBU0NJSUxpdGVyYWwoInNrZXdYKCIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHNrZXdYU3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2tld1goIikpOwogICAgICAgICBy
ZXR1cm4gc2tld1hTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWTog
ewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBza2V3WVN0
cmluZywgKEFTQ0lJTGl0ZXJhbCgic2tld1koIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gc2tld1lTdHJpbmcoQVNDSUlMaXRlcmFsKCJza2V3WSgiKSk7CiAgICAg
ICAgIHJldHVybiBza2V3WVN0cmluZzsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3
U3BlYy5jcHAKaW5kZXggYWM4NmVlMy4uMDA5OGNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1Nw
ZWMuY3BwCkBAIC04NCwxOSArODQsMTkgQEAgU1ZHVmlld1NwZWM6OlNWR1ZpZXdTcGVjKFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1ZpZXdTcGVj
Ojp2aWV3Qm94SWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1ZpZXdTcGVjVmlld0JveEF0dHJp
YnV0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR1ZpZXdTcGVjVmll
d0JveEF0dHJpYnV0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHVmlld1Nw
ZWM6OnByZXNlcnZlQXNwZWN0UmF0aW9JZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHVmlld1Nw
ZWNQcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cmlidXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNf
aWRlbnRpZmllcigiU1ZHVmlld1NwZWNQcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cmlidXRlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmll
cjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdWaWV3U3BlYzo6dHJhbnNmb3JtSWRlbnRp
ZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
Zywgc19pZGVudGlmaWVyLCAoIlNWR1ZpZXdTcGVjVHJhbnNmb3JtQXR0cmlidXRlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHVmlld1NwZWNUcmFuc2Zvcm1BdHRyaWJ1
dGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19p
ZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuY3BwCmluZGV4IDM1NjhiZTQuLjQ0MTBiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0zMjksNyArMzI5LDcgQEAg
U01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShjb25zdCBTdHJpbmcmIGRh
dGEpCiAgICAgCiAgICAgU3RyaW5nIHBhcnNlID0gZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKIAot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGlu
ZGVmaW5pdGVWYWx1ZSwgKCJpbmRlZmluaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IGluZGVmaW5pdGVWYWx1ZSgiaW5kZWZpbml0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIGlmIChwYXJzZSA9PSBpbmRlZmluaXRlVmFsdWUpCiAgICAgICAgIHJl
dHVybiBTTUlMVGltZTo6aW5kZWZpbml0ZSgpOwogCkBAIC00NTIsMTkgKzQ1MiwxOSBAQCB2b2lk
IFNWR1NNSUxFbGVtZW50OjpwYXJzZUJlZ2luT3JFbmQoY29uc3QgU3RyaW5nJiBwYXJzZVN0cmlu
ZywgQmVnaW5PckVuZCBiZWdpbgogCiBib29sIFNWR1NNSUxFbGVtZW50Ojppc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxRdWFsaWZpZWROYW1lPiwgc3VwcG9ydGVkQXR0
cmlidXRlcywgKCkpOwotICAgIGlmIChzdXBwb3J0ZWRBdHRyaWJ1dGVzLmlzRW1wdHkoKSkgewot
ICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6YmVnaW5BdHRyKTsKLSAg
ICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6OmVuZEF0dHIpOwotICAgICAg
ICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6ZHVyQXR0cik7Ci0gICAgICAgIHN1
cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjpyZXBlYXREdXJBdHRyKTsKLSAgICAgICAg
c3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6OnJlcGVhdENvdW50QXR0cik7Ci0gICAg
ICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjptaW5BdHRyKTsKLSAgICAgICAg
c3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6Om1heEF0dHIpOwotICAgICAgICBzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6YXR0cmlidXRlTmFtZUF0dHIpOwotICAgICAg
ICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChYTGlua05hbWVzOjpocmVmQXR0cik7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4+IHN1cHBvcnRlZEF0dHJp
YnV0ZXM7CisgICAgaWYgKHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpiZWdpbkF0dHIp
OworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6ZW5kQXR0
cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpkdXJB
dHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJl
cGVhdER1ckF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdO
YW1lczo6cmVwZWF0Q291bnRBdHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQo
KS5hZGQoU1ZHTmFtZXM6Om1pbkF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdl
dCgpLmFkZChTVkdOYW1lczo6bWF4QXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMu
Z2V0KCkuYWRkKFNWR05hbWVzOjphdHRyaWJ1dGVOYW1lQXR0cik7CisgICAgICAgIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKICAgICB9Ci0gICAg
cmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8U1ZHQXR0cmlidXRlSGFzaFRyYW5z
bGF0b3I+KGF0dHJOYW1lKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5j
b250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCiB2b2lk
IFNWR1NNSUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtNjQzLDggKzY0Myw4IEBAIGJvb2wgU1ZH
U01JTEVsZW1lbnQ6OmlzRnJvemVuKCkgY29uc3QKICAgICAKIFNWR1NNSUxFbGVtZW50OjpSZXN0
YXJ0IFNWR1NNSUxFbGVtZW50OjpyZXN0YXJ0KCkgY29uc3QKIHsgICAgCi0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbmV2ZXIsICgibmV2ZXIi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgd2hlbk5vdEFjdGl2ZSwgKCJ3
aGVuTm90QWN0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IG5ldmVyKCJuZXZlciIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHdoZW5Ob3RBY3RpdmUoIndoZW5Ob3RBY3RpdmUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShTVkdOYW1lczo6cmVzdGFydEF0dHIpOwog
ICAgIGlmICh2YWx1ZSA9PSBuZXZlcikKICAgICAgICAgcmV0dXJuIFJlc3RhcnROZXZlcjsKQEAg
LTY1NSw3ICs2NTUsNyBAQCBTVkdTTUlMRWxlbWVudDo6UmVzdGFydCBTVkdTTUlMRWxlbWVudDo6
cmVzdGFydCgpIGNvbnN0CiAgICAgCiBTVkdTTUlMRWxlbWVudDo6RmlsbE1vZGUgU1ZHU01JTEVs
ZW1lbnQ6OmZpbGwoKSBjb25zdAogeyAgIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZyZWV6ZSwgKCJmcmVlemUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21pY1N0cmluZz4gZnJlZXplKCJmcmVlemUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0dHJp
YnV0ZShTVkdOYW1lczo6ZmlsbEF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBmcmVlemUgPyBG
aWxsRnJlZXplIDogRmlsbFJlbW92ZTsKIH0KQEAgLTY4OCw3ICs2ODgsNyBAQCBTTUlMVGltZSBT
VkdTTUlMRWxlbWVudDo6cmVwZWF0Q291bnQoKSBjb25zdAogICAgIGlmICh2YWx1ZS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7CiAKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBpbmRlZmluaXRlVmFs
dWUsICgiaW5kZWZpbml0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBpbmRlZmluaXRl
VmFsdWUoImluZGVmaW5pdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBpZiAodmFsdWUgPT0gaW5kZWZpbml0ZVZhbHVlKQogICAgICAgICByZXR1cm4gU01JTFRp
bWU6OmluZGVmaW5pdGUoKTsKICAgICBib29sIG9rOwpAQCAtMTE0MywxNiArMTE0MywxNiBAQCBi
b29sIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcyhTTUlMVGltZSBlbGFwc2VkLCBTVkdTTUlMRWxl
bWVudCogcmVzdWx0RWxlbWVudCwgYgogdm9pZCBTVkdTTUlMRWxlbWVudDo6bm90aWZ5RGVwZW5k
ZW50c0ludGVydmFsQ2hhbmdlZChOZXdPckV4aXN0aW5nSW50ZXJ2YWwgbmV3T3JFeGlzdGluZykK
IHsKICAgICBBU1NFUlQobV9pbnRlcnZhbEJlZ2luLmlzRmluaXRlKCkpOwotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFNWR1NNSUxFbGVtZW50Kj4sIGxvb3BCcmVh
a2VyLCAoKSk7Ci0gICAgaWYgKGxvb3BCcmVha2VyLmNvbnRhaW5zKHRoaXMpKQorICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNWR1NNSUxFbGVtZW50Kj4+IGxvb3BCcmVha2VyOwor
ICAgIGlmIChsb29wQnJlYWtlci5nZXQoKS5jb250YWlucyh0aGlzKSkKICAgICAgICAgcmV0dXJu
OwotICAgIGxvb3BCcmVha2VyLmFkZCh0aGlzKTsKKyAgICBsb29wQnJlYWtlci5nZXQoKS5hZGQo
dGhpcyk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBkZXBlbmRlbnQgOiBtX3RpbWVEZXBlbmRlbnRz
KSB7CiAgICAgICAgIGRlcGVuZGVudC0+Y3JlYXRlSW5zdGFuY2VUaW1lc0Zyb21TeW5jYmFzZSh0
aGlzLCBuZXdPckV4aXN0aW5nKTsKICAgICB9CiAKLSAgICBsb29wQnJlYWtlci5yZW1vdmUodGhp
cyk7CisgICAgbG9vcEJyZWFrZXIuZ2V0KCkucmVtb3ZlKHRoaXMpOwogfQogICAgIAogdm9pZCBT
VkdTTUlMRWxlbWVudDo6Y3JlYXRlSW5zdGFuY2VUaW1lc0Zyb21TeW5jYmFzZShTVkdTTUlMRWxl
bWVudCogc3luY2Jhc2UsIE5ld09yRXhpc3RpbmdJbnRlcnZhbCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268570</attachid>
            <date>2016-01-08 12:34:44 -0800</date>
            <delta_ts>2016-01-08 12:49:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152902-4.diff</filename>
            <type>text/plain</type>
            <size>263255</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KaW5k
ZXggZWY1NDYwMi4uNzIzNjg3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSVdyYXBwZXJPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSVdyYXBwZXJPYmplY3QubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NhbGxi
YWNrT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCkBAIC00MSw4ICs0Miw4IEBAIHB1YmxpYzoKIAogc3Rh
dGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmplY3RIYW5k
bGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEpTQVBJV3Jh
cHBlck9iamVjdEhhbmRsZU93bmVyLCBqc1dyYXBwZXJPYmplY3RIYW5kbGVPd25lciwgKCkpOwot
ICAgIHJldHVybiAmanNXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyPiBqc1dyYXBwZXJPYmplY3RI
YW5kbGVPd25lcjsKKyAgICByZXR1cm4gJmpzV3JhcHBlck9iamVjdEhhbmRsZU93bmVyLmdldCgp
OwogfQogCiB2b2lkIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRleCBhNzJkMTliLi4xYzFmN2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgIldlYWtIYW5kbGVPd25lci5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRy
YXMuaCIKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9OU01hcFRhYmxlU1BJLmg+CiAKIGNsYXNzIEpT
TWFuYWdlZFZhbHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpA
QCAtNDcsOCArNDgsOCBAQCBwdWJsaWM6CiAKIHN0YXRpYyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyKiBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIsIGpzTWFuYWdlZFZhbHVlSGFu
ZGxlT3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI+IGpzTWFu
YWdlZFZhbHVlSGFuZGxlT3duZXI7CisgICAgcmV0dXJuICZqc01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyLmdldCgpOwogfQogCiBjbGFzcyBXZWFrVmFsdWVSZWYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggYTFlMDlhOC4uYmQ5ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTYtMDEtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTAorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyOTAyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3RseSBt
ZWNoYW5pY2FsIGNvbnZlcnNpb24gdG8gTmV2ZXJEZXN0cm95ZWQgdGhyb3VnaG91dC4KKworICAg
ICAgICAqIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QubW06CisgICAgICAgIChqc0FQSVdyYXBwZXJP
YmplY3RIYW5kbGVPd25lcik6CisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLm1tOgorICAg
ICAgICAobWFuYWdlZFZhbHVlSGFuZGxlT3duZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om9iamVj
dEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbik6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yOjphbGxv
Y2F0b3JzKToKKwogMjAxNi0wMS0wNiAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIERhdGUucHJvdG90eXBlIHNob3VsZCBiZSBhIHBs
YWluIG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlYzc3YTc0
Li44M2Q3ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUyLDggKzUzLDggQEAgY29uc3QgY2hhciogSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXAgPSAiYmFja3RyYWNlIjsKIC8vIGNy
ZWF0ZSBvYmplY3RzIGluIHRoZSBzYW1lIGdyb3VwLgogc3RhdGljIFN0cmluZyBvYmplY3RHcm91
cEZvckJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW9u
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIG9iamVjdEdyb3VwLCAoImJyZWFrcG9pbnQtYWN0aW9uLSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cCwg
U3RyaW5nOjpudW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBvYmplY3RHcm91cChBU0NJSUxpdGVyYWwoImJyZWFrcG9pbnQtYWN0aW9u
LSIpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cC5nZXQoKSwgU3RyaW5nOjpu
dW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKIH0KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBkMjkx
MWEzLi43YWJhZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAKQEAgLTEzNCw4ICsxMzQsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxQYWdlUmVzZXJ2YXRpb24sIDE2PiByZXNlcnZhdGlvbnM7CiAgICAgc3RhdGljIEhhc2hTZXQ8
RGVtYW5kRXhlY3V0YWJsZUFsbG9jYXRvcio+JiBhbGxvY2F0b3JzKCkKICAgICB7Ci0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PERlbWFuZEV4ZWN1dGFibGVB
bGxvY2F0b3IqPiwgc0FsbG9jYXRvcnMsICgpKTsKLSAgICAgICAgcmV0dXJuIHNBbGxvY2F0b3Jz
OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxEZW1hbmRFeGVjdXRhYmxl
QWxsb2NhdG9yKj4+IHNldDsKKyAgICAgICAgcmV0dXJuIHNldDsKICAgICB9CiAKICAgICBzdGF0
aWMgU3RhdGljTG9jayYgYWxsb2NhdG9yc011dGV4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMjY4MjQyZi4uNzM0MzQzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMS0wOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
NTI5MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW9zdGx5IG1lY2hhbmljYWwgY29udmVyc2lvbiB0byBOZXZlckRlc3Ryb3llZCB0aHJvdWdob3V0
LgorCisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpj
dXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAo
V1RGOjp0aHJlYWRNYXBNdXRleCk6CisgICAgICAgIChXVEY6OnRocmVhZE1hcCk6CisKIDIwMTYt
MDEtMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEFsbG93IHRvIHNhdmUgYW5kIHJlc3RvcmUgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApp
bmRleCBlMzUyOTBkLi43MDFjMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29w
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KIApAQCAtNTYsOCArNTcsOCBAQCB2b2lkIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpCiAKIFJ1bkxvb3AmIFJ1bkxvb3A6OmN1cnJlbnQo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlRocmVhZFNwZWNp
ZmljPFJ1bkxvb3A6OkhvbGRlcj4sIHJ1bkxvb3BIb2xkZXIsICgpKTsKLSAgICByZXR1cm4gcnVu
TG9vcEhvbGRlci0+cnVuTG9vcCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaHJlYWRT
cGVjaWZpYzxIb2xkZXI+PiBydW5Mb29wSG9sZGVyOworICAgIHJldHVybiBydW5Mb29wSG9sZGVy
LmdldCgpLT5ydW5Mb29wKCk7CiB9CiAKIFJ1bkxvb3AmIFJ1bkxvb3A6Om1haW4oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IGE5N2NmMzIuLjcwNWYzNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJU
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3BlY2lmaWMu
aCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SYXdQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVh
ZERhdGEuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtOTksNyArMTAwLDcgQEAgdm9pZCB0aHJl
YWRXYXNKb2luZWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIHN0YXRpYyBNdXRleCYgdGhyZWFkTWFw
TXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0
ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0ZXg+IG11dGV4OwogICAgIHJl
dHVybiBtdXRleDsKIH0KIApAQCAtMTI1LDcgKzEyNiw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpCiAKIHN0YXRpYyBUaHJlYWRNYXAmIHRocmVhZE1hcCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRocmVhZE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFRocmVhZE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkYzdlMmNmLi45MGY5NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTI0IEBACisy
MDE2LTAxLTA4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCBvZiBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0bHkgbWVjaGFuaWNhbCBjb252
ZXJzaW9uIHRvIE5ldmVyRGVzdHJveWVkIHRocm91Z2hvdXQuCisKKyAgICAgICAgKiBNb2R1bGVz
L2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmRpcmVjdGlvbk5leHRVbmlxdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJl
Y3Rpb25QcmV2KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVu
aXF1ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5UmVxdWVzdDo6cmVhZHlTdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om9wZW5L
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRlZEtleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKToKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChX
ZWJDb3JlOjpxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNNaW1lVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNGaWxlRXh0
ZW5zaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUpOgor
ICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKToKKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFJlc29sdXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZSk6
CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldCk6CisgICAgICAgICog
ZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjdW11
bGF0b3JNYXApOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc1N1cHBvcnRlZFNWRzEwRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c1N1cHBvcnRlZFNWRzExRmVhdHVyZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWFkeVN0YXRlKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0
KToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayk6CisgICAgICAgICogZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ1NT
Q29udGVudFR5cGUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OnN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNv
cmQuY3BwOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBzZXVkb0VsZW1lbnRUYWdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1l
bnQ6OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVk
TmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdWFsaWZpZWROYW1lQ2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6bnVsbFFOYW1lKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0xlZ2FjeVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dHlsZVNwYW5DbGFzc1N0cmluZyk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFt
ZXNwYWNlRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0ludGVyY2hhbmdlTmV3bGluZU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5nZUNvbnZlcnRlZFNwYWNlU3Bhbik6CisgICAgICAg
ICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub25CcmVha2lu
Z1NwYWNlU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c3R5bGVOb2RlQ2xvc2VUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwSW50ZXJuYWwpOgorICAgICAgICAqIGZpbGVhcGkv
QmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KToK
KyAgICAgICAgKiBodG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAg
ICAgKiBodG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVU
aW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVM
b2NhbElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRU
eXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRW1haWxJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEVtYWlsQWRkcmVzcyk6CisgICAgICAgICogaHRt
bC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtS2V5R2VuZXJhdG9y
Ojpmb3JtS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1TdGF0ZVNpZ25hdHVyZSk6CisgICAg
ICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyb290
RWRpdGFibGVFbGVtZW50TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxv
YWRpbmdEaXNhYmxlcjo6ZGlzYWJsZWRTdWJ0cmVlUm9vdHMpOgorICAgICAgICAqIGh0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6
OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bGlua0xvYWRFdmVudFNlbmRlcik6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50VG9FbGVtZW50
U2V0TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzUmVjb2duaXplZFRhZ05hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpm
b3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGl0bGVUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OnN1YnRpdGxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkpOgorICAgICAgICAqIGh0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmZv
cm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpcmVjdGlvblN0cmluZyk6CisgICAg
ICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlu
cHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlTmFtZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmJ1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6Y2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlTmFtZXM6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVz
OjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpkYXRldGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OmZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Omhp
ZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6aW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Om1vbnRoKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZU5hbWVzOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6
OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpyYWRpbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6cmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5h
bWVzOjpzZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OndlZWspOgorICAgICAgICAqIGh0
bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHBsYXliYWNrU3RhdGVXYWl0aW5nKToK
KyAgICAgICAgKHBsYXliYWNrU3RhdGVQbGF5aW5nKToKKyAgICAgICAgKHBsYXliYWNrU3RhdGVF
bmRlZCk6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb250aElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL051
bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNy
ZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAg
KiBodG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFjY2Vw
dGFibGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JT
dGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3RlcE1pc21hdGNoKToKKyAgICAg
ICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJbWFnZURhdGEpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNT
QXVkaXRvcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRD
YXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50U2hhZG93UHNldWRv
SWQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRv
d0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6Ok1ldGVy
SW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1ldGVyVmFsdWVFbGVtZW50Ojp2YWx1
ZVBzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpt
ZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpjaGFwdGVyc0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjptZXRhZGF0YUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Ojpmb3JjZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6ZGlzYWJsZWRL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6aGlkZGVuS2V5d29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
OjpjdWVTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhcnRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Om1pZGRs
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpyaWdodEtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6dmVydGljYWxHcm93aW5nTGVmdEtleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6dmVydGljYWxHcm93aW5nUmlnaHRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1
ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6Om1h
cmtGdXR1cmVBbmRQYXN0Tm9kZXMpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUUmVnaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNv
cmU6OlZUVFJlZ2lvbjo6c2V0U2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6
cGFyc2VTZXR0aW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjp0ZXh0VHJh
Y2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcyk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRl
b1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6bWFpbktleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2lnbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6c3VidGl0bGVzS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpj
b21tZW50YXJ5S2V5d29yZCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVUeXBlVG9UYWdOYW1lKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNvbGxlY3RNZXRhZGF0YUhl
YWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVQc2V1ZG9DbGFzc01hc2spOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgor
ICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJl
dmVudGVkTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmluaXRpYXRv
ck5hbWUpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKToKKyAgICAg
ICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKToK
KyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tn
cm91bmRDU1MpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MpOgorICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2
YVNjcmlwdFVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJ
bmxpbmVFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6d2luZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyk6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpkcmFnU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9jdXNEaXJlY3Rpb25Gb3JL
ZXkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmFzZTo6cGxhdGZvcm0pOgorICAgICAgICAqIHBhZ2Uv
UGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlVmlzaWJpbGl0
eVN0YXRlU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om9yaWdpbkFjY2Vzc01hcCk6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjpwYXJzZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93Rm9yQmxlbmRpbmcpOgorICAgICAgICAqIHBh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50ZXJDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZEN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptb3ZlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnZlcnRpY2FsVGV4dEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpjZWxsQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmFs
aWFzQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Onpvb21JbkN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjp6b29tT3V0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6bm9uZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpwcm9ncmVz
c0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub0Ryb3BDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6bm90QWxsb3dlZEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjppQmVhbUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjp3YWl0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmhlbHBD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpub3J0aFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aEVhc3RS
ZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9ydGhXZXN0UmVzaXplQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNvdXRoRWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpzb3V0aFdlc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6d2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpub3J0aFNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVh
c3RXZXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoRWFzdFNvdXRoV2Vz
dFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aFdlc3RTb3V0aEVhc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29sdW1uUmVzaXplQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJvd1Jlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptaWRkbGVQ
YW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVhc3RQYW5uaW5nQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6Om5vcnRoUGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpu
b3J0aEVhc3RQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoV2VzdFBhbm5p
bmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6c291dGhQYW5uaW5nQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNvdXRoRWFzdFBhbm5pbmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
c291dGhXZXN0UGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjp3ZXN0UGFubmluZ0N1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpncmFiQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OmdyYWJiaW5nQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZWRT
dHJpbmdGb3JMb29rdXBNZW51SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZWRpYU1JTUVUeXBlTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxVUkxTY2hlbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2VjdXJlU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMpOgorICAgICAgICAoV2ViQ29yZTo6ZW1wdHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6c2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0
ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNPUlNFbmFibGVkU2NoZW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpibGFua1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxOYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25z
ZXNGb3JTdWJqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdWRpb0Rlc3RpbmF0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXBhaW50UmVjdE1hcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9y
U3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFBsYWluKToKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNo
QnVmZmVyOjpzaW5nbGV0b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpwbGF5ZXJUb1ByaXZhdGVNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxw
aGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjplZmZlY3RO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjptaW1lQ29tbW9uVHlwZXNDYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjptaW1lTW9kZXJuVHlwZXNDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0N1cnNvcklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJzb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAgICAgICgrW1dlYkNvcmVNb3Rp
b25NYW5hZ2VyIHNoYXJlZE1hbmFnZXJdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYlRo
cmVhZEdldE9ic2VydmVkQ29udGVudE1vZGlmaWVycyk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRGcm9tTlNGb250KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybVRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW06CisgICAg
ICAgIChXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpwbGF0Zm9ybUNl
bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUcmFja0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Nh
bXBsZUJveDo6dHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXApOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xpZW50Q2VydHMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5
ZWRNUlVDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNo
ZTo6Z2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2ZMb2NhbGVDYWNoZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJs
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y291bnRlck1hcHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVy
SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhl
bWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVu
c2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQ
YXRoOjp6ZXJvTGVuZ3RoTGluZWNhcFBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vblNj
YWxpbmdTdHJva2VQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2xpcHBlckZpbHRlck1hc2tlclRhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6bWFy
a2VyVGFncyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsQW5kU3Ryb2tlVGFncyk6CisgICAgICAg
IChXZWJDb3JlOjpjaGFpbmFibGVSZXNvdXJjZVRhZ3MpOgorICAgICAgICAqIHN2Zy9TVkdBbmds
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6dmFsdWVBc1N0cmluZyk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50Ojpyb3RhdGVNb2RlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRBdHRyaWJ1dGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBY2N1bXVsYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjppbmhlcml0c0Zyb21Qcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
b3JkZXJYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudDo6b3JkZXJZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmll
cik6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9u
WUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRp
b25YSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVyKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50
OjpyYWRpdXNYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpyYWRpdXNZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRp
Zmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVx
dWVuY3lZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWUlkZW50aWZp
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaE1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R2x5cGhNYXA6OnN2Z0dseXBoRm9yR2x5cGgpOgorICAgICAgICAqIHN2Zy9TVkdMYW5nU3BhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGFuZ1NwYWNlOjp4bWxzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtl
ckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01h
cmtlckVsZW1lbnQ6Om9yaWVudEFuZ2xlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUpOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6bWVkaWEpOgorICAgICAg
ICAqIHN2Zy9TVkdUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3Jt
Ojp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdT
cGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjp2aWV3Qm94SWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cHJlc2VydmVBc3BlY3RSYXRpb0lk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OnRyYW5zZm9ybUlkZW50
aWZpZXIpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU01JTEVsZW1lbnQ6OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6
OnJlcGVhdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpub3RpZnlE
ZXBlbmRlbnRzSW50ZXJ2YWxDaGFuZ2VkKToKKwogMjAxNi0wMS0wNSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIHNob3dSZW5kZXJUcmVlOiBhZGQgaW5saW5lLWJs
b2NrL2lubGluZS9ibG9jayBjb2x1bW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5jcHAKaW5kZXggNGFlNDI3ZC4uOGRjMDgzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcApAQCAtMjYsMTQgKzI2LDE2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudC5oIgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5KGJvb2wgYXZhaWxhYmxlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGF2YWlsYWJsZVN0cmluZywgKCJhdmFpbGFibGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgbm90QXZhaWxhYmxlU3RyaW5nLCAoIm5vdC1hdmFpbGFibGUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXZhaWxhYmxlU3RyaW5nKCJhdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBub3RBdmFpbGFibGVTdHJpbmcoIm5vdC1hdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIHJldHVybiBhdmFpbGFibGUg
PyBhdmFpbGFibGVTdHJpbmcgOiBub3RBdmFpbGFibGVTdHJpbmc7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA4NjM4MGUxLi4wMzY2
MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwyNSArMzksMjUgQEAgSURCQ3Vyc29yOjpJ
REJDdXJzb3IoKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4
dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bmV4dCwgKCJuZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5leHQoIm5leHQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmV4dDsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5leHR1bmlxdWUs
ICgibmV4dHVuaXF1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuZXh0dW5pcXVlKCJuZXh0dW5p
cXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5l
eHR1bmlxdWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25Q
cmV2KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBwcmV2LCAoInByZXYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcHJldigicHJldiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBwcmV2OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHJldnVuaXF1
ZSwgKCJwcmV2dW5pcXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHByZXZ1bmlxdWUoInByZXZ1
bmlxdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4g
cHJldnVuaXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDUxNzA3NzcuLjI1OWZiZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwzMSArNDAsMzEgQEAgSURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgicmVhZG9u
bHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZG9ubHkoInJlYWRvbmx5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWRvbmx5OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByZWFkd3JpdGUs
ICgicmVhZHdyaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJlYWR3cml0ZSgicmVhZHdyaXRl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3
cml0ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNp
b25DaGFuZ2UoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHZlcnNpb25jaGFuZ2UsICgidmVyc2lvbmNoYW5nZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiB2ZXJzaW9uY2hhbmdlKCJ2ZXJzaW9uY2hhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHZlcnNpb25jaGFuZ2U7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgi
MCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiByZWFkb25seSgiMCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiByZWFkb25seTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZHdyaXRlLCAo
IjEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZHdyaXRlKCIxIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3cml0ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJl
cXVlc3QuY3BwCmluZGV4IDhiMmYyMGQuLmJmY2RkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5UmVxdWVzdC5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNSwxMyAr
MTM2LDEzIEBAIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gTGVnYWN5UmVxdWVzdDo6dHJhbnNhY3Rp
b24oKSBjb25zdAogY29uc3QgU3RyaW5nJiBMZWdhY3lSZXF1ZXN0OjpyZWFkeVN0YXRlKCkgY29u
c3QKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IElEQlJlcXVlc3RSZWFkeVN0YXRlOjpQ
ZW5kaW5nIHx8IG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6RG9uZSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGVuZGluZywg
KCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRvbmUsICgiZG9uZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBwZW5kaW5nKCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gZG9uZSgiZG9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6UGVuZGluZykK
LSAgICAgICAgcmV0dXJuIHBlbmRpbmc7CisgICAgICAgIHJldHVybiBwZW5kaW5nLmdldCgpOwog
Ci0gICAgcmV0dXJuIGRvbmU7CisgICAgcmV0dXJuIGRvbmUuZ2V0KCk7CiB9CiAKIHZvaWQgTGVn
YWN5UmVxdWVzdDo6bWFya0Vhcmx5RGVhdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggODdi
YzM4Mi4uZjhmM2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCkBAIC00NSwxOSArNDUsMTkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbHNI
b3N0OjphdXRvbWF0aWNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhdXRvbWF0aWMsICgiYXV0b21hdGljIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IGF1dG9tYXRpYygiYXV0b21hdGljIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGF1dG9tYXRpYzsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IGZvcmNlZE9uLCAoImZvcmNlZC1vbmx5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZv
cmNlZE9uKCJmb3JjZWQtb25seSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBmb3JjZWRPbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHdheXNPbiwgKCJhbHdheXMtb24iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx3YXlzT24oImFsd2F5cy1vbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHdheXNPbjsKIH0KIApA
QCAtMjMwLDEyICsyMzAsMTIgQEAgU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERl
dmljZURpc3BsYXlOYW1lKCkgY29uc3QKIAogU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRl
cm5hbERldmljZVR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIG5vbmUsIChBU0NJSUxpdGVyYWwoIm5vbmUiKSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5vbmUoQVNDSUlMaXRlcmFsKCJub25lIikpOwogICAgIFN0
cmluZyB0eXBlID0gbm9uZTsKICAgICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFpcnBsYXks
IChBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHR2b3V0LCAoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXki
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFs
KCJ0dm91dCIpKTsKICAgICAKICAgICBNZWRpYVBsYXllciogcGxheWVyID0gbV9tZWRpYUVsZW1l
bnQtPnBsYXllcigpOwogICAgIGlmICghcGxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDRlMTI1NDMuLjgyOWQx
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCkBAIC05NSwxOSArOTUsMTkgQEAgTWVkaWFTb3VyY2U6On5NZWRpYVNvdXJjZSgp
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcGVu
LCAoIm9wZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gb3Blbigib3BlbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBvcGVuOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjbG9zZWQs
ICgiY2xvc2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNsb3NlZCgiY2xvc2VkIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNsb3NlZDsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZTo6ZW5kZWRLZXl3b3JkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBl
bmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7
CiB9CiAKQEAgLTQ0MCw4ICs0NDAsOCBAQCB2b2lkIE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShj
b25zdCBBdG9taWNTdHJpbmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBNZWRp
YVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3IoY29uc3QgQXRvbWljU3RyaW5nJiBlcnJvciwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgbmV0d29yaywgKCJuZXR3b3JrIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGRlY29kZSwgKCJkZWNvZGUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gbmV0d29yaygibmV0d29yayIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IGRlY29kZSgiZGVjb2RlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICBMT0coTWVkaWFTb3VyY2UsICJNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3Io
JXApIDogJXMiLCB0aGlzLCBlcnJvci5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbQppbmRleCBhYThiMDUyLi41ZTE0NjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50Lm1tCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFW
TWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqLCBKU0NvbnRlCiAKIHN0
YXRpYyBTdHJpbmcgcXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjcmlwdCwgKFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCwgc2l6ZW9mKFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50SmF2YVNjcmlwdCkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3Jp
cHQoUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0LCBzaXplb2YoUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0KSk7CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApA
QCAtODksMTMgKzg5LDEzIEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBv
cnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICAgICAgImF1ZGlvL3gtbTRy
IiwgImF1ZGlvL3gtbXAzIiwgImF1ZGlvL3gtbXBlZyIsICJhdWRpby94LW1wZWczIiwgImF1ZGlv
L3gtbXBlZ3VybCIsICJhdWRpby94LXNjcGxzIiwgImF1ZGlvL3gtd2F2IiwKICAgICAgICAgInZp
ZGVvLzNncHAiLCAidmlkZW8vM2dwcDIiLCAidmlkZW8vbXA0IiwgInZpZGVvL3F1aWNrdGltZSIs
ICJ2aWRlby94LW00diIKICAgICB9OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChIYXNoU2V0PFN0cmluZz4sIHR5cGVIYXNoLCAoKSk7Ci0gICAgaWYgKCF0eXBlSGFzaC5zaXpl
KCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB0eXBlSGFz
aDsKKyAgICBpZiAoIXR5cGVIYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodHlwZXMpOyArK2kpCi0gICAgICAgICAgICB0
eXBlSGFzaC5hZGQodHlwZXNbaV0pOworICAgICAgICAgICAgdHlwZUhhc2guZ2V0KCkuYWRkKHR5
cGVzW2ldKTsKICAgICB9CiAKLSAgICByZXR1cm4gdHlwZUhhc2guY29udGFpbnMobWltZVR5cGUp
OworICAgIHJldHVybiB0eXBlSGFzaC5nZXQoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJv
b2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTEwNSwxMyArMTA1LDEzIEBAIGJvb2wgUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikKICAgICAgICAgIm0zdTgiLCAibTRhIiwgIm00YiIsICJtNHAiLCAibTRyIiwgIm00
diIsICJtb3YiLCAibXAzIiwgIm1wMyIsICJtcDQiLCAibXBlZyIsICJtcGciLCAibXF2IiwgInBs
cyIsICJxdCIsCiAgICAgICAgICJzbmQiLCAic3dhIiwgInRzIiwgInVsdyIsICJ3YXYiCiAgICAg
fTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBl
eHRlbnNpb25IYXNoLCAoKSk7Ci0gICAgaWYgKCFleHRlbnNpb25IYXNoLnNpemUoKSkgeworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGV4dGVuc2lvbkhhc2g7Cisg
ICAgaWYgKCFleHRlbnNpb25IYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZXh0ZW5zaW9ucyk7ICsraSkKLSAgICAgICAg
ICAgIGV4dGVuc2lvbkhhc2guYWRkKGV4dGVuc2lvbnNbaV0pOworICAgICAgICAgICAgZXh0ZW5z
aW9uSGFzaC5nZXQoKS5hZGQoZXh0ZW5zaW9uc1tpXSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGV4
dGVuc2lvbkhhc2guY29udGFpbnMoZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9uSGFz
aC5nZXQoKS5jb250YWlucyhleHRlbnNpb24pOwogfQogCiBRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdp
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXMuY3BwCmluZGV4IDdmYjEzZTguLjdmMTc1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc0V2ZW50LmgiCiAjaW5jbHVkZSAiU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
QEAgLTE5Miw4ICsxOTMsOCBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6aGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuYwogICAgIAogdm9pZCBT
cGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5k
YXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgd29yZEJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ3
b3JkIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzZW50ZW5jZSIpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gd29yZEJvdW5kYXJ5U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgid29yZCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2VudGVuY2UiKSk7
CiAKICAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7CiAgICAgY2FzZSBTcGVlY2hXb3JkQm91bmRhcnk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA5MWJhMzEyLi41NGFjYjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKQEAgLTE4NCw4ICsxODQsOCBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAg
ICAgU3RyaW5nIHN0cmluZ0ZvckNhY2hlID0gU3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZyk7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ1NTUHJvcGVydHlJbmZvPiBDU1NQcm9wZXJ0eUlu
Zm9NYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5SW5m
b01hcCwgcHJvcGVydHlJbmZvQ2FjaGUsICgpKTsKLSAgICBwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0
eUluZm9DYWNoZS5nZXQoc3RyaW5nRm9yQ2FjaGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDU1NQcm9wZXJ0eUluZm9NYXA+IHByb3BlcnR5SW5mb0NhY2hlOworICAgIHByb3BlcnR5SW5m
byA9IHByb3BlcnR5SW5mb0NhY2hlLmdldCgpLmdldChzdHJpbmdGb3JDYWNoZSk7CiAgICAgaWYg
KHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwog
CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlE
Rm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICBpZiAocHJv
cGVydHlJRCkgewogICAgICAgICBwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGhh
ZFBpeGVsT3JQb3NQcmVmaXg7CiAgICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCk7Ci0gICAgICAgIHByb3BlcnR5SW5m
b0NhY2hlLmFkZChzdHJpbmdGb3JDYWNoZSwgcHJvcGVydHlJbmZvKTsKKyAgICAgICAgcHJvcGVy
dHlJbmZvQ2FjaGUuZ2V0KCkuYWRkKHN0cmluZ0ZvckNhY2hlLCBwcm9wZXJ0eUluZm8pOwogICAg
IH0KICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmNwcAppbmRleCA0NGY2NGI2Li5mYWE4OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX2luc3RhbmNlLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01Niw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBCaW5k
aW5ncyB7CiAKIHN0YXRpYyBTdHJpbmcmIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZXhjZXB0aW9uU3RyOwogICAgIHJl
dHVybiBleGNlcHRpb25TdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggYzU1
NzdiNy4uMjgzNGY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgog
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMjg4LDExICsyODksMTEgQEAgc3RhdGljIHZvaWQgYWRkUmVz
b2x1dGlvbldhcm5pbmdNZXNzYWdlVG9Db25zb2xlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
U3RyaW4KICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVCh2YWx1ZSk7CiAKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBtZWRpYVF1ZXJ5TWVzc2FnZSwg
KEFTQ0lJTGl0ZXJhbCgiQ29uc2lkZXIgdXNpbmcgJ2RwcHgnIHVuaXRzIGluc3RlYWQgb2YgJyVy
ZXBsYWNlbWVudFVuaXRzJScsIGFzIGluIENTUyAnJXJlcGxhY2VtZW50VW5pdHMlJyBtZWFucyBk
b3RzLXBlci1DU1MtJWxlbmd0aFVuaXQlLCBub3QgZG90cy1wZXItcGh5c2ljYWwtJWxlbmd0aFVu
aXQlLCBzbyBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIHRoZSBhY3R1YWwgJyVyZXBsYWNlbWVudFVu
aXRzJScgb2YgYSBzY3JlZW4uIEluIG1lZGlhIHF1ZXJ5IGV4cHJlc3Npb246ICIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbWVkaWFWYWx1ZURQSSwgKEFT
Q0lJTGl0ZXJhbCgiZHBpIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBtZWRpYVZhbHVlRFBDTSwgKEFTQ0lJTGl0ZXJhbCgiZHBjbSIpKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbGVuZ3RoVW5pdEluY2gsIChBU0NJ
SUxpdGVyYWwoImluY2giKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGxlbmd0aFVuaXRDZW50aW1ldGVyLCAoQVNDSUlMaXRlcmFsKCJjZW50aW1ldGVyIikp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRpYVF1ZXJ5TWVzc2FnZShB
U0NJSUxpdGVyYWwoIkNvbnNpZGVyIHVzaW5nICdkcHB4JyB1bml0cyBpbnN0ZWFkIG9mICclcmVw
bGFjZW1lbnRVbml0cyUnLCBhcyBpbiBDU1MgJyVyZXBsYWNlbWVudFVuaXRzJScgbWVhbnMgZG90
cy1wZXItQ1NTLSVsZW5ndGhVbml0JSwgbm90IGRvdHMtcGVyLXBoeXNpY2FsLSVsZW5ndGhVbml0
JSwgc28gZG9lcyBub3QgY29ycmVzcG9uZCB0byB0aGUgYWN0dWFsICclcmVwbGFjZW1lbnRVbml0
cyUnIG9mIGEgc2NyZWVuLiBJbiBtZWRpYSBxdWVyeSBleHByZXNzaW9uOiAiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbWVkaWFWYWx1ZURQSShBU0NJSUxpdGVyYWwoImRw
aSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRpYVZhbHVlRFBDTShB
U0NJSUxpdGVyYWwoImRwY20iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
bGVuZ3RoVW5pdEluY2goQVNDSUlMaXRlcmFsKCJpbmNoIikpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGxlbmd0aFVuaXRDZW50aW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY2VudGlt
ZXRlciIpKTsKIAogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGlmICh2YWx1ZS0+aXNEb3RzUGVy
SW5jaCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCA2
MGM1ZDM5Li4zZTMwMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUg
IlN0eWxlUnVsZUltcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzE2LDExICszMTcsMTEgQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBh
cnNlQXV0aG9yU3R5bGVTaGVldChjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWQKIAog
ICAgIGlmIChtX3BhcnNlckNvbnRleHQubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgJiYgaXNTdHJp
Y3RQYXJzZXJNb2RlKG1fcGFyc2VyQ29udGV4dC5tb2RlKSkgewogICAgICAgICAvLyBXb3JrIGFy
b3VuZCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MzUwPi4KLSAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbWVkaWFX
aWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQsIChBU0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHls
ZXNoZWV0ICovXG4vKiB3b3JrIGFyb3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4j
Y29sdW1uLWNvbnRlbnQgeyBtYXJnaW4tbGVmdDogMDsgfVxuXG4iKSkpOworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVT
aGVldChBU0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHlsZXNoZWV0ICovXG4vKiB3b3JrIGFy
b3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4jY29sdW1uLWNvbnRlbnQgeyBtYXJn
aW4tbGVmdDogMDsgfVxuXG4iKSk7CiAgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gdmFyaWFudHMg
b2YgS0hUTUxGaXhlcy5jc3MuIE9uZSBpcyBlcXVhbCB0byBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5
bGVTaGVldCwKICAgICAgICAgLy8gd2hpbGUgdGhlIG90aGVyIGxhY2tzIHRoZSBzZWNvbmQgdHJh
aWxpbmcgbmV3bGluZS4KLSAgICAgICAgaWYgKGJhc2VVUkwoKS5zdHJpbmcoKS5lbmRzV2l0aCgi
L0tIVE1MRml4ZXMuY3NzIikgJiYgIXNoZWV0VGV4dC5pc051bGwoKSAmJiBtZWRpYVdpa2lLSFRN
TEZpeGVzU3R5bGVTaGVldC5zdGFydHNXaXRoKHNoZWV0VGV4dCkKLSAgICAgICAgICAgICYmIHNo
ZWV0VGV4dC5sZW5ndGgoKSA+PSBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVTaGVldC5sZW5ndGgo
KSAtIDEpCisgICAgICAgIGlmIChiYXNlVVJMKCkuc3RyaW5nKCkuZW5kc1dpdGgoIi9LSFRNTEZp
eGVzLmNzcyIpICYmICFzaGVldFRleHQuaXNOdWxsKCkgJiYgbWVkaWFXaWtpS0hUTUxGaXhlc1N0
eWxlU2hlZXQuZ2V0KCkuc3RhcnRzV2l0aChzaGVldFRleHQpCisgICAgICAgICAgICAmJiBzaGVl
dFRleHQubGVuZ3RoKCkgPj0gbWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQuZ2V0KCkubGVu
Z3RoKCkgLSAxKQogICAgICAgICAgICAgY2xlYXJSdWxlcygpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCAzMWU1ZjMxLi5m
NmRlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuaCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlN0YXRpY05v
ZGVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYgSGFzaE1hcDxDb250YWluZXJOb2RlKiwgQ2hp
bGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcio+IEFjY3VtdWxhdG9yTWFwOwogc3RhdGljIEFjY3Vt
dWxhdG9yTWFwJiBhY2N1bXVsYXRvck1hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEFjY3VtdWxhdG9yTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QWNjdW11bGF0b3JNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCBmZTBiY2MxLi5mYWYyZGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTUzLDYgKzUzLDcg
QEAKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHREb2N1bWVudC5o
IgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC04OCw3ICs4OSw3IEBAIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkU1ZHMTBGZWF0dXJlKGNvbnN0
IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZlYXR1cmVTZXQsIHN2Z0ZlYXR1cmVzLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTZXQ+IHN2Z0ZlYXR1cmVzOwogICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICBhZGRTdHJp
bmcoc3ZnRmVhdHVyZXMsICJzdmciKTsKQEAgLTEwOCw3ICsxMDksNyBAQCBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZFNWRzEwRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbgogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmZWF0dXJlLnN0YXJ0c1dpdGgoIm9yZy53M2MuIiwgZmFsc2UpCi0gICAgICAgICYmIHN2Z0Zl
YXR1cmVzLmNvbnRhaW5zKGZlYXR1cmUucmlnaHQoZmVhdHVyZS5sZW5ndGgoKSAtIDgpKTsKKyAg
ICAgICAgJiYgc3ZnRmVhdHVyZXMuZ2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJl
Lmxlbmd0aCgpIC0gOCkpOwogfQogCiBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVy
ZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKQEAgLTExNyw3
ICsxMTgsNyBAQCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVyZShjb25zdCBTdHJp
bmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChGZWF0dXJlU2V0LCBzdmdGZWF0dXJlcywgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxGZWF0dXJlU2V0PiBzdmdGZWF0dXJlczsKICAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CiAgICAgICAgIC8vIFNhZGx5LCB3ZSBjYW5ub3QgY2xhaW0gdG8gaW1wbGVt
ZW50IGFueSBvZiB0aGUgU1ZHIDEuMSBnZW5lcmljIGZlYXR1cmUgc2V0cwogICAgICAgICAvLyBs
YWNrIG9mIEZvbnQgYW5kIEZpbHRlciBzdXBwb3J0LgpAQCAtMTc1LDcgKzE3Niw3IEBAIHN0YXRp
YyBib29sIGlzU3VwcG9ydGVkU1ZHMTFGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZlYXR1cmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy53My5vcmcvdHIvc3ZnMTEv
ZmVhdHVyZSMiLCBmYWxzZSkKLSAgICAgICAgJiYgc3ZnRmVhdHVyZXMuY29udGFpbnMoZmVhdHVy
ZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKKyAgICAgICAgJiYgc3ZnRmVhdHVyZXMu
Z2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKIH0K
IAogRE9NSW1wbGVtZW50YXRpb246OkRPTUltcGxlbWVudGF0aW9uKERvY3VtZW50JiBkb2N1bWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDI4NGU4NzcuLmQwNTYyZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTc3LDYgKzE3Nyw3IEBACiAjaW5jbHVkZSA8Y3RpbWU+CiAj
aW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4K
ICNpbmNsdWRlIDx5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmg+CkBAIC0xMTE4LDkgKzExMTksOSBA
QCBSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaQogCiBTdHJpbmcgRG9jdW1lbnQ6OnJlYWR5U3RhdGUo
KSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGxvYWRpbmcsIChBU0NJSUxpdGVyYWwoImxvYWRpbmciKSkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGludGVyYWN0aXZlLCAoQVNDSUlMaXRl
cmFsKCJpbnRlcmFjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgY29tcGxldGUsIChBU0NJSUxpdGVyYWwoImNvbXBsZXRlIikpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBsb2FkaW5nKEFTQ0lJTGl0ZXJh
bCgibG9hZGluZyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBp
bnRlcmFjdGl2ZShBU0NJSUxpdGVyYWwoImludGVyYWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNvbXBsZXRlKEFTQ0lJTGl0ZXJhbCgiY29tcGxldGUi
KSk7CiAKICAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0ZSkgewogICAgIGNhc2UgTG9hZGluZzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCA5ODllMTRlLi5lOGNiYzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8
d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjkyOCwyMSArMjkyOSwyMSBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIEVsZW1lbnQ6OndlYmtpdFJlZ2lvbk92ZXJzZXQoKSBjb25zdAogewogICAgIGRvY3Vt
ZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB1bmRlZmluZWRTdGF0ZSwg
KCJ1bmRlZmluZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdW5kZWZpbmVkU3RhdGUoInVuZGVm
aW5lZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICghZG9j
dW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpIHx8ICFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgp
KQogICAgICAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7CiAKICAgICBzd2l0Y2ggKHJlZ2lvbk92
ZXJzZXRTdGF0ZSgpKSB7CiAgICAgY2FzZSBSZWdpb25GaXQ6IHsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZml0U3RhdGUsICgiZml0IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaXRTdGF0ZSgiZml0IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiBmaXRTdGF0ZTsKICAgICB9CiAgICAg
Y2FzZSBSZWdpb25FbXB0eTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBlbXB0eVN0YXRlLCAoImVtcHR5IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBlbXB0eVN0YXRlKCJlbXB0eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgICAgICByZXR1cm4gZW1wdHlTdGF0ZTsKICAgICB9CiAgICAgY2FzZSBSZWdp
b25PdmVyc2V0OiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG92ZXJmbG93U3RhdGUsICgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gb3ZlcmZsb3dTdGF0ZSgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gb3ZlcmZsb3dTdGF0ZTsKICAgICB9CiAgICAgY2Fz
ZSBSZWdpb25VbmRlZmluZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmlu
ZGV4IDM0MTg0N2YuLmQ1NGM2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIu
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJT
VkdVc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxMyw4ICsyMTQs
OCBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFbGVtZW50
KiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZwogICAgIGlmIChlbGVtZW50LT5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEhhc2hTZXQ8RWxlbWVudCo+LCBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxh
dGVkQ2xpY2tzLCAoKSk7Ci0gICAgaWYgKCFlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xp
Y2tzLmFkZChlbGVtZW50KS5pc05ld0VudHJ5KQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PEVsZW1lbnQqPj4gZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrczsKKyAg
ICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MuZ2V0KCkuYWRkKGVsZW1l
bnQpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtb3VzZUV2ZW50T3B0
aW9ucyA9PSBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzKQpAQCAtMjMwLDcgKzIzMSw3IEBAIHZv
aWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKEVsZW1lbnQqIGVsZW1l
bnQsIEV2ZW50KiB1bmRlcmx5aW5nCiAgICAgLy8gYWx3YXlzIHNlbmQgY2xpY2sKICAgICBkaXNw
YXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY2xpY2tFdmVudCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5
aW5nRXZlbnQsIGVsZW1lbnQpKTsKIAotICAgIGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRD
bGlja3MucmVtb3ZlKGVsZW1lbnQpOworICAgIGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRD
bGlja3MuZ2V0KCkucmVtb3ZlKGVsZW1lbnQpOwogfQogCiBzdGF0aWMgdm9pZCBjYWxsRGVmYXVs
dEV2ZW50SGFuZGxlcnNJblRoZUJ1YmJsaW5nT3JkZXIoRXZlbnQmIGV2ZW50LCBjb25zdCBFdmVu
dFBhdGgmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIu
Y3BwCmluZGV4IDRjYWY2MmYuLjQxYTIwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRO
b2RlVHJhdmVyc2FsLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MTMsNyArMTE0LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNsZWFyU2hlZXQoKQog
CiBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29udGVudFR5cGUoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNzc0NvbnRlbnRUeXBlLCAoInRleHQvY3NzIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNzc0NvbnRlbnRUeXBlKCJ0ZXh0L2NzcyIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICh0eXBlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGVsZW1lbnQuaXNIVE1MRWxlbWVudCgp
ID8gZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgY3NzQ29udGVudFR5cGUpIDogdHlwZSA9PSBjc3ND
b250ZW50VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBm
YzE3MDhjLi44N2ZiYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CkBAIC0xNDUsMTMgKzE0NSwxMyBAQCB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPE11dGF0aW9uT2Jz
ZXJ2ZXI+PiBNdXRhdGlvbk9ic2VydmVyU2V0OwogCiBzdGF0aWMgTXV0YXRpb25PYnNlcnZlclNl
dCYgYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChNdXRhdGlvbk9ic2VydmVyU2V0LCBhY3RpdmVPYnNlcnZlcnMsICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0YXRpb25PYnNlcnZlclNldD4gYWN0aXZlT2JzZXJ2
ZXJzOwogICAgIHJldHVybiBhY3RpdmVPYnNlcnZlcnM7CiB9CiAKIHN0YXRpYyBNdXRhdGlvbk9i
c2VydmVyU2V0JiBzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycygpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGF0aW9uT2JzZXJ2ZXJTZXQsIHN1c3BlbmRlZE9ic2Vy
dmVycywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNdXRhdGlvbk9ic2VydmVyU2V0
PiBzdXNwZW5kZWRPYnNlcnZlcnM7CiAgICAgcmV0dXJuIHN1c3BlbmRlZE9ic2VydmVyczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKaW5kZXggOTVmY2VjMi4uY2U0MWEx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAKICNpbmNsdWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3Qu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0NSwxOSArMTQ2LDE5IEBAIHBy
aXZhdGU6CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQ2hpbGRMaXN0UmVjb3JkOjp0eXBlKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGlsZExp
c3QsICgiY2hpbGRMaXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGNoaWxkTGlzdCgiY2hpbGRM
aXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNo
aWxkTGlzdDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdHRyaWJ1dGVzUmVjb3JkOjp0eXBl
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBh
dHRyaWJ1dGVzLCAoImF0dHJpYnV0ZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXR0cmlidXRl
cygiYXR0cmlidXRlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBhdHRyaWJ1dGVzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIENoYXJhY3RlckRh
dGFSZWNvcmQ6OnR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGNoYXJhY3RlckRhdGEsICgiY2hhcmFjdGVyRGF0YSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBjaGFyYWN0ZXJEYXRhKCJjaGFyYWN0ZXJEYXRhIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNoYXJhY3RlckRhdGE7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCBiMjQ5MjQxLi5jZjllYWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjb25zdCBRdWFsaWZpZWROYW1lJiBwc2V1ZG9FbGVtZW50VGFnTmFt
ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUs
IG5hbWUsIChudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVsbEF0b20pKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVs
bEF0b20pOwogICAgIHJldHVybiBuYW1lOwogfQogCiBTdHJpbmcgUHNldWRvRWxlbWVudDo6cHNl
dWRvRWxlbWVudE5hbWVGb3JFdmVudHMoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgYWZ0ZXIsIChBU0NJSUxpdGVy
YWwoIjo6YWZ0ZXIiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIGJlZm9yZSwgKEFTQ0lJTGl0ZXJhbCgiOjpiZWZvcmUiKSkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGFmdGVyKEFTQ0lJTGl0ZXJhbCgiOjphZnRl
ciIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBiZWZvcmUoQVND
SUlMaXRlcmFsKCI6OmJlZm9yZSIpKTsKICAgICBzd2l0Y2ggKHBzZXVkb0lkKSB7CiAgICAgY2Fz
ZSBBRlRFUjoKICAgICAgICAgcmV0dXJuIGFmdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwCmluZGV4IGZkNzliZGEuLjU2ZTRmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RhdGljQ29uc3RydWN0b3Jz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC03NCw3ICs3NSw3
IEBAIHN0cnVjdCBRTmFtZUNvbXBvbmVudHNUcmFuc2xhdG9yIHsKIAogc3RhdGljIGlubGluZSBR
TmFtZVNldCYgcXVhbGlmaWVkTmFtZUNhY2hlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUU5hbWVTZXQsIG5hbWVDYWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxRTmFtZVNldD4gbmFtZUNhY2hlOwogICAgIHJldHVybiBuYW1lQ2FjaGU7CiB9CiAK
QEAgLTExNSw3ICsxMTYsNyBAQCB2b2lkIFF1YWxpZmllZE5hbWU6OmluaXQoKQogCiBjb25zdCBR
dWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChRdWFsaWZpZWROYW1lLCBudWxsTmFtZSwgKG51bGxBdG9tLCBudWxsQXRvbSwgbnVs
bEF0b20pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbnVsbE5h
bWUobnVsbEF0b20sIG51bGxBdG9tLCBudWxsQXRvbSk7CiAgICAgcmV0dXJuIG51bGxOYW1lOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNjNmNTkzZi4uMTg3OTFm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMTE5LDI0ICsxMTksMjQg
QEAgc3RhdGljIGJvb2wgaXNMZWdhY3lTdXBwb3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoY29uc3Qg
U3RyaW5nJiBsYW5ndWFnZSkKIAogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBI
VE1MNSBjb21wbGlhbnQuIFRoZXNlIGJlbG9uZyBpbiB0aGUgTUlNRSByZWdpc3RyeSBhcyAidGV4
dC9qYXZhc2NyaXB0PHZlcnNpb24+IiBlbnRyaWVzLgogICAgIHR5cGVkZWYgSGFzaFNldDxTdHJp
bmcsIENhc2VGb2xkaW5nSGFzaD4gTGFuZ3VhZ2VTZXQ7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKExhbmd1YWdlU2V0LCBsYW5ndWFnZXMsICgpKTsKLSAgICBpZiAobGFuZ3Vh
Z2VzLmlzRW1wdHkoKSkgewotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7Ci0g
ICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFk
ZCgiamF2YXNjcmlwdDEuMCIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS4x
Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjIiKTsKLSAgICAgICAgbGFu
Z3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMyIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZh
c2NyaXB0MS40Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjUiKTsKLSAg
ICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuNiIpOwotICAgICAgICBsYW5ndWFnZXMu
YWRkKCJqYXZhc2NyaXB0MS43Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImxpdmVzY3JpcHQi
KTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiZWNtYXNjcmlwdCIpOwotICAgICAgICBsYW5ndWFn
ZXMuYWRkKCJqc2NyaXB0Iik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhbmd1YWdlU2V0
PiBsYW5ndWFnZXM7CisgICAgaWYgKGxhbmd1YWdlcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdCIpOworICAgICAgICBsYW5ndWFnZXMu
Z2V0KCkuYWRkKCJqYXZhc2NyaXB0Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImph
dmFzY3JpcHQxLjAiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEu
MSIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0MS4yIik7CisgICAg
ICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFzY3JpcHQxLjMiKTsKKyAgICAgICAgbGFuZ3Vh
Z2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNCIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCku
YWRkKCJqYXZhc2NyaXB0MS41Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFz
Y3JpcHQxLjYiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNyIp
OworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJsaXZlc2NyaXB0Iik7CisgICAgICAgIGxh
bmd1YWdlcy5nZXQoKS5hZGQoImVjbWFzY3JpcHQiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgp
LmFkZCgianNjcmlwdCIpOwogICAgIH0KIAotICAgIHJldHVybiBsYW5ndWFnZXMuY29udGFpbnMo
bGFuZ3VhZ2UpOworICAgIHJldHVybiBsYW5ndWFnZXMuZ2V0KCkuY29udGFpbnMobGFuZ3VhZ2Up
OwogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVudCgpCkBAIC0zNDcs
NyArMzQ3LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpCiAKICAgICBpZiAobV9yZXF1ZXN0VXNlc0FjY2Vzc0NvbnRyb2wgJiYg
IW1fY2FjaGVkU2NyaXB0LT5wYXNzZXNTYW1lT3JpZ2luUG9saWN5Q2hlY2soKm1fZWxlbWVudC5k
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVu
dCgpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25z
b2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlwdCBsb2FkIGRlbmll
ZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFs
KCJDcm9zcy1vcmlnaW4gc2NyaXB0IGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJj
ZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAgICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25z
b2xlTWVzc2FnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDcyZTNhZDQuLjdiODllMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJWaXNpYmxl
VW5pdHMuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTYyLDcgKzYzLDcgQEAgc3RhdGljIGludCB0b0lk
ZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUpCiAKIHN0YXRpYyBTdHJpbmcmIHN0
eWxlU3BhbkNsYXNzU3RyaW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBzdHlsZVNwYW5DbGFzc1N0cmluZywgKChBcHBsZVN0eWxlU3BhbkNsYXNzKSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0eWxlU3BhbkNsYXNzU3RyaW5n
KEFwcGxlU3R5bGVTcGFuQ2xhc3MpOwogICAgIHJldHVybiBzdHlsZVNwYW5DbGFzc1N0cmluZzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRl
eCBmOTY4MmE0Li5jMTM0MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIK
ICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJO
YW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTksOCArMjYwLDggQEAgYm9vbCBN
YXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlRWxlbWVudChjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogICAgIGlmIChwcmVmaXguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIWVs
ZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zQXRvbSk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCB4bWxuc1dpdGhDb2xvbiwgKEFTQ0lJTGl0ZXJhbCgieG1sbnM6
IikpKTsKLSAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zV2l0aENvbG9uICsg
cHJlZml4KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB4bWxuc1dpdGhDb2xv
bihBU0NJSUxpdGVyYWwoInhtbG5zOiIpKTsKKyAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmli
dXRlKHhtbG5zV2l0aENvbG9uLmdldCgpICsgcHJlZml4KTsKIH0KIAogYm9vbCBNYXJrdXBBY2N1
bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlLCBOYW1lc3BhY2VzJiBuYW1lc3BhY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA3ODk3MmM3Li5lYjQxMGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcApAQCAtMTA0LDE0ICsxMDQsMTQgQEAgcHJpdmF0ZToKIAogc3RhdGljIGJvb2wgaXNJ
bnRlcmNoYW5nZU5ld2xpbmVOb2RlKGNvbnN0IE5vZGUgKm5vZGUpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJp
bmcsIChBcHBsZUludGVyY2hhbmdlTmV3bGluZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nKEFwcGxlSW50ZXJjaGFuZ2VO
ZXdsaW5lKTsKICAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSAmJiAK
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmli
dXRlKGNsYXNzQXR0cikgPT0gaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmc7CiB9CiAKIHN0
YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9kZSAqbm9k
ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb252ZXJ0
ZWRTcGFjZVNwYW5DbGFzc1N0cmluZywgKEFwcGxlQ29udmVydGVkU3BhY2UpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZyhB
cHBsZUNvbnZlcnRlZFNwYWNlKTsKICAgICByZXR1cm4gbm9kZS0+aXNIVE1MRWxlbWVudCgpICYm
IAogICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCAqPihub2RlKS0+Z2V0
QXR0cmlidXRlKGNsYXNzQXR0cikgPT0gY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmc7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDMwNmY0YjIuLjJkN2Fk
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC00MjgsNyArNDI4
LDcgQEAgYm9vbCBpc1RhYmxlU3RydWN0dXJlTm9kZShjb25zdCBOb2RlICpub2RlKQogCiBjb25z
dCBTdHJpbmcmIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcsICgmbm9CcmVh
a1NwYWNlLCAxKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbm9uQnJlYWtp
bmdTcGFjZVN0cmluZygmbm9CcmVha1NwYWNlLCAxKTsKICAgICByZXR1cm4gbm9uQnJlYWtpbmdT
cGFjZVN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDZkMzI2NTYu
LmM3YWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTIxMyw4ICsyMTMsOCBA
QCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFN0
cmluZ0J1aWxkZXImIG91dCwgU3R5bGVQcgogCiBjb25zdCBTdHJpbmcmIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyhib29sIGlzQmxvY2spCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xvc2UsIChBU0NJSUxp
dGVyYWwoIjwvZGl2PiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2UsIChBU0NJSUxpdGVyYWwoIjwvc3Bhbj4iKSkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGRpdkNsb3NlKEFTQ0lJTGl0
ZXJhbCgiPC9kaXY+IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+
IHN0eWxlU3BhbkNsb3NlKEFTQ0lJTGl0ZXJhbCgiPC9zcGFuPiIpKTsKICAgICByZXR1cm4gaXNC
bG9jayA/IGRpdkNsb3NlIDogc3R5bGVTcGFuQ2xvc2U7CiB9CiAKQEAgLTU3Nyw3ICs1NzcsNyBA
QCBzdGF0aWMgTm9kZSogaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKGNvbnN0IFJhbmdlKiBy
YW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaAogc3RhdGljIFN0cmluZyBjcmVhdGVNYXJrdXBJbnRl
cm5hbChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJhbmdlJiByYW5nZSwgVmVjdG9yPE5vZGUq
Piogbm9kZXMsCiAgICAgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGJv
b2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJM
cykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBp
bnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcsIChBU0NJSUxpdGVyYWwoIjxiciBjbGFzcz1cIiIgQXBw
bGVJbnRlcmNoYW5nZU5ld2xpbmUgIlwiPiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiPGJy
IGNsYXNzPVwiIiBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAiXCI+IikpOwogCiAgICAgYm9vbCBj
b2xsYXBzZWQgPSByYW5nZS5jb2xsYXBzZWQoKTsKICAgICBpZiAoY29sbGFwc2VkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5jcHAKaW5kZXggNmIwMzNiMC4uMGY0Y2U5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MSwxMSArNjIsMTAgQEAgdm9p
ZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJiB1cmwpCiAKIFVSTFJl
Z2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQmxvYlVSTFJlZ2lzdHJ5LCBpbnN0YW5jZSwgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxCbG9iVVJMUmVnaXN0cnk+IGluc3RhbmNlOwogICAgIHJldHVy
biBpbnN0YW5jZTsKIH0KIAotCiBCbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25s
eURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCBhMzJhMGI3Li5hZGIwZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTU4LDcgKzU5LDcgQEAgdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlu
cHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCopCiAKIHZvaWQgQmFzZUNob29z
ZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHZhbHVlQ29udGFp
bmVyUHNldWRvLCAoIi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiB2YWx1ZUNvbnRhaW5lclBzZXVkbygiLXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBSZWY8SFRNTERp
dkVsZW1lbnQ+IHZhbHVlQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50
KCkuZG9jdW1lbnQoKSk7CiAgICAgdmFsdWVDb250YWluZXItPnNldFBzZXVkbyh2YWx1ZUNvbnRh
aW5lclBzZXVkbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCBiMWU4
MjlkLi5iMzRmN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw3ICs2Miw3IEBA
IERhdGVDb21wb25lbnRzOjpUeXBlIERhdGVJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIAog
U3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAo
ZGF0ZURlZmF1bHRTdGVwLCBkYXRlRGVmYXVsdFN0ZXBCYXNlLCBkYXRlU3RlcFNjYWxlRmFjdG9y
LCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERl
c2NyaXB0aW9uKGRhdGVEZWZhdWx0U3RlcCwgZGF0ZURlZmF1bHRTdGVwQmFzZSwgZGF0ZVN0ZXBT
Y2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpOwog
CiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwogICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9
IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2lt
YWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKaW5kZXggYjJlZmU4NS4uYjI5NDUxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5o
IgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDcgKzYzLDcgQEAgRGVjaW1h
bCBEYXRlVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3Rl
cFJhbmdlIERhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5n
IGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwg
KGRhdGVUaW1lRGVmYXVsdFN0ZXAsIGRhdGVUaW1lRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZVN0
ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb24+IHN0ZXBEZXNjcmlwdGlvbihkYXRlVGltZURlZmF1bHRTdGVwLCBkYXRlVGltZURlZmF1
bHRTdGVwQmFzZSwgZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3Rl
cFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKICAg
ICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjpt
aW5pbXVtRGF0ZVRpbWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
VGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5jcHAKaW5kZXggNGE0MzhmMy4uODIxYzgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjgsNyArNjksNyBAQCB2b2lkIERhdGVUaW1l
TG9jYWxJbnB1dFR5cGU6OnNldFZhbHVlQXNEYXRlKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbgogCiBTdGVwUmFuZ2UgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6Y3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0
aW9uLCBzdGVwRGVzY3JpcHRpb24sIChkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXAsIGRhdGVUaW1l
TG9jYWxEZWZhdWx0U3RlcEJhc2UsIGRhdGVUaW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IsIFN0ZXBS
YW5nZTo6U2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRp
b24oZGF0ZVRpbWVMb2NhbERlZmF1bHRTdGVwLCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNl
LCBkYXRlVGltZUxvY2FsU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcik7CiAKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7CiAgICAgY29u
c3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJp
YnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11
bURhdGVUaW1lKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXgg
ZGFlMTc4Mi4uZTZlMDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KIApAQCAtNDQsMTAg
KzQ1LDEwIEBAIHN0YXRpYyBib29sIGlzVmFsaWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBh
ZGRyZXNzKQogICAgIGlmICghYWRkcmVzc0xlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEpTQzo6WWFycjo6UmVn
dWxhckV4cHJlc3Npb24sIHJlZ0V4cCwgKGVtYWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2
ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJF
eHByZXNzaW9uPiByZWdFeHAoZW1haWxQYXR0ZXJuLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKIAog
ICAgIGludCBtYXRjaExlbmd0aDsKLSAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAubWF0Y2go
YWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKKyAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAu
Z2V0KCkubWF0Y2goYWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKIAogICAgIHJldHVybiAhbWF0
Y2hPZmZzZXQgJiYgbWF0Y2hMZW5ndGggPT0gYWRkcmVzc0xlbmd0aDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggYjBmM2E5Mi4uY2RjN2IxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzMyw3ICszMzQsNyBAQCBBdG9t
aWNTdHJpbmcgRm9ybUtleUdlbmVyYXRvcjo6Zm9ybUtleShjb25zdCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlJiBjbwogewogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IG93bmVy
Rm9ybUZvclN0YXRlKGNvbnRyb2wpOwogICAgIGlmICghZm9ybSkgewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmb3JtS2V5Rm9yTm9Pd25lciwg
KCJObyBvd25lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZm9ybUtleUZvck5vT3duZXIo
Ik5vIG93bmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAg
IHJldHVybiBmb3JtS2V5Rm9yTm9Pd25lcjsKICAgICB9CiAgICAgRm9ybVRvS2V5TWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fZm9ybVRvS2V5TWFwLmZpbmQoZm9ybSk7CkBAIC0zODYsNyArMzg3
LDcgQEAgc3RhdGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogICAgIC8vIEluIHRoZSBs
ZWdhY3kgdmVyc2lvbiBvZiBzZXJpYWxpemVkIHN0YXRlLCB0aGUgZmlyc3QgaXRlbSB3YXMgYSBu
YW1lCiAgICAgLy8gYXR0cmlidXRlIHZhbHVlIG9mIGEgZm9ybSBjb250cm9sLiBUaGUgZm9sbG93
aW5nIHN0cmluZyBsaXRlcmFsIHNob3VsZAogICAgIC8vIGNvbnRhaW4gc29tZSBjaGFyYWN0ZXJz
IHdoaWNoIGFyZSByYXJlbHkgdXNlZCBmb3IgbmFtZSBhdHRyaWJ1dGUgdmFsdWVzLgotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNpZ25hdHVyZSwgKEFTQ0lJTGl0
ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxuXHI9
JiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2lnbmF0dXJlKEFTQ0lJ
TGl0ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxu
XHI9JiIpKTsKICAgICByZXR1cm4gc2lnbmF0dXJlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDllYWVjZmQuLjQxOWE0YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC02MTksNyArNjE5LDcgQEAgdHlw
ZWRlZiBIYXNoTWFwPGNvbnN0IEhUTUxBbmNob3JFbGVtZW50KiwgUmVmUHRyPEVsZW1lbnQ+PiBS
b290RWRpdGFibGVFbGVtZW50TWEKIAogc3RhdGljIFJvb3RFZGl0YWJsZUVsZW1lbnRNYXAmIHJv
b3RFZGl0YWJsZUVsZW1lbnRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChSb290RWRpdGFibGVFbGVtZW50TWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Um9vdEVkaXRhYmxlRWxlbWVudE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggMmU3M2Rl
ZC4uZGY4ZTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAK
QEAgLTY1LDE1ICs2NSwxNSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxCdXR0b25FbGVtZW50
Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAg
ICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJtaXQsICgic3VibWl0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VibWl0KCJzdWJtaXQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgICAgIHJldHVybiBzdWJtaXQ7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBCVVRUT046IHsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJ1dHRvbiwgKCJidXR0b24iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBidXR0b24oImJ1dHRvbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbjsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIFJFU0VUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCByZXNldCwgKCJyZXNldCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHJlc2V0KCJyZXNldCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAgICAgcmV0dXJuIHJlc2V0
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAKaW5kZXggOTE2MmFmYy4uZDA4N2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBIVE1MRmll
bGRTZXRFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZpZWxkc2V0
LCAoImZpZWxkc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZpZWxkc2V0KCJmaWVs
ZHNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBm
aWVsZHNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVP
d25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgKaW5kZXggMDFmYTcwMC4uOTY2NzFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg4LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVy
Tm9kZSo+JiBkaXNhYmxlZFN1YnRyZWVSb290cygpCiAgICAgewotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+LCBub2Rl
cywgKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaENvdW50ZWRTZXQ8Q29u
dGFpbmVyTm9kZSo+PiBub2RlczsKICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAppbmRleCBhYTA5MWZiLi44OTQ0
YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogICAgIEtleWdlblNlbGVjdEVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICA6IEhUTUxTZWxlY3RFbGVtZW50KHNlbGVj
dFRhZywgZG9jdW1lbnQsIDApCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwc2V1ZG9JZCwgKCItd2Via2l0LWtleWdlbi1zZWxlY3Qi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LWtleWdlbi1zZWxl
Y3QiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgc2V0UHNl
dWRvKHBzZXVkb0lkKTsKICAgICB9CiAKQEAgLTExMiw3ICsxMTMsNyBAQCBib29sIEhUTUxLZXln
ZW5FbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kZWRfdmFsdWVzLCBi
b29sKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxLZXlnZW5FbGVtZW50Ojpmb3JtQ29udHJv
bFR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGtleWdlbiwgKCJrZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4ga2V5Z2VuKCJrZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4ga2V5Z2VuOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKaW5kZXggYjU4MzIyMy4uMWM0OWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBzdGF0aWMgTGlua0V2ZW50U2VuZGVyJiBsaW5rTG9hZEV2ZW50U2VuZGVyKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTGlua0V2ZW50U2VuZGVyLCBzaGFy
ZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPExpbmtFdmVudFNlbmRlcj4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyKGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwogICAgIHJldHVybiBzaGFyZWRMb2FkRXZlbnRTZW5kZXI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDgxNTE2
ZmEuLjY4NGQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtMjA1LDcgKzIwNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB0eXBlZGVmIEhh
c2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVt
ZW50U2V0TWFwOwogc3RhdGljIERvY3VtZW50RWxlbWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1l
bnRTZXRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEb2N1bWVu
dEVsZW1lbnRTZXRNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEb2N1
bWVudEVsZW1lbnRTZXRNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGFiYTAwMWIuLmM0NTZlNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00MDQsOCArNDA0
LDggQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkLCBhbGwgY2FsbGVycyBhcmUgYWxtb3N0IGNl
cnRhaW5seSB3cm9uZy4KIHN0YXRpYyBib29sIGlzUmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIHRhZ0xpc3QsICgpKTsKLSAgICBpZiAodGFn
TGlzdC5pc0VtcHR5KCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4+IHRhZ0xpc3Q7CisgICAgaWYgKHRhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGF1dG8qIHRhZ3MgPSBIVE1MTmFtZXM6OmdldEhUTUxUYWdzKCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRNTE5hbWVzOjpIVE1MVGFnc0NvdW50OyBpKysp
IHsKICAgICAgICAgICAgIGlmICgqdGFnc1tpXSA9PSBiZ3NvdW5kVGFnCkBAIC00MjAsMTAgKzQy
MCwxMCBAQCBzdGF0aWMgYm9vbCBpc1JlY29nbml6ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUpCiAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IGNoYW5nZXMgaG93
IHdlIHBhcnNlIGRvY3VtZW50cy4KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHRhZ0xpc3QuYWRkKHRhZ3NbaV0tPmxvY2FsTmFtZSgpLmltcGwo
KSk7CisgICAgICAgICAgICB0YWdMaXN0LmdldCgpLmFkZCh0YWdzW2ldLT5sb2NhbE5hbWUoKS5p
bXBsKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiB0YWdMaXN0LmNvbnRhaW5zKHRh
Z05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICByZXR1cm4gdGFnTGlzdC5nZXQoKS5jb250
YWlucyh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVs
ZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50LmNwcAppbmRleCBlMGJkOGNmLi44NjIyNjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBI
VE1MT3B0R3JvdXBFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcHRn
cm91cCwgKCJvcHRncm91cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBvcHRncm91cCgi
b3B0Z3JvdXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gb3B0Z3JvdXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91
dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5j
cHAKaW5kZXggMmY2YmE3Yi4uZWRkYTRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01NCw3ICs1NSw3IEBAIFJlZjxIVE1MT3V0cHV0RWxlbWVudD4gSFRN
TE91dHB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgp
IGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21p
Y1N0cmluZywgb3V0cHV0LCAoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBv
dXRwdXQoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBvdXRwdXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKaW5kZXggMDExNzVkOS4uNTdhNTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3Ry
YXIoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4mKTsKIAogc3RhdGljIFZlY3RvcjxSZXBsYWNlbWVu
dFBsdWdpbio+JiByZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFJlcGxhY2VtZW50UGx1Z2luKj4sIHJlZ2lz
dGVyZWRSZXBsYWNlbWVudHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9y
PFJlcGxhY2VtZW50UGx1Z2luKj4+IHJlZ2lzdGVyZWRSZXBsYWNlbWVudHM7CiAgICAgc3RhdGlj
IGJvb2wgZW5naW5lc1F1ZXJpZWQgPSBmYWxzZTsKICAgICAKICAgICBpZiAoZW5naW5lc1F1ZXJp
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApp
bmRleCBkNjhhNTk5Li4wOWU3YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTc0LDI5ICs3NCwyOSBAQCBzdGF0aWMgY29uc3QgYXV0
byByZW1vdmVTbmFwc2hvdFRpbWVyRGVsYXkgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHsg
MTUwMCB9OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJp
bmcgbWltZVR5cGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE1pbWVU
eXBlVG9Mb2NhbGl6ZWRTdHJpbmdNYXAsIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLCAoKSk7Ci0g
ICAgU3RyaW5nIHRpdGxlVGV4dCA9IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLmdldChtaW1lVHlw
ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1pbWVUeXBlVG9Mb2NhbGl6ZWRTdHJpbmdN
YXA+IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwOworICAgIFN0cmluZyB0aXRsZVRleHQgPSBtaW1l
VHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5nZXQobWltZVR5cGUpOwogICAgIGlmICghdGl0bGVU
ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIAogICAgIHRpdGxlVGV4
dCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxUaXRsZShtaW1lVHlw
ZSk7CiAgICAgaWYgKHRpdGxlVGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHRpdGxlVGV4dCA9IHNu
YXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpOwotICAgIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFw
LnNldChtaW1lVHlwZSwgdGl0bGVUZXh0KTsKKyAgICBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5n
ZXQoKS5zZXQobWltZVR5cGUsIHRpdGxlVGV4dCk7CiAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIH07
CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgc3VidGl0bGVUZXh0KFBhZ2UqIHBhZ2UsIFN0cmluZyBt
aW1lVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTWltZVR5cGVU
b0xvY2FsaXplZFN0cmluZ01hcCwgbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAsICgpKTsKLSAg
ICBTdHJpbmcgc3VidGl0bGVUZXh0ID0gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuZ2V0KG1p
bWVUeXBlKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWltZVR5cGVUb0xvY2FsaXplZFN0
cmluZ01hcD4gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXA7CisgICAgU3RyaW5nIHN1YnRpdGxl
VGV4dCA9IG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLmdldChtaW1lVHlwZSk7CiAg
ICAgaWYgKCFzdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3VidGl0bGVU
ZXh0OwogCiAgICAgc3VidGl0bGVUZXh0ID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0lu
U3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBlKTsKICAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1w
dHkoKSkKICAgICAgICAgc3VidGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRp
dGxlKCk7Ci0gICAgbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuc2V0KG1pbWVUeXBlLCBzdWJ0
aXRsZVRleHQpOworICAgIG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLnNldChtaW1l
VHlwZSwgc3VidGl0bGVUZXh0KTsKICAgICByZXR1cm4gc3VidGl0bGVUZXh0OwogfTsKIApAQCAt
NDA4LDExICs0MDgsMTEgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2Vy
QWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVybGF5KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0
b3IsICgiLnNuYXBzaG90LW92ZXJsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc2VsZWN0b3Io
Ii5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgU2hhZG93Um9vdCogc2hhZG93ID0gdXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlm
ICghc2hhZG93KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHNu
YXBzaG90TGFiZWwgPSBzaGFkb3ctPnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IsIEFTU0VSVF9OT19F
WENFUFRJT04pOworICAgIFJlZlB0cjxFbGVtZW50PiBzbmFwc2hvdExhYmVsID0gc2hhZG93LT5x
dWVyeVNlbGVjdG9yKHNlbGVjdG9yLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBy
ZXR1cm4gbm9kZSAmJiBzbmFwc2hvdExhYmVsICYmIChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0
KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yoc25hcHNob3RMYWJlbC5nZXQoKSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU3MzA0N2YuLmFl
ZGVkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC05
Nyw4ICs5Nyw4IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxl
OjpDaGFuZ2Ugc3R5bGVDaGFuZ2UpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVs
ZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2VsZWN0TXVsdGlwbGUsICgic2VsZWN0
LW11bHRpcGxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNlbGVjdE9u
ZSwgKCJzZWxlY3Qtb25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNlbGVjdE11bHRp
cGxlKCJzZWxlY3QtbXVsdGlwbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzZWxlY3RP
bmUoInNlbGVjdC1vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gbV9tdWx0aXBsZSA/IHNlbGVjdE11bHRpcGxlIDogc2VsZWN0T25lOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAppbmRleCBhY2VkZWQ0Li41MWM2
ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIFN0eWxlRXZlbnRT
ZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3R5bGVFdmVudFNlbmRlciwgc2hhcmVkTG9hZEV2ZW50U2VuZGVyLCAoZXZl
bnROYW1lcygpLmxvYWRFdmVudCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHlsZUV2
ZW50U2VuZGVyPiBzaGFyZWRMb2FkRXZlbnRTZW5kZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7
CiAgICAgcmV0dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNzg5NDM3Yy4uMmM4Y2U0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xMTUsNyAr
MTE1LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRleHRBcmVh
RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0ZXh0YXJlYSwgKCJ0ZXh0YXJlYSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0ZXh0YXJlYSgidGV4dGFyZWEiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gdGV4dGFyZWE7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggZDdmMDczNy4uMDk2MzcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTM3NSw5ICszNzUsOSBAQCBpbnQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVTZWxlY3Rpb25FbmQoKSBjb25zdAog
CiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcoVGV4dEZpZWxkU2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBub25lLCAoIm5vbmUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9yd2FyZCwgKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJhY2t3YXJkLCAoImJhY2t3YXJkIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBmb3J3YXJkKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmFja3dhcmQo
ImJhY2t3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDEzMTBjZTkuLjVjYmYyZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC02NCwxMCArNjQsMTAg
QEAgYm9vbCBJbWFnZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNv
ZGluZywgYm9vbCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG90WFN0cmluZywgKEFTQ0lJTGl0
ZXJhbCgiLngiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGRvdFlTdHJpbmcsIChBU0NJSUxpdGVyYWwoIi55IikpKTsKLSAgICBlbmNvZGluZy5hcHBlbmRE
YXRhKG5hbWUgKyBkb3RYU3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueCgpKTsKLSAgICBlbmNvZGlu
Zy5hcHBlbmREYXRhKG5hbWUgKyBkb3RZU3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkb3RYU3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
LngiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZG90WVN0cmluZyhBU0NJ
SUxpdGVyYWwoIi55IikpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSArIGRvdFhTdHJp
bmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi54KCkpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEo
bmFtZSArIGRvdFlTdHJpbmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi55KCkpOwogCiAgICAgaWYg
KCFlbGVtZW50KCkudmFsdWUoKS5pc0VtcHR5KCkpCiAgICAgICAgIGVuY29kaW5nLmFwcGVuZERh
dGEobmFtZSwgZWxlbWVudCgpLnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5h
bWVzLmNwcAppbmRleCBhYzA4OTZhLi40Mzg3NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZU5hbWVzLmNwcApAQCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgSW5wdXRUeXBlTmFtZXMgewpA
QCAtMzEsMTM5ICszMywxMzkgQEAgbmFtZXNwYWNlIElucHV0VHlwZU5hbWVzIHsKIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBidXR0b24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGNoZWNrYm94KCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImNo
ZWNrYm94IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImNoZWNrYm94IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgY29sb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
bmFtZSgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBy
ZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBkYXRlKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImRhdGUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiZGF0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IGRhdGV0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBuYW1lLCAoImRhdGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImRh
dGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWVsb2NhbCgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRl
dGltZS1sb2NhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJkYXRldGltZS1sb2NhbCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImVtYWlsIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5hbWUoImVtYWlsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgZmlsZSgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwg
KCJmaWxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImZpbGUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBoaWRkZW4oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIG5hbWUsICgiaGlkZGVuIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5h
bWUoImhpZGRlbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImltYWdlIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImltYWdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbW9udGgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIG5hbWUsICgibW9udGgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgibW9udGgi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBudW1iZXIoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgibnVtYmVyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IG5hbWUoIm51bWJlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3N3
b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBuYW1lLCAoInBhc3N3b3JkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInBhc3N3b3Jk
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaW8oKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgicmFkaW8iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gbmFtZSgicmFkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiByYW5nZSgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFt
ZSwgKCJyYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJyYW5nZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInNlYXJj
aCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJzZWFyY2giLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBzdWJtaXQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIG5hbWUsICgic3VibWl0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUo
InN1Ym1pdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHRlbGVwaG9uZSgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ0ZWwiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGVsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
dGV4dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgbmFtZSwgKCJ0ZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInRleHQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiB0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInRpbWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gbmFtZSgidGltZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHVybCgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ1cmwiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidXJsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
d2VlaygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgbmFtZSwgKCJ3ZWVrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoIndlZWsiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IGRiYjAyYWIuLjQ3YTk1
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKQEAgLTI5MCwxOSAr
MjkwLDE5IEBAIHZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChib29sIGZsYWcpCiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBsYXliYWNrU3RhdGVXYWl0aW5nKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB3YWl0aW5nLCAoIndh
aXRpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gd2FpdGluZygid2FpdGluZyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiB3YWl0aW5nOwogfQogCiBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwbGF5YmFja1N0YXRlUGxheWluZygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGxheWluZywgKCJw
bGF5aW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBsYXlpbmcoInBsYXlpbmciLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcGxheWluZzsKIH0KIAog
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGxheWJhY2tTdGF0ZUVuZGVkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbmRlZCwgKCJlbmRl
ZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggNDcyOTg3Mi4uNjBjMzE2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkwLDcgKzkxLDcgQEAgRGVjaW1hbCBNb250aElucHV0
VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIE1vbnRoSW5w
dXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykg
Y29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJh
bmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKG1vbnRoRGVmYXVsdFN0ZXAs
IG1vbnRoRGVmYXVsdFN0ZXBCYXNlLCBtb250aFN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQ
YXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0ZXBEZXNjcmlwdGlvbihtb250
aERlZmF1bHRTdGVwLCBtb250aERlZmF1bHRTdGVwQmFzZSwgbW9udGhTdGVwU2NhbGVGYWN0b3Is
IFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0
IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmli
dXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKG1vbnRoRGVmYXVsdFN0ZXBCYXNlKSk7
CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFz
dEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50
czo6bWluaW11bU1vbnRoKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNw
cAppbmRleCBmZDM1YmI4Li5mNjYwNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnR5cGVN
aXNtYXRjaCgpIGNvbnN0CiAKIFN0ZXBSYW5nZSBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBS
YW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlv
biwgc3RlcERlc2NyaXB0aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVw
QmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRpb24obnVtYmVy
RGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9y
KTsKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJU
eXBlKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3Rl
cEJhc2UpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1heCBmb3IgbnVtYmVyIGlucHV0IHR5cGUuCiAgICAgY29uc3QgRGVjaW1hbCBmbG9hdE1h
eCA9IERlY2ltYWw6OmZyb21Eb3VibGUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggMjRmN2JiYy4uZTBk
NzcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTExMyw3ICsx
MTMsNyBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QKIAog
U3RlcFJhbmdlIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5n
IGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwg
KHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZh
Y3RvcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVs
dFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3Rvcik7CiAKICAgICBjb25zdCBEZWNpbWFsIG1p
bmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIp
LCByYW5nZURlZmF1bHRNaW5pbXVtKTsKICAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBlbnN1
cmVNYXhpbXVtKHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0
ciksIHJhbmdlRGVmYXVsdE1heGltdW0pLCBtaW5pbXVtLCByYW5nZURlZmF1bHRNYXhpbXVtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCBjNDc3MThhLi5lYmYzMWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNjUsMTMgKzY2LDEzIEBAIFN0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0
IERlY2ltYWwmIHN0ZXBCYXNlLCBjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25zdCBEZWNpCiBE
ZWNpbWFsIFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9yKCkgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHVzZSBEQkxfTUFOVF9ESUcgaW5zdGVhZCBvZiBGTFRfTUFOVF9ESUcgcmVn
YXJkaW5nIHRvIEhUTUw1IHNwZWNpZmljYXRpb24uCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IERlY2ltYWwsIHR3b1Bvd2VyT2ZGbG9hdE1hbnRpc3NhQml0cywgKERl
Y2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgRGVjaW1hbD4gdHdvUG93ZXJPZkZsb2F0TWFudGlz
c2FCaXRzKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcp
OwogICAgIHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5zdGVwVmFsdWVTaG91bGRCZSA9PSBTdGVw
VmFsdWVTaG91bGRCZVJlYWwgPyBtX3N0ZXAgLyB0d29Qb3dlck9mRmxvYXRNYW50aXNzYUJpdHMg
OiBEZWNpbWFsKDApOwogfQogCiBEZWNpbWFsIFN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAo
Y29uc3QgRGVjaW1hbCYgY3VycmVudFZhbHVlLCBjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSkgY29u
c3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwg
dGVuUG93ZXJPZjIxLCAoRGVjaW1hbDo6UG9zaXRpdmUsIDIxLCAxKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IERlY2ltYWw+IHRlblBvd2VyT2YyMShEZWNpbWFsOjpQb3NpdGl2
ZSwgMjEsIDEpOwogICAgIGlmIChuZXdWYWx1ZSA+PSB0ZW5Qb3dlck9mMjEpCiAgICAgICAgIHJl
dHVybiBuZXdWYWx1ZTsKIApAQCAtMTUwLDcgKzE1MSw3IEBAIGJvb2wgU3RlcFJhbmdlOjpzdGVw
TWlzbWF0Y2goY29uc3QgRGVjaW1hbCYgdmFsdWVGb3JDaGVjaykgY29uc3QKICAgICAvLyBEZWNp
bWFsJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0LiBJZiB0aGUgY3Vy
cmVudCB2YWx1ZQogICAgIC8vIGlzIGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJMX01BTlRfRElHLCB0
aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIGZvcgogICAgIC8vIHJlbWFpbmRlciBtYWtlcyBubyBz
ZW5zZS4KLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwg
dHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cywgKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5U
NjRfQygxKSA8PCBEQkxfTUFOVF9ESUcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgRGVjaW1hbD4gdHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cyhEZWNpbWFsOjpQb3NpdGl2
ZSwgMCwgVUlOVDY0X0MoMSkgPDwgREJMX01BTlRfRElHKTsKICAgICBpZiAodmFsdWUgLyB0d29Q
b3dlck9mRG91YmxlTWFudGlzc2FCaXRzID4gbV9zdGVwKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgLy8gVGhlIGNvbXB1dGF0aW9uIGZvbGxvd3MgSFRNTDUgNC4xMC43LjIuMTAgYFRoZSBz
dGVwIGF0dHJpYnV0ZScgOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKaW5kZXgg
YzA5MDQxOS4uODczYmM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCkBA
IC03Nyw3ICs3Nyw3IEBAIERlY2ltYWwgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3Rl
cFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShB
bnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3Rl
cERlc2NyaXB0aW9uLCAodGltZURlZmF1bHRTdGVwLCB0aW1lRGVmYXVsdFN0ZXBCYXNlLCB0aW1l
U3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdl
cikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNj
cmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHRpbWVEZWZhdWx0U3RlcCwgdGltZURlZmF1bHRTdGVw
QmFzZSwgdGltZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91
bGRCZUludGVnZXIpOwogCiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1i
ZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwogICAgIGNvbnN0IERl
Y2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUo
bWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1UaW1l
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCmluZGV4IDg0Y2E5ODguLjE4
YzA0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcApAQCAtNTYsNyArNTYs
NyBAQCBEYXRlQ29tcG9uZW50czo6VHlwZSBXZWVrSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0
CiAKIFN0ZXBSYW5nZSBXZWVrSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRs
aW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlv
biwgKHdlZWtEZWZhdWx0U3RlcCwgd2Vla0RlZmF1bHRTdGVwQmFzZSwgd2Vla1N0ZXBTY2FsZUZh
Y3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0
ZXBEZXNjcmlwdGlvbih3ZWVrRGVmYXVsdFN0ZXAsIHdlZWtEZWZhdWx0U3RlcEJhc2UsIHdlZWtT
dGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2Vy
KTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQo
KS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlKTsKICAgICBj
b25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0
cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjptaW5p
bXVtV2VlaygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA2NTQyN2ExLi5hNjAzMzdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYg
VVNFKENHKQpAQCAtMTk1OSw3ICsxOTYwLDcgQEAgUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjp3ZWJraXRHZXRJbWFnZURhdGFIRChmbG9hdCBzeCwgZmxvYXQKIFJl
ZlB0cjxJbWFnZURhdGE+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRhKElt
YWdlQnVmZmVyOjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0sIGZsb2F0IHN4LCBm
bG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsK
ICAgICBpZiAoIWNhbnZhcygpLT5vcmlnaW5DbGVhbigpKSB7Ci0gICAgICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0aGUgY2FudmFz
IGhhcyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEuIikpKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJV
bmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0aGUgY2FudmFzIGhh
cyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEuIikpOwogICAgICAgICBjYW52YXMo
KS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UpOwogICAgICAgICBlYyA9IFNFQ1VS
SVRZX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGQ5YWUxMmEuLmExOTFmMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk
ZSAiWExpbmtOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNzMsNyArMjc0LDcgQEAgdm9pZCBYU1NBdWRpdG9yOjpp
bml0KERvY3VtZW50KiBkb2N1bWVudCwgWFNTQXVkaXRvckRlbGVnYXRlKiBhdWRpdG9yRGVsZWdh
dGUpCiAKICAgICBTdHJpbmcgaHR0cEJvZHlBc1N0cmluZzsKICAgICBpZiAoRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyID0gZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCkpIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgWFNTUHJvdGVjdGlvbkhlYWRlciwgKEFTQ0lJTGl0ZXJhbCgiWC1YU1MtUHJvdGVjdGlvbiIp
KSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IFhTU1Byb3RlY3Rpb25I
ZWFkZXIoQVNDSUlMaXRlcmFsKCJYLVhTUy1Qcm90ZWN0aW9uIikpOwogICAgICAgICBTdHJpbmcg
aGVhZGVyVmFsdWUgPSBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQo
WFNTUHJvdGVjdGlvbkhlYWRlcik7CiAgICAgICAgIFN0cmluZyBlcnJvckRldGFpbHM7CiAgICAg
ICAgIHVuc2lnbmVkIGVycm9yUG9zaXRpb24gPSAwOwpAQCAtNTIzLDcgKzUyNCw3IEBAIGJvb2wg
WFNTQXVkaXRvcjo6ZmlsdGVyQnV0dG9uVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiBy
ZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5q
ZWN0ZWQoY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNhZmVKYXZhU2NyaXB0VVJMLCAoQVNDSUlM
aXRlcmFsKCJqYXZhc2NyaXB0OnZvaWQoMCkiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHNhZmVKYXZhU2NyaXB0VVJMKEFTQ0lJTGl0ZXJhbCgiamF2YXNjcmlwdDp2b2lk
KDApIikpOwogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVxdWVzdC50b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyArK2kpIHsK
QEAgLTUzOCw3ICs1MzksNyBAQCBib29sIFhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmli
dXRlc0lmSW5qZWN0ZWQoY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIHJlcXVlc3QudG9rZW4uZXJhc2VWYWx1ZU9mQXR0cmlidXRlKGkp
OwogICAgICAgICBpZiAodmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwpCi0gICAgICAgICAgICBy
ZXF1ZXN0LnRva2VuLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoaSwgc2FmZUphdmFTY3JpcHRVUkwp
OworICAgICAgICAgICAgcmVxdWVzdC50b2tlbi5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGksIHNh
ZmVKYXZhU2NyaXB0VVJMLmdldCgpKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgPSB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggMDc5YmMwZi4uZjdh
M2M3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcApAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
CiB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRl
RGlzcGxheSgpCiB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdGVkQ2xhc3NWYWx1ZSwgKCJzZWxl
Y3RlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzZWxlY3RlZENsYXNzVmFsdWUoInNlbGVjdGVk
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAoIW1lZGlh
Q29udHJvbGxlcigpLT5oYXNDbG9zZWRDYXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC0x
MDM4LDcgKzEwMzgsNyBAQCBSZWY8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50PiBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZQogCiBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBnZXRNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnRT
aGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1k
aXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGlkKCItd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXRpbWUtcmVtYWluaW5nLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gaWQ7CiB9CiAKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIFJlZjxNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xDdXJyZW50VGlt
ZURpc3BsYXlFbGVtZW50CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGdldE1lZGlhQ29u
dHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1t
ZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBpZCgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBpZDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKaW5k
ZXggMTY0NWI4Mi4uODA4MmNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTWV0ZXJTaGFk
b3dFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIE1l
dGVySW5uZXJFbGVtZW50OjpNZXRlcklubmVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgOiBNZXRlclNoYWRvd0VsZW1lbnQoZG9jdW1lbnQpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1p
bm5lci1lbGVtZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LW1l
dGVyLWlubmVyLWVsZW1lbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBzZXRQc2V1ZG8ocHNldWRvSWQpOwogfQogCkBAIC04MCw5ICs4MCw5IEBAIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWV0ZXJWYWx1ZUVsZW1lbnQ6
OnZhbHVlUHNldWRvSWQoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG9wdGltdW1Qc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLW9wdGlt
dW0tdmFsdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc3Vib3B0aW11bVBzZXVk
b0lkLCAoIi13ZWJraXQtbWV0ZXItc3Vib3B0aW11bS12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBldmVuTGVzc0dvb2RQc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLWV2ZW4t
bGVzcy1nb29kLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wdGltdW1Qc2V1ZG9JZCgi
LXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc3Vib3B0
aW11bVBzZXVkb0lkKCItd2Via2l0LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBldmVuTGVzc0dvb2RQc2V1ZG9JZCgiLXdlYmtpdC1tZXRlci1ldmVuLWxlc3Mt
Z29vZC12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAg
SFRNTE1ldGVyRWxlbWVudCogbWV0ZXIgPSBtZXRlckVsZW1lbnQoKTsKICAgICBpZiAoIW1ldGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaApp
bmRleCA0ZjliMzA0Li43NzA2YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZXRlclNoYWRvd0VsZW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShNRVRF
Ul9FTEVNRU5UKQogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC03NSw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgTWV0ZXJCYXJFbGVtZW50
KERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgOiBNZXRlclNoYWRvd0VsZW1lbnQoZG9jdW1l
bnQpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBwc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLWJhciIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gcHNldWRvSWQoIi13ZWJraXQtbWV0ZXItYmFyIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHNldFBzZXVkbyhwc2V1ZG9JZCk7CiAgICAgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCmluZGV4IGZiNTgzMzYuLjBkODkxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNTc2LDEzICs1NzYsMTMgQEAgSFRN
TElucHV0RWxlbWVudCogU2xpZGVyVGh1bWJFbGVtZW50Ojpob3N0SW5wdXQoKSBjb25zdAogCiBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzbGlkZXJUaHVtYlNoYWRvd1BzZXVkb0lkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBz
bGlkZXJUaHVtYiwgKCItd2Via2l0LXNsaWRlci10aHVtYiIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBzbGlkZXJUaHVtYigiLXdlYmtpdC1zbGlkZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc2xpZGVyVGh1bWI7CiB9CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhU2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgbWVkaWFTbGlkZXJUaHVtYiwgKCItd2Via2l0LW1lZGlhLXNsaWRlci10aHVtYiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBtZWRpYVNsaWRlclRodW1iKCItd2Via2l0LW1lZGlhLXNs
aWRlci10aHVtYiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBtZWRpYVNsaWRlclRodW1iOwogfQogCkBAIC02NDIsOCArNjQyLDggQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
CiAgICAgLy8gdGhhdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBzdHlsZSwgd2hpY2ggbWVhbnMgdGhl
IHN0eWxlIG5lZWRzIHRvIGJlIGNvbXB1dGVkIHR3aWNlIHRvIGdldAogICAgIC8vIGEgY29ycmVj
dCB2YWx1ZTogb25jZSB0byBnZXQgdGhlIElucHV0J3MgYXBwZWFyYW5jZSwgdGhlbiBhIHNlY29u
ZCB0aW1lIHRvIHN0eWxlIHRoZSBzaGFkb3cgdHJlZSBjb3JyZWN0bHkuCiAKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtZWRpYVNsaWRlckNv
bnRhaW5lciwgKCItd2Via2l0LW1lZGlhLXNsaWRlci1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2xpZGVyQ29udGFpbmVyLCAoIi13ZWJraXQtc2xpZGVy
LWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBtZWRpYVNsaWRlckNvbnRh
aW5lcigiLXdlYmtpdC1tZWRpYS1zbGlkZXItY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gc2xpZGVyQ29udGFpbmVyKCItd2Via2l0LXNsaWRlci1jb250YWluZXIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIGlmICghaXM8SFRNTElucHV0
RWxlbWVudD4oKnNoYWRvd0hvc3QoKSkpCiAgICAgICAgIHJldHVybiBzbGlkZXJDb250YWluZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcAppbmRleCA4NzMyOTI1Li5h
NDJlMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTM4
LDQyICszOCw0MyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZlLCAoImFsdGVy
bmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHRlcm5h
dGl2ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktl
eXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIGRlc2NyaXB0aW9uLCAoImRlc2NyaXB0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IGRlc2NyaXB0aW9uKCJkZXNjcmlwdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWFpbiwgKCJtYWluIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IG1haW4oIm1haW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gbWFpbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1Ry
YWNrOjptYWluRGVzY0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW5EZXNjLCAoIm1haW4tZGVzYyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBtYWluRGVzYygibWFpbi1kZXNjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1haW5EZXNjOwogfQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhbnNsYXRpb24sICgi
dHJhbnNsYXRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdHJhbnNsYXRpb24oInRyYW5zbGF0
aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHRy
YW5zbGF0aW9uOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRh
cnlLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBjb21tZW50YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gY29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggMGQ5YTJiNi4uNzI5ZjUyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtNDksNTUgKzQ5LDU1IEBAIHN0YXRpYyBj
b25zdCBpbnQgaW52YWxpZFRyYWNrSW5kZXggPSAtMTsKIAogY29uc3QgQXRvbWljU3RyaW5nJiBU
ZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc3VidGl0bGVzOwogfQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0
aW9ucywgKCJjYXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjYXB0aW9ucygi
Y2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gY2FwdGlvbnM7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpkZXNjcmlw
dGlvbnNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbnMsICgiZGVzY3JpcHRpb25zIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IGRlc2NyaXB0aW9ucygiZGVzY3JpcHRpb25zIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uczsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmNoYXB0ZXJzS2V5d29yZCgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2hh
cHRlcnMsICgiY2hhcHRlcnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2hhcHRlcnMo
ImNoYXB0ZXJzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIGNoYXB0ZXJzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6bWV0YWRh
dGFLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBtZXRhZGF0YSwgKCJtZXRhZGF0YSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBtZXRhZGF0YSgibWV0YWRhdGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gbWV0YWRhdGE7CiB9CiAgICAgCiBjb25zdCBBdG9taWNTdHJp
bmcmIFRleHRUcmFjazo6Zm9yY2VkS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9yY2VkLCAoImZvcmNlZCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBmb3JjZWQoImZvcmNlZCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBmb3JjZWQ7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgVGV4dFRyYWNrOjpkaXNhYmxlZEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG9wZW4sICgiZGlzYWJsZWQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gb3BlbigiZGlzYWJsZWQiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gb3BlbjsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNsb3NlZCwgKCJoaWRk
ZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2xvc2VkKCJoaWRkZW4iLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY2xvc2VkOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGVuZGVkLCAo
InNob3dpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZW5kZWQoInNob3dpbmciLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IDY0ZTZmZDIu
LjdlNTkyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBjdWVTaGFkb3dQc2V1ZG9JZCgpCiAgICAgewotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjdWUsICgiY3VlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjdWUoImN1ZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gY3VlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IDdhYzg2NjEuLjAyMzBmNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTcyLDMxICs3MiwzMSBAQCBDT01QSUxFX0FT
U0VSVChXVEZfQVJSQVlfTEVOR1RIKGRpc3BsYXlBbGlnbm1lbnRNYXApID09IFZUVEN1ZTo6TnVt
YmVyT2ZBbGlnbm1lbgogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiBzdGFydEtleXdvcmQoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0YXJ0LCAo
QVNDSUlMaXRlcmFsKCJzdGFydCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IFN0cmluZz4gc3RhcnQoQVNDSUlMaXRlcmFsKCJzdGFydCIpKTsKICAgICByZXR1cm4gc3RhcnQ7
CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIG1pZGRsZUtleXdvcmQoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIG1pZGRsZSwgKEFTQ0lJTGl0
ZXJhbCgibWlkZGxlIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5n
PiBtaWRkbGUoQVNDSUlMaXRlcmFsKCJtaWRkbGUiKSk7CiAgICAgcmV0dXJuIG1pZGRsZTsKIH0K
IAogc3RhdGljIGNvbnN0IFN0cmluZyYgZW5kS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZW5kLCAoQVNDSUlMaXRlcmFsKCJlbmQi
KSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGVuZChBU0NJSUxp
dGVyYWwoImVuZCIpKTsKICAgICByZXR1cm4gZW5kOwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5n
JiBsZWZ0S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgbGVmdCwgKCJsZWZ0IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IGxlZnQoImxlZnQiKTsKICAgICByZXR1cm4gbGVmdDsKIH0KIAogc3RhdGlj
IGNvbnN0IFN0cmluZyYgcmlnaHRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCByaWdodCwgKCJyaWdodCIpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiByaWdodCgicmlnaHQiKTsKICAgICByZXR1cm4g
cmlnaHQ7CiB9CiAKQEAgLTEwNywxMyArMTA3LDEzIEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGhv
cml6b250YWxLZXl3b3JkKCkKIAogc3RhdGljIGNvbnN0IFN0cmluZyYgdmVydGljYWxHcm93aW5n
TGVmdEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIHZlcnRpY2FscmwsIChBU0NJSUxpdGVyYWwoInJsIikpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2ZXJ0aWNhbHJsKEFTQ0lJTGl0ZXJhbCgicmwi
KSk7CiAgICAgcmV0dXJuIHZlcnRpY2Fscmw7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHZl
cnRpY2FsR3Jvd2luZ1JpZ2h0S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdmVydGljYWxsciwgKEFTQ0lJTGl0ZXJhbCgibHIiKSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZlcnRpY2FsbHIoQVND
SUlMaXRlcmFsKCJsciIpKTsKICAgICByZXR1cm4gdmVydGljYWxscjsKIH0KIApAQCAtMjI1LDcg
KzIyNSw3IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6
ZSYgdmlkZW9TaXplKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZUVEN1ZUJveDo6dnR0Q3VlQm94
U2hhZG93UHNldWRvSWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkLCAoIi13ZWJr
aXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2st
ZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZDsKIH0KIApAQCAtMjM4LDcgKzIzOCw3IEBA
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVlRUQ3VlOjpj
dWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkLCAo
Ii13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEt
dGV4dC10cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQ7CiB9CiAKQEAg
LTU5Nyw3ICs1OTcsNyBAQCBzdGF0aWMgYm9vbCBpc0N1ZVBhcmFncmFwaFNlcGFyYXRvcihVQ2hh
ciBjaGFyYWN0ZXIpCiAKIHZvaWQgVlRUQ3VlOjpkZXRlcm1pbmVUZXh0RGlyZWN0aW9uKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBydFRhZywg
KEFTQ0lJTGl0ZXJhbCgicnQiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBT
dHJpbmc+IHJ0VGFnKEFTQ0lJTGl0ZXJhbCgicnQiKSk7CiAgICAgY3JlYXRlV2ViVlRUTm9kZVRy
ZWUoKTsKICAgICBpZiAoIW1fd2ViVlRUTm9kZVRyZWUpCiAgICAgICAgIHJldHVybjsKQEAgLTc0
MSw3ICs3NDEsNyBAQCB2b2lkIFZUVEN1ZTo6Y2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKQog
ICAgIAogdm9pZCBWVFRDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMoQ29udGFpbmVyTm9kZSog
cm9vdCwgY29uc3QgTWVkaWFUaW1lJiBwcmV2aW91c1RpbWVzdGFtcCwgY29uc3QgTWVkaWFUaW1l
JiBtb3ZpZVRpbWUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IFN0cmluZywgdGltZXN0YW1wVGFnLCAoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHRpbWVzdGFtcFRhZyhBU0NJSUxp
dGVyYWwoInRpbWVzdGFtcCIpKTsKICAgICAKICAgICBib29sIGlzUGFzdE5vZGUgPSB0cnVlOwog
ICAgIE1lZGlhVGltZSBjdXJyZW50VGltZXN0YW1wID0gcHJldmlvdXNUaW1lc3RhbXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKaW5kZXggODU3OTg2OC4uOTQxMWY3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMTg4LDcgKzE4OCw3
IEBAIHZvaWQgVlRUUmVnaW9uOjpzZXRWaWV3cG9ydEFuY2hvclkoZG91YmxlIHZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKIAogY29uc3QgQXRvbWljU3RyaW5nIFZUVFJlZ2lvbjo6c2Nyb2xsKCkg
Y29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCB1cFNjcm9sbFZhbHVlS2V5d29yZCwgKCJ1cCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiB1cFNjcm9sbFZhbHVlS2V5d29yZCgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKIAogICAgIGlmIChtX3Njcm9sbCkKICAgICAgICAgcmV0dXJuIHVwU2Ny
b2xsVmFsdWVLZXl3b3JkOwpAQCAtMTk4LDcgKzE5OCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyBW
VFRSZWdpb246OnNjcm9sbCgpIGNvbnN0CiAKIHZvaWQgVlRUUmVnaW9uOjpzZXRTY3JvbGwoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdXBTY3JvbGxWYWx1
ZUtleXdvcmQsICgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdXBTY3JvbGxWYWx1
ZUtleXdvcmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAg
ICBpZiAodmFsdWUgIT0gZW1wdHlTdHJpbmcoKSAmJiB2YWx1ZSAhPSB1cFNjcm9sbFZhbHVlS2V5
d29yZCkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CkBAIC0yNjgsNyArMjY4LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIHBhcnNlZEVudGlyZVJ1bihjb25zdCBWVFRTY2FubmVyJiBpbnB1dCwg
Y29uc3QgVlRUU2Nhbm5lcjo6UnUKIAogdm9pZCBWVFRSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVl
KFJlZ2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2Nyb2xsVXBWYWx1
ZUtleXdvcmQsICgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc2Nyb2xsVXBWYWx1
ZUtleXdvcmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAg
ICBWVFRTY2FubmVyOjpSdW4gdmFsdWVSdW4gPSBpbnB1dC5jb2xsZWN0VW50aWw8aXNIVE1MU3Bh
Y2U8VUNoYXI+PigpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBWVFRSZWdpb246OnBhcnNl
U2V0dGluZ1ZhbHVlKFJlZ2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFNjcm9sbDoKLSAgICAgICAgaWYgKGlucHV0
LnNjYW5SdW4odmFsdWVSdW4sIHNjcm9sbFVwVmFsdWVLZXl3b3JkKSkKKyAgICAgICAgaWYgKGlu
cHV0LnNjYW5SdW4odmFsdWVSdW4sIHNjcm9sbFVwVmFsdWVLZXl3b3JkLmdldCgpKSkKICAgICAg
ICAgICAgIG1fc2Nyb2xsID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiVlRUUmVnaW9uOjpwYXJzZVNldHRpbmdWYWx1ZSwgaW52YWxpZCBTY3JvbGwiKTsKQEAg
LTMyNiw3ICszMjYsNyBAQCB2b2lkIFZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUoUmVnaW9u
U2V0dGluZyBzZXR0aW5nLCBWVFRTY2FubmVyJiBpbnB1dCkKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBWVFRSZWdpb246OnRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFj
a1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzLCAoInNjcm9sbGluZyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNz
KCJzY3JvbGxpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAg
IHJldHVybiB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKaW5kZXggOTc0ZTQ5Ny4uNzM0MDkzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBAIC00NywzNyArNDcs
MzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJh
Y2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx0ZXJuYXRpdmUoImFsdGVybmF0aXZlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGFsdGVybmF0aXZl
OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgY2FwdGlvbnMsICgiY2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2Fw
dGlvbnMoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIGNhcHRpb25zOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6
Om1haW5LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNT
dHJpbmc+IGNhcHRpb25zKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIGNhcHRpb25zOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVv
VHJhY2s6OnNpZ25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBzaWduLCAoInNpZ24iLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gc2lnbigic2lnbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBzaWduOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6
OnN1YnRpdGxlc0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc3VidGl0bGVzOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50YXJ5
LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY29tbWVudGFyeSgi
Y29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBjb21tZW50YXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRF
bGVtZW50LmNwcAppbmRleCBhM2MwMzY2Li4xZjYxMGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFnTmFt
ZShXZWJWVFROb2RlVHlwZSBub2RlVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgY1RhZywgKG51bGxBdG9tLCAiYyIsIG51bGxBdG9tKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZUYWcs
IChudWxsQXRvbSwgInYiLCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChRdWFsaWZpZWROYW1lLCBsYW5nVGFnLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0
b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwg
YlRhZywgKG51bGxBdG9tLCAiYiIsIG51bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHVUYWcsIChudWxsQXRvbSwgInUiLCBudWxsQXRv
bSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBp
VGFnLCAobnVsbEF0b20sICJpIiwgbnVsbEF0b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgcnVieVRhZywgKG51bGxBdG9tLCAicnVieSIsIG51
bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5h
bWUsIHJ0VGFnLCAobnVsbEF0b20sICJydCIsIG51bGxBdG9tKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGNUYWcobnVsbEF0b20sICJjIiwgbnVsbEF0b20pOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2VGFnKG51bGxBdG9tLCAi
diIsIG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4g
bGFuZ1RhZyhudWxsQXRvbSwgImxhbmciLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFF1YWxpZmllZE5hbWU+IGJUYWcobnVsbEF0b20sICJiIiwgbnVsbEF0b20pOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxBdG9tLCAidSIs
IG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gaVRh
ZyhudWxsQXRvbSwgImkiLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1
YWxpZmllZE5hbWU+IHJ1YnlUYWcobnVsbEF0b20sICJydWJ5IiwgbnVsbEF0b20pOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydFRhZyhudWxsQXRvbSwgInJ0Iiwg
bnVsbEF0b20pOwogICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKICAgICBjYXNlIFdlYlZUVE5vZGVU
eXBlQ2xhc3M6CiAgICAgICAgIHJldHVybiBjVGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVEVsZW1lbnQuaAppbmRleCA4OWQzZDJjLi41ZWZkYzE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsMTMgKzYz
LDEzIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUF0
dHJpYnV0ZU5hbWUoKQogICAgIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxBdG9tLCAidm9pY2UiLCBudWxsQXRv
bSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VB
dHRyKG51bGxBdG9tLCAidm9pY2UiLCBudWxsQXRvbSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0
dHI7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0
cmlidXRlTmFtZSgpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoUXVhbGlmaWVkTmFtZSwgdm9pY2VBdHRyLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20p
KTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZvaWNlQXR0
cihudWxsQXRvbSwgImxhbmciLCBudWxsQXRvbSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5k
ZXggMTkyMjAxMC4uOWViMTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpoYXNSZXF1
aXJlZEZpbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbGluZSkKIHZvaWQgV2ViVlRUUGFyc2Vy
Ojpjb2xsZWN0TWV0YWRhdGFIZWFkZXIoY29uc3QgU3RyaW5nJiBsaW5lKQogewogICAgIC8vIFdl
YlZUVCBoZWFkZXIgcGFyc2luZyAoV2ViVlRUIHBhcnNlciBhbGdvcml0aG0gc3RlcCAxMikKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCByZWdp
b25IZWFkZXJOYW1lLCAoIlJlZ2lvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiByZWdp
b25IZWFkZXJOYW1lKCJSZWdpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKIAogICAgIC8vIFN0ZXAgMTIuNCBJZiBsaW5lIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgIjoi
IChBIFUrMDAzQSBDT0xPTiksIHRoZW4gc2V0IG1ldGFkYXRhJ3MKICAgICAvLyBuYW1lIHRvIHRo
ZSBzdWJzdHJpbmcgb2YgbGluZSBiZWZvcmUgdGhlIGZpcnN0ICI6IiBjaGFyYWN0ZXIgYW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAx
MWU1MjQ5Li5lOWIzMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTc5LDEwICs3OSwxMCBAQCBlbnVtIEZvcmNlUHNldWRvQ2xhc3NG
bGFncyB7CiAKIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlUHNldWRvQ2xhc3NNYXNrKGNvbnN0IElu
c3BlY3RvckFycmF5JiBwc2V1ZG9DbGFzc0FycmF5KQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGFjdGl2ZSwgKEFTQ0lJTGl0ZXJhbCgiYWN0aXZlIikpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBob3ZlciwgKEFTQ0lJ
TGl0ZXJhbCgiaG92ZXIiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGZvY3VzLCAoQVNDSUlMaXRlcmFsKCJmb2N1cyIpKSk7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdmlzaXRlZCwgKEFTQ0lJTGl0ZXJhbCgidmlzaXRl
ZCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWN0aXZlKEFTQ0lJTGl0
ZXJhbCgiYWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGhvdmVy
KEFTQ0lJTGl0ZXJhbCgiaG92ZXIiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gZm9jdXMoQVNDSUlMaXRlcmFsKCJmb2N1cyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiB2aXNpdGVkKEFTQ0lJTGl0ZXJhbCgidmlzaXRlZCIpKTsKICAgICBpZiAoIXBz
ZXVkb0NsYXNzQXJyYXkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBQc2V1ZG9DbGFzc05vbmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
aW5kZXggNWNlOGMyNi4uZDY2MDIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTIzMCw4ICsyMzAsOCBAQCB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJh
bWUqIGZyYW1lLAogLy9zdGF0aWMKIFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1h
cFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIVFRQSGVhZGVy
LCAoQVNDSUlMaXRlcmFsKCJTb3VyY2VNYXAiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkLCAoQVNDSUlM
aXRlcmFsKCJYLVNvdXJjZU1hcCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc291cmNlTWFwSFRUUEhlYWRlcihBU0NJSUxpdGVyYWwoIlNvdXJjZU1hcCIpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRl
ZChBU0NJSUxpdGVyYWwoIlgtU291cmNlTWFwIikpOwogCiAgICAgaWYgKCFjYWNoZWRSZXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDQxODMzMzAuLjQ3NjFlNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTg4MCw3ICs4ODAsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
U2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIoYwogCiBzdGF0aWMgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2Vs
ZWN0b3I+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1bGVTb3VyY2VEYXRhKiBzb3Vy
Y2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBz
ZWxlY3Rvckxpc3QsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24sIGNvbW1lbnQsICgiL1xc
KlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJs
ZWQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVz
c2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6Ollh
cnI6Ok11bHRpbGluZUVuYWJsZWQpOwogCiAgICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3Jl
YXRlKCk7CiAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZp
cnN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCBmMWFkZjFkLi4yMDBlYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxpbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFja0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKQEAg
LTczLDggKzc0LDggQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVp
bmdEZXN0cm95ZWQpCiAKIFN0cmluZyBQYWdlRGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9y
U2NyaXB0KGNvbnN0IFNjcmlwdCYgc2NyaXB0KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXIsIChBU0NJSUxpdGVyYWwoIlNv
dXJjZU1hcCIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
c291cmNlTWFwSFRUUEhlYWRlckRlcHJlY2F0ZWQsIChBU0NJSUxpdGVyYWwoIlgtU291cmNlTWFw
IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVh
ZGVyKEFTQ0lJTGl0ZXJhbCgiU291cmNlTWFwIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkKEFTQ0lJTGl0ZXJhbCgiWC1T
b3VyY2VNYXAiKSk7CiAKICAgICBpZiAoIXNjcmlwdC51cmwuaXNFbXB0eSgpKSB7CiAgICAgICAg
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1fcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZSgm
bV9wYWdlLm1haW5GcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3JpcHQudXJsKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCBlZDE3ZmE5Li4yOGVmMDdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2
b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
CiAgICAgICAgIG1faGFzUGVuZGluZ0Vycm9yRXZlbnQgPSB0cnVlOwogICAgICAgICBlcnJvckV2
ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24oKnRoaXMpOwogCi0gICAgICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRl
cmFsKCJDcm9zcy1vcmlnaW4gaW1hZ2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291
cmNlIFNoYXJpbmcgcG9saWN5LiIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIGltYWdlIGxv
YWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAg
ICAgICAgIGVsZW1lbnQoKS5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7CiAKICAg
ICAgICAgQVNTRVJUKCFtX2hhc1BlbmRpbmdMb2FkRXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCA0MGU5YWQ1Li42ZGExMDgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZv
aWQgVGV4dFRyYWNrTG9hZGVyOjpkZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjCiAKIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5
UHJldmVudGVkTG9hZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiB0ZXh0IHRy
YWNrIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4i
KSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFT
Q0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHRleHQgdHJhY2sgbG9hZCBkZW5pZWQgYnkgQ3Jvc3Mt
T3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKTsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICBk
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICBtX3N0YXRlID0gRmFpbGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmNwcAppbmRleCA1YWQ1N2VjLi5hMDVkYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODcsNyArODgsNyBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIENhY2hlZFJlc291cmNlUmVxdWVzdDo6aW5pdGlhdG9yTmFtZSgpIGNvbnN0CiAg
ICAgaWYgKCFtX2luaXRpYXRvck5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9pbml0
aWF0b3JOYW1lOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgZGVmYXVsdE5hbWUsICgicmVzb3VyY2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZGVm
YXVsdE5hbWUoInJlc291cmNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIGRlZmF1bHROYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBmZWYzOGQ3Li4yYjY0M2I1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJTdWRkZW5UZXJtaW5hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBv
b2wuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogLy8gRm9yIG1ldGhv
ZHMgdGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9ydCBBUEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgLSBz
aG91bGQgbm90IGJlIGNhbGxlZCBpbnRlcm5hbGx5CkBAIC04NzksOCArODgwLDggQEAgU3RyaW5n
IEljb25EYXRhYmFzZTo6ZGF0YWJhc2VQYXRoKCkgY29uc3QKIAogU3RyaW5nIEljb25EYXRhYmFz
ZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lLCAoQVNDSUlMaXRlcmFs
KCJXZWJwYWdlSWNvbnMuZGIiKSkpOwotICAgIHJldHVybiBkZWZhdWx0RGF0YWJhc2VGaWxlbmFt
ZS5pc29sYXRlZENvcHkoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkZWZh
dWx0RGF0YWJhc2VGaWxlbmFtZShBU0NJSUxpdGVyYWwoIldlYnBhZ2VJY29ucy5kYiIpKTsKKyAg
ICByZXR1cm4gZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUuZ2V0KCkuaXNvbGF0ZWRDb3B5KCk7CiB9
CiAKIC8vIFVubGlrZSBnZXRPckNyZWF0ZVBhZ2VVUkxSZWNvcmQoKSwgZ2V0T3JDcmVhdGVJY29u
UmVjb3JkKCkgZG9lcyBub3QgbWFyayB0aGUgaWNvbiBhcyAiaW50ZXJlc3RlZCBpbiBpbXBvcnQi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAppbmRl
eCBhOTc0Y2Q4Li4xNjNlYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJVc2VyU3R5bGVT
aGVldFR5cGVzLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjg0LDcgKzI4NSw3IEBAIHZvaWQg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoY29u
c3QgU3RyaW5nJiBvdmVycmlkCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVwZGF0ZUNh
cHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpCiB7CiAgICAgLy8gSWRlbnRpZnkgb3VyIG92ZXJyaWRl
IHN0eWxlIHNoZWV0IHdpdGggYSB1bmlxdWUgVVJMIC0gYSBuZXcgc2NoZW1lIGFuZCBhIFVVSUQu
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTCwgY2FwdGlvbnNTdHlsZVNo
ZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYx
Mi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVSTD4gY2FwdGlvbnNTdHlsZVNoZWV0VVJMKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2Fw
dGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIik7CiAK
ICAgICBhdXRvJiBwYWdlcyA9IG1fcGFnZUdyb3VwLnBhZ2VzKCk7CiAgICAgZm9yIChhdXRvJiBw
YWdlIDogcGFnZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggNmExZTliNy4uNzJjYWIxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjaW5jbHVk
ZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgpAQCAtMjQ2LDcgKzI0Nyw3IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGRlZmF1
bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNwZWNpZmllZCBpbiBtZWRpYUNv
bnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXBhc3Qtbm9kZXMKICAgICAv
LyBhbmQgd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZnV0dXJlLW5vZGVzLgotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKENv
bG9yKDAsIDAsIDAsIDAuOCAqIDI1NSkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q29s
b3I+IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMCwgMC44ICogMjU1KTsKIAogICAgIE1B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKIApAQCAtMzQ5LDEwICszNTAsMTAg
QEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjb2xvclByb3BlcnR5Q1NT
KENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IEMKIAogU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRFZGdlQ1NTKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVSYWlzZWQsICgiIC0u
MDVlbSAtLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlRGVwcmVz
c2VkLCAoIiAuMDVlbSAuMDVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5
bGVEcm9wU2hhZG93LCAoIiAuMDc1ZW0gLjA3NWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGVkZ2VTdHlsZVVuaWZvcm0sICgiIC4wM2VtICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlZGdlU3R5
bGVSYWlzZWQoQVNDSUlMaXRlcmFsKCIgLS4wNWVtIC0uMDVlbSAwICIpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlZGdlU3R5bGVEZXByZXNzZWQoQVNDSUlMaXRl
cmFsKCIgLjA1ZW0gLjA1ZW0gMCAiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IFN0cmluZz4gZWRnZVN0eWxlRHJvcFNoYWRvdyhBU0NJSUxpdGVyYWwoIiAuMDc1ZW0gLjA3NWVt
IDAgIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGVkZ2VTdHls
ZVVuaWZvcm0oQVNDSUlMaXRlcmFsKCIgLjAzZW0gIikpOwogCiAgICAgYm9vbCB1bnVzZWQ7CiAg
ICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcih1bnVzZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGM0NjExOGQuLjA1OWJi
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwpAQCAtOTk0LDcgKzk5NSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2VB
bmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0CiAKIGJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRV
UkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFT
Q0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIEphdmFTY3JpcHQgVVJMIGJlY2F1c2UgaXQg
dmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6
ICIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2Uo
QVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBVUkwgYmVjYXVzZSBp
dCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZTogIikpOwogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja0lubGluZUFu
ZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBj
b25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIHRydWUpCiAgICAgICAgIDog
KG1fcmVwb3J0T25seSB8fCBjaGVja0lubGluZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRT
cmMuZ2V0KCkpKSk7CkBAIC0xMDAyLDcgKzEwMDMsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
OgogCiBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhjb25z
dCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExp
bmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1
cykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBj
b25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIGlubGluZSBl
dmVudCBoYW5kbGVyIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUg
aW5saW5lIGV2ZW50IGhhbmRsZXIgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENv
bnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpOwogICAgIHJldHVybiByZXBvcnRp
bmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRS
ZXBvcnQgPwogICAgICAgICBjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVE
aXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwg
Y29udGV4dExpbmUsIHRydWUpCiAgICAgICAgIDogKG1fcmVwb3J0T25seSB8fCBjaGVja0lubGlu
ZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpKSk7CkBAIC0xMDEwLDcgKzEw
MTEsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhj
b25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0CiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9y
ZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVz
ZWQgdG8gZXhlY3V0ZSBpbmxpbmUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxv
d2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1
c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xs
b3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7CiAgICAgcmV0dXJu
IHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
czo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKG9w
ZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVNZXNzYWdlLCBjb250
ZXh0VVJMLCBjb250ZXh0TGluZSwgdHJ1ZSkgOgogICAgICAgICAobV9yZXBvcnRPbmx5IHx8IGNo
ZWNrSW5saW5lKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSkpKTsKQEAgLTEw
MTgsNyArMTAxOSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHQo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yCiAKIGJvb2wgQ1NQRGlyZWN0
aXZlTGlzdDo6YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0
IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJh
bCgiUmVmdXNlZCB0byBhcHBseSBpbmxpbmUgc3R5bGUgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUg
Zm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwo
IlJlZnVzZWQgdG8gYXBwbHkgaW5saW5lIHN0eWxlIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZv
bGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKICAgICByZXR1
cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzOjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24o
b3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29u
dGV4dFVSTCwgY29udGV4dExpbmUsIGZhbHNlKSA6CiAgICAgICAgIChtX3JlcG9ydE9ubHkgfHwg
Y2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpKSk7CkBAIC0x
MDI2LDcgKzEwMjcsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZAogCiBib29sIENTUERpcmVj
dGl2ZUxpc3Q6OmFsbG93RXZhbChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFT
Q0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBldmFsdWF0ZSBzY3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRl
cyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxp
dGVyYWwoIlJlZnVzZWQgdG8gZXZhbHVhdGUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhl
IGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKICAgICBy
ZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzOjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tFdmFsQW5kUmVwb3J0VmlvbGF0aW9u
KG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVNZXNzYWdlLCBT
dHJpbmcoKSwgV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBzdGF0ZSkgOgogICAg
ICAgICAobV9yZXBvcnRPbmx5IHx8IGNoZWNrRXZhbChvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3Jp
cHRTcmMuZ2V0KCkpKSk7CkBAIC0xNjc2LDEyICsxNjc3LDEyIEBAIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBj
b25zdCBTCiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRVbnN1cHBvcnRlZERp
cmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgYWxsb3csIChBU0NJSUxpdGVyYWwoImFsbG93IikpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBvcHRpb25zLCAoQVND
SUlMaXRlcmFsKCJvcHRpb25zIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBwb2xpY3lVUkksIChBU0NJSUxpdGVyYWwoInBvbGljeS11cmkiKSkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFsbG93TWVzc2FnZSwgKEFT
Q0lJTGl0ZXJhbCgiVGhlICdhbGxvdycgZGlyZWN0aXZlIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGgg
J2RlZmF1bHQtc3JjJy4gUGxlYXNlIHVzZSB0aGF0IGRpcmVjdGl2ZSBpbnN0ZWFkLCBhcyAnYWxs
b3cnIGhhcyBubyBlZmZlY3QuIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBvcHRpb25zTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiVGhlICdvcHRpb25zJyBk
aXJlY3RpdmUgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCAndW5zYWZlLWlubGluZScgYW5kICd1bnNh
ZmUtZXZhbCcgc291cmNlIGV4cHJlc3Npb25zIGZvciB0aGUgJ3NjcmlwdC1zcmMnIGFuZCAnc3R5
bGUtc3JjJyBkaXJlY3RpdmVzLiBQbGVhc2UgdXNlIHRob3NlIGRpcmVjdGl2ZXMgaW5zdGVhZCwg
YXMgJ29wdGlvbnMnIGhhcyBubyBlZmZlY3QuIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBwb2xpY3lVUklNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJUaGUg
J3BvbGljeS11cmknIGRpcmVjdGl2ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHNwZWNpZmlj
YXRpb24uIFBsZWFzZSBzcGVjaWZ5IGEgY29tcGxldGUgcG9saWN5IHZpYSB0aGUgQ29udGVudC1T
ZWN1cml0eS1Qb2xpY3kgaGVhZGVyLiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gYWxsb3coQVNDSUlMaXRlcmFsKCJhbGxvdyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBvcHRpb25zKEFTQ0lJTGl0ZXJhbCgib3B0aW9ucyIpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwb2xpY3lVUkkoQVNDSUlMaXRlcmFsKCJwb2xpY3kt
dXJpIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFsbG93TWVzc2FnZShB
U0NJSUxpdGVyYWwoIlRoZSAnYWxsb3cnIGRpcmVjdGl2ZSBoYXMgYmVlbiByZXBsYWNlZCB3aXRo
ICdkZWZhdWx0LXNyYycuIFBsZWFzZSB1c2UgdGhhdCBkaXJlY3RpdmUgaW5zdGVhZCwgYXMgJ2Fs
bG93JyBoYXMgbm8gZWZmZWN0LiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiBvcHRpb25zTWVzc2FnZShBU0NJSUxpdGVyYWwoIlRoZSAnb3B0aW9ucycgZGlyZWN0aXZlIGhh
cyBiZWVuIHJlcGxhY2VkIHdpdGggJ3Vuc2FmZS1pbmxpbmUnIGFuZCAndW5zYWZlLWV2YWwnIHNv
dXJjZSBleHByZXNzaW9ucyBmb3IgdGhlICdzY3JpcHQtc3JjJyBhbmQgJ3N0eWxlLXNyYycgZGly
ZWN0aXZlcy4gUGxlYXNlIHVzZSB0aG9zZSBkaXJlY3RpdmVzIGluc3RlYWQsIGFzICdvcHRpb25z
JyBoYXMgbm8gZWZmZWN0LiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBw
b2xpY3lVUklNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiVGhlICdwb2xpY3ktdXJpJyBkaXJlY3RpdmUg
aGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uLiBQbGVhc2Ugc3BlY2lmeSBh
IGNvbXBsZXRlIHBvbGljeSB2aWEgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGhlYWRlci4i
KSk7CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgYWxsb3cpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDk5YTlmNWEuLjg2MmI5
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTExMCw2ICsxMTAsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xODUsMTMgKzE4NiwxMyBAQCB0eXBl
ZGVmIEhhc2hDb3VudGVkU2V0PERPTVdpbmRvdyo+IERPTVdpbmRvd1NldDsKIAogc3RhdGljIERP
TVdpbmRvd1NldCYgd2luZG93c1dpdGhVbmxvYWRFdmVudExpc3RlbmVycygpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKERPTVdpbmRvd1NldCwgd2luZG93c1dpdGhVbmxv
YWRFdmVudExpc3RlbmVycywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxET01XaW5k
b3dTZXQ+IHdpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnM7CiAgICAgcmV0dXJuIHdpbmRv
d3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnM7CiB9CiAKIHN0YXRpYyBET01XaW5kb3dTZXQmIHdp
bmRvd3NXaXRoQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChET01XaW5kb3dTZXQsIHdpbmRvd3NXaXRoQmVmb3JlVW5sb2Fk
RXZlbnRMaXN0ZW5lcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE9NV2luZG93
U2V0PiB3aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzOwogICAgIHJldHVybiB3
aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMWNlN2I1NC4uOTE4MmQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1ZGUgIldpbmRvd3NL
ZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00MDEsNyArNDAyLDcgQEAgRXZlbnRIYW5k
bGVyOjp+RXZlbnRIYW5kbGVyKCkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogRHJhZ1N0YXRl
JiBFdmVudEhhbmRsZXI6OmRyYWdTdGF0ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKERyYWdTdGF0ZSwgc3RhdGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RHJhZ1N0YXRlPiBzdGF0ZTsKICAgICByZXR1cm4gc3RhdGU7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKERSQUdfU1VQUE9SVCkKQEAgLTMwNzYsMTAgKzMwNzcsMTAgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50
KQogCiBzdGF0aWMgRm9jdXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb25Gb3JLZXkoY29uc3QgQXRv
bWljU3RyaW5nJiBrZXlJZGVudGlmaWVyKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIERvd24sICgiRG93biIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBVcCwgKCJVcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBMZWZ0
LCAoIkxlZnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgUmlnaHQsICgiUmlnaHQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gRG93bigiRG93biIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IFVwKCJVcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IExlZnQoIkxlZnQiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBSaWdodCgiUmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKIAogICAgIEZvY3VzRGlyZWN0aW9uIHJldFZhbCA9IEZvY3VzRGlyZWN0aW9uTm9uZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBiNzYzMzY4Li43NDBlOWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNz
aW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICAvLyBS
RVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBv
biB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAg
V2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uLCB3b3JkUmVnRXhwLCAoIlxcdyIsIFRleHRDYXNl
U2Vuc2l0aXZlKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIsIFRleHRDYXNlU2Vuc2l0aXZlKTsKICAgICBT
dHJpbmdCdWlsZGVyIHBhdHRlcm47CiAgICAgcGF0dGVybi5hcHBlbmQoJygnKTsKICAgICB1bnNp
Z25lZCBpbnQgbnVtTGFiZWxzID0gbGFiZWxzLnNpemUoKTsKQEAgLTMxNyw4ICszMTcsOCBAQCBz
dGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAgICAgIGJvb2wgc3RhcnRzV2l0aFdvcmRDaGFyID0g
ZmFsc2U7CiAgICAgICAgIGJvb2wgZW5kc1dpdGhXb3JkQ2hhciA9IGZhbHNlOwogICAgICAgICBp
ZiAobGFiZWwubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IHdv
cmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAwOwotICAgICAgICAgICAg
ZW5kc1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3RyaW5nKGxhYmVs
Lmxlbmd0aCgpIC0gMSwgMSkpID49IDA7CisgICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXIg
PSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKKyAg
ICAgICAgICAgIGVuZHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVs
LnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAppbmRleCAwZjVl
MmJlLi4wYmUyZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAKICNpbmNsdWRlICJOZXR3
b3JrU3RhdGVOb3RpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgT1MoTElOVVgpCkBAIC05Myw3ICs5
NCw3IEBAIFN0cmluZyBOYXZpZ2F0b3JCYXNlOjpwbGF0Zm9ybSgpIGNvbnN0CiAgICAgaWYgKCFT
dHJpbmcoV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0pLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNOwogICAgIHN0cnVjdCB1dHNuYW1lIG9zbmFt
ZTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBwbGF0Zm9ybU5h
bWUsICh1bmFtZSgmb3NuYW1lKSA+PSAwID8gU3RyaW5nKG9zbmFtZS5zeXNuYW1lKSArIFN0cmlu
ZygiICIpICsgU3RyaW5nKG9zbmFtZS5tYWNoaW5lKSA6IGVtcHR5U3RyaW5nKCkpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwbGF0Zm9ybU5hbWUodW5hbWUoJm9zbmFtZSkg
Pj0gMCA/IFN0cmluZyhvc25hbWUuc3lzbmFtZSkgKyBTdHJpbmcoIiAiKSArIFN0cmluZyhvc25h
bWUubWFjaGluZSkgOiBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gcGxhdGZvcm1OYW1lOwog
I2Vsc2UKICAgICByZXR1cm4gV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcAppbmRleCBmNmNjYzE0Li43NDUwYzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAKQEAgLTMx
LDE0ICszMSwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBhZ2VWaXNpYmls
aXR5U3RhdGUuaCIKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFN0cmluZyBwYWdlVmlzaWJpbGl0eVN0YXRlU3RyaW5nKFBhZ2VWaXNp
YmlsaXR5U3RhdGUgc3RhdGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgdmlzaWJsZSwgKEFTQ0lJTGl0ZXJhbCgidmlzaWJsZSIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgaGlkZGVuLCAoQVND
SUlMaXRlcmFsKCJoaWRkZW4iKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHByZXJlbmRlciwgKEFTQ0lJTGl0ZXJhbCgicHJlcmVuZGVyIikpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2aXNpYmxlKEFTQ0lJTGl0
ZXJhbCgidmlzaWJsZSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5n
PiBoaWRkZW4oQVNDSUlMaXRlcmFsKCJoaWRkZW4iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IFN0cmluZz4gcHJlcmVuZGVyKEFTQ0lJTGl0ZXJhbCgicHJlcmVuZGVyIikpOwog
CiAgICAgc3dpdGNoIChzdGF0ZSkgewogICAgIGNhc2UgUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2li
bGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGUzOTgxNGIuLjNi
ZDMyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlx
dWVfcHRyPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsKIAogc3RhdGlj
IE9yaWdpbkFjY2Vzc01hcCYgb3JpZ2luQWNjZXNzTWFwKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoT3JpZ2luQWNjZXNzTWFwLCBvcmlnaW5BY2Nlc3NNYXAsICgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3JpZ2luQWNjZXNzTWFwPiBvcmlnaW5BY2Nlc3NN
YXA7CiAgICAgcmV0dXJuIG9yaWdpbkFjY2Vzc01hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDJlYTE4ZWMuLjY1NjljZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAogI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIsNyArNjMsNyBA
QCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPgogCiBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6
cGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHNjaGVtZVNlcGFyYXRvciwgKEFTQ0lJTGl0ZXJhbCgi
Oi8vIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBzY2hlbWVT
ZXBhcmF0b3IoQVNDSUlMaXRlcmFsKCI6Ly8iKSk7CiAKICAgICBzaXplX3Qgc2NoZW1lRW5kUG9z
ID0gcGF0dGVybi5maW5kKHNjaGVtZVNlcGFyYXRvcik7CiAgICAgaWYgKHNjaGVtZUVuZFBvcyA9
PSBub3RGb3VuZCkKQEAgLTcwLDcgKzcxLDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46
OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKIAogICAgIG1fc2NoZW1lID0gcGF0dGVybi5s
ZWZ0KHNjaGVtZUVuZFBvcyk7CiAKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRQb3MgPSBzY2hlbWVF
bmRQb3MgKyBzY2hlbWVTZXBhcmF0b3IubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgaG9zdFN0YXJ0
UG9zID0gc2NoZW1lRW5kUG9zICsgc2NoZW1lU2VwYXJhdG9yLmdldCgpLmxlbmd0aCgpOwogICAg
IGlmIChob3N0U3RhcnRQb3MgPj0gcGF0dGVybi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggNzg3ZjBhMC4uNDc0NTFjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApA
QCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
ckNvbXBhcmlzb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNjQ1LDE5ICs2
NDYsMTggQEAgc3RhdGljIGlubGluZSBzaXplX3Qgc2hhZG93TGlzdExlbmd0aChjb25zdCBTaGFk
b3dEYXRhKiBzaGFkb3cpCiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgU2hhZG93RGF0YSogc2hhZG93
Rm9yQmxlbmRpbmcoY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRh
KiBvdGhlclNoYWRvdykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU2hh
ZG93RGF0YSwgZGVmYXVsdFNoYWRvd0RhdGEsIChJbnRQb2ludCgpLCAwLCAwLCBOb3JtYWwsIGZh
bHNlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdEluc2V0U2hhZG93RGF0YSwgKEludFBvaW50KCksIDAs
IDAsIEluc2V0LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7Ci0KLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdFdlYktpdEJveFNoYWRvd0Rh
dGEsIChJbnRQb2ludCgpLCAwLCAwLCBOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCkp
OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0
SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIHRydWUs
IENvbG9yOjp0cmFuc3BhcmVudCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dE
YXRhPiBkZWZhdWx0U2hhZG93RGF0YShJbnRQb2ludCgpLCAwLCAwLCBOb3JtYWwsIGZhbHNlLCBD
b2xvcjo6dHJhbnNwYXJlbnQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRh
PiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKEludFBvaW50KCksIDAsIDAsIEluc2V0LCBmYWxzZSwg
Q29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0
YT4gZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFsLCB0
cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFk
b3dEYXRhPiBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKEludFBvaW50KCksIDAsIDAs
IEluc2V0LCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnQpOwogCiAgICAgaWYgKHNyY1NoYWRvdykK
ICAgICAgICAgcmV0dXJuIHNyY1NoYWRvdzsKIAogICAgIGlmIChvdGhlclNoYWRvdy0+c3R5bGUo
KSA9PSBJbnNldCkKLSAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRv
dygpID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEgOiAmZGVmYXVsdEluc2V0U2hh
ZG93RGF0YTsKKyAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygp
ID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAmZGVmYXVsdEluc2V0
U2hhZG93RGF0YS5nZXQoKTsKIAotICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hT
aGFkb3coKSA/ICZkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YSA6ICZkZWZhdWx0U2hhZG93RGF0
YTsKKyAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVs
dFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAmZGVmYXVsdFNoYWRvd0RhdGEuZ2V0KCk7CiB9
CiAKIGNsYXNzIFByb3BlcnR5V3JhcHBlclNoYWRvdyA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0
eVdyYXBwZXJCYXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
b21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IGI4MjIyNTYuLjY1NTFkNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTIyMSw3ICsyMjIsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBk
YXRlS2V5ZnJhbWVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBSZW5kZQogICAg
ICAgICAvLyBUb3NzIHRoZSBhbmltYXRpb24gb3JkZXIgbWFwLgogICAgICAgICBtX2tleWZyYW1l
QW5pbWF0aW9uT3JkZXJNYXAuY2xlYXIoKTsKIAotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBub25lLCAoIm5vbmUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5vdyBtYXJrIGFueSBzdGlsbCBh
Y3RpdmUgYW5pbWF0aW9ucyBhcyBhY3RpdmUgYW5kIGFkZCBhbnkgbmV3IGFuaW1hdGlvbnMuCiAg
ICAgICAgIGlmICh0YXJnZXRTdHlsZS0+YW5pbWF0aW9ucygpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Vyc29yLmNwcAppbmRleCA5MzU5M2FkLi42MGE2MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1
cnNvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4OSwyNTkgKzE5
MCwyNTkgQEAgUGxhdGZvcm1DdXJzb3IgQ3Vyc29yOjpwbGF0Zm9ybUN1cnNvcigpIGNvbnN0CiAK
IGNvbnN0IEN1cnNvciYgcG9pbnRlckN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6UG9pbnRlcikpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpQb2ludGVyKTsKICAgICByZXR1cm4gYzsK
IH0KIAogY29uc3QgQ3Vyc29yJiBjcm9zc0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Q3Jvc3MpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Q3Jvc3MpOwogICAgIHJldHVybiBjOwog
fQogCiBjb25zdCBDdXJzb3ImIGhhbmRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkhhbmQpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6SGFuZCk7CiAgICAgcmV0dXJuIGM7CiB9CiAK
IGNvbnN0IEN1cnNvciYgbW92ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6TW92ZSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpNb3ZlKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiB2ZXJ0aWNhbFRleHRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlZlcnRpY2FsVGV4dCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpWZXJ0aWNhbFRleHQpOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNlbGxDdXJzb3IoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkNlbGwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Q2VsbCk7CiAgICAgcmV0
dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY29udGV4dE1lbnVDdXJzb3IoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkNvbnRleHRN
ZW51KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkNvbnRl
eHRNZW51KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBhbGlhc0N1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6QWxpYXMpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
QWxpYXMpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHpvb21JbkN1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6Wm9vbUluKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6
Olpvb21Jbik7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgem9vbU91dEN1cnNv
cigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1
cnNvcjo6Wm9vbU91dCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vy
c29yOjpab29tT3V0KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBjb3B5Q3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpDb3B5KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OkNvcHkpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vbmVDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6Ok5vbmUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
Tm9uZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgcHJvZ3Jlc3NDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6OlByb2dyZXNzKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OlByb2dyZXNzKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub0Ryb3BD
dXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMs
IChDdXJzb3I6Ok5vRHJvcCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMo
Q3Vyc29yOjpOb0Ryb3ApOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vdEFs
bG93ZWRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJz
b3IsIGMsIChDdXJzb3I6Ok5vdEFsbG93ZWQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Q3Vyc29yPiBjKEN1cnNvcjo6Tm90QWxsb3dlZCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0
IEN1cnNvciYgaUJlYW1DdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OklCZWFtKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEN1cnNvcj4gYyhDdXJzb3I6OklCZWFtKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3Qg
Q3Vyc29yJiB3YWl0Q3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpXYWl0KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEN1cnNvcj4gYyhDdXJzb3I6OldhaXQpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJz
b3ImIGhlbHBDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChD
dXJzb3IsIGMsIChDdXJzb3I6OkhlbHApKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vy
c29yPiBjKEN1cnNvcjo6SGVscCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYg
ZWFzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEN1cnNvciwgYywgKEN1cnNvcjo6RWFzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpFYXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAog
Y29uc3QgQ3Vyc29yJiBub3J0aFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhSZXNpemUpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhSZXNpemUpOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vcnRoRWFzdFJlc2l6ZUN1cnNvcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6
Tm9ydGhFYXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhD
dXJzb3I6Ok5vcnRoRWFzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNv
ciYgbm9ydGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aFdlc3RSZXNpemUpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhXZXN0UmVzaXplKTsKICAg
ICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBzb3V0aFJlc2l6ZUN1cnNvcigpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6U291
dGhSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
U291dGhSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNvdXRoRWFz
dFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6U291dGhFYXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRoRWFzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7
CiB9CiAKIGNvbnN0IEN1cnNvciYgc291dGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpTb3V0aFdlc3RS
ZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6U291
dGhXZXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiB3ZXN0UmVz
aXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29y
LCBjLCAoQ3Vyc29yOjpXZXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1
cnNvcj4gYyhDdXJzb3I6Oldlc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIG5vcnRoU291dGhSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoU291dGhSZXNpemUpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhTb3V0aFJlc2l6
ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgZWFzdFdlc3RSZXNpemVDdXJz
b3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChD
dXJzb3I6OkVhc3RXZXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNv
cj4gYyhDdXJzb3I6OkVhc3RXZXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3Qg
Q3Vyc29yJiBub3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoRWFzdFNvdXRo
V2VzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29y
OjpOb3J0aEVhc3RTb3V0aFdlc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhXZXN0U291dGhF
YXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6
Ok5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgY29sdW1uUmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpDb2x1bW5SZXNpemUpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Q29sdW1uUmVzaXplKTsKICAgICByZXR1
cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiByb3dSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlJvd1Jlc2l6ZSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpSb3dSZXNpemUp
OwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG1pZGRsZVBhbm5pbmdDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6Ok1pZGRsZVBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBj
KEN1cnNvcjo6TWlkZGxlUGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBD
dXJzb3ImIGVhc3RQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpFYXN0UGFubmluZykpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpFYXN0UGFubmluZyk7CiAgICAgcmV0dXJu
IGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIG5vcnRoUGFubmluZ0N1cnNvcigpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhQ
YW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5v
cnRoUGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIG5vcnRo
RWFzdFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoRWFzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhFYXN0UGFubmluZyk7CiAgICAgcmV0
dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIG5vcnRoV2VzdFBhbm5pbmdDdXJzb3IoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6
Ok5vcnRoV2VzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBj
KEN1cnNvcjo6Tm9ydGhXZXN0UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25z
dCBDdXJzb3ImIHNvdXRoUGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6U291dGhQYW5uaW5nKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRoUGFubmluZyk7CiAgICAg
cmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIHNvdXRoRWFzdFBhbm5pbmdDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6OlNvdXRoRWFzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29y
PiBjKEN1cnNvcjo6U291dGhFYXN0UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBj
b25zdCBDdXJzb3ImIHNvdXRoV2VzdFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlNvdXRoV2VzdFBhbm5pbmcp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6U291dGhXZXN0
UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIHdlc3RQYW5u
aW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29y
LCBjLCAoQ3Vyc29yOjpXZXN0UGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxD
dXJzb3I+IGMoQ3Vyc29yOjpXZXN0UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0
IEN1cnNvciYgZ3JhYkN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEN1cnNvciwgYywgKEN1cnNvcjo6R3JhYikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDdXJzb3I+IGMoQ3Vyc29yOjpHcmFiKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vy
c29yJiBncmFiYmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEN1cnNvciwgYywgKEN1cnNvcjo6R3JhYmJpbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6R3JhYmJpbmcpOwogICAgIHJldHVybiBjOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKaW5kZXggNTg5MTdmZi4uNjU1NzhkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBTdHJpbmcg
ZGVmYXVsdExhbmd1YWdlKCkKIAogc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5n
dWFnZXNPdmVycmlkZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFZl
Y3RvcjxTdHJpbmc+LCBvdmVycmlkZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8U3RyaW5nPj4gb3ZlcnJpZGU7CiAgICAgcmV0dXJuIG92ZXJyaWRlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IDkzZDJlOTAu
Ljc5NTFmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0
cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3Mu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIAogI2lmIFVTRShDRikKQEAgLTc5LDExICs4MCwxMSBAQCBzdGF0aWMg
U3RyaW5nIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWwpCiAKICAgICAvLyBUcnVuY2F0ZSB0aGUgc3RyaW5nIGlmIGl0J3MgdG9vIGxvbmcuIFRo
aXMgaXMgaW4gY29uc2lzdGVuY3kgd2l0aCBBcHBLaXQuCiAgICAgdW5zaWduZWQgbWF4TnVtYmVy
T2ZHcmFwaGVtZUNsdXN0ZXJzSW5Mb29rdXBNZW51SXRlbSA9IDI0OwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGVsbGlwc2lzLCAoJmhvcml6b250YWxFbGxpcHNp
cywgMSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGVsbGlwc2lzKCZob3Jp
em9udGFsRWxsaXBzaXMsIDEpOwogCiAgICAgU3RyaW5nIHRyaW1tZWQgPSBvcmlnaW5hbC5zdHJp
cFdoaXRlU3BhY2UoKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYXJhY3RlcnMgPSBudW1DaGFy
YWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKHRyaW1tZWQsIG1heE51bWJlck9mR3JhcGhlbWVDbHVz
dGVyc0luTG9va3VwTWVudUl0ZW0pOwotICAgIHJldHVybiBudW1iZXJPZkNoYXJhY3RlcnMgPT0g
dHJpbW1lZC5sZW5ndGgoKSA/IHRyaW1tZWQgOiB0cmltbWVkLmxlZnQobnVtYmVyT2ZDaGFyYWN0
ZXJzKSArIGVsbGlwc2lzOworICAgIHJldHVybiBudW1iZXJPZkNoYXJhY3RlcnMgPT0gdHJpbW1l
ZC5sZW5ndGgoKSA/IHRyaW1tZWQgOiB0cmltbWVkLmxlZnQobnVtYmVyT2ZDaGFyYWN0ZXJzKSAr
IGVsbGlwc2lzLmdldCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggMTI3Y2M1YS4uNjIwZjFjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCkBAIC0zNTIsMTYgKzM1MywxNiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3Vw
cG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMoKQogCiBzdGF0aWMgTWVkaWFNSU1FVHlwZU1hcCYgbWVk
aWFNSU1FVHlwZU1hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE1l
ZGlhTUlNRVR5cGVNYXAsIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAsICgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFNSU1FVHlwZU1hcD4gbWVkaWFNSU1FVHlwZUZvckV4
dGVuc2lvbk1hcDsKIAotICAgIGlmICghbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5pc0Vt
cHR5KCkpCisgICAgaWYgKCFtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldCgpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXA7CiAKICAg
ICBjb25zdCB1bnNpZ25lZCBudW1QYWlycyA9IHNpemVvZihjb21tb25NZWRpYVR5cGVzKSAvIHNp
emVvZihjb21tb25NZWRpYVR5cGVzWzBdKTsKICAgICBmb3IgKHVuc2lnbmVkIG5keCA9IDA7IG5k
eCA8IG51bVBhaXJzOyArK25keCkgewogCi0gICAgICAgIGlmIChtZWRpYU1JTUVUeXBlRm9yRXh0
ZW5zaW9uTWFwLmNvbnRhaW5zKGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24pKQotICAg
ICAgICAgICAgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5nZXQoY29tbW9uTWVkaWFUeXBl
c1tuZHhdLmV4dGVuc2lvbiktPmFwcGVuZChjb21tb25NZWRpYVR5cGVzW25keF0udHlwZSk7Cisg
ICAgICAgIGlmIChtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldCgpLmNvbnRhaW5zKGNv
bW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24pKQorICAgICAgICAgICAgbWVkaWFNSU1FVHlw
ZUZvckV4dGVuc2lvbk1hcC5nZXQoKS5nZXQoY29tbW9uTWVkaWFUeXBlc1tuZHhdLmV4dGVuc2lv
biktPmFwcGVuZChjb21tb25NZWRpYVR5cGVzW25keF0udHlwZSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4qIHN5bm9ueW1zID0gbmV3IFZlY3RvcjxTdHJpbmc+
OwogCkBAIC0zNzEsNyArMzcyLDcgQEAgc3RhdGljIE1lZGlhTUlNRVR5cGVNYXAmIG1lZGlhTUlN
RVR5cGVNYXAoKQogICAgICAgICAgICAgaWYgKCFzeXN0ZW1UeXBlLmlzRW1wdHkoKSAmJiBjb21t
b25NZWRpYVR5cGVzW25keF0udHlwZSAhPSBzeXN0ZW1UeXBlKQogICAgICAgICAgICAgICAgIHN5
bm9ueW1zLT5hcHBlbmQoc3lzdGVtVHlwZSk7CiAgICAgICAgICAgICBzeW5vbnltcy0+YXBwZW5k
KGNvbW1vbk1lZGlhVHlwZXNbbmR4XS50eXBlKTsKLSAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVG
b3JFeHRlbnNpb25NYXAuYWRkKGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24sIHN5bm9u
eW1zKTsKKyAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuZ2V0KCkuYWRk
KGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24sIHN5bm9ueW1zKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtNjQyLDcgKzY0Myw3IEBAIEhhc2hTZXQ8U3RyaW5nPiYgTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0VW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKIAogY29uc3QgU3RyaW5nJiBkZWZh
dWx0TUlNRVR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIGRlZmF1bHRNSU1FVHlwZSwgKEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBk
ZWZhdWx0TUlNRVR5cGUoQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSk7
CiAgICAgcmV0dXJuIGRlZmF1bHRNSU1FVHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4IGE4YjBhMTEuLmI2NDY1MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKQEAgLTM2LDEyICszNiwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBsb2NhbFVSTFNjaGVt
ZXMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFw
LCBsb2NhbFNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1l
c01hcD4gbG9jYWxTY2hlbWVzOwogCi0gICAgaWYgKGxvY2FsU2NoZW1lcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgbG9jYWxTY2hlbWVzLmFkZCgiZmlsZSIpOworICAgIGlmIChsb2NhbFNjaGVtZXMu
Z2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGxvY2FsU2NoZW1lcy5nZXQoKS5hZGQoImZpbGUi
KTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbG9jYWxTY2hlbWVzLmFkZCgiYXBwbGV3
ZWJkYXRhIik7CisgICAgICAgIGxvY2FsU2NoZW1lcy5nZXQoKS5hZGQoImFwcGxld2ViZGF0YSIp
OwogI2VuZGlmCiAgICAgfQogCkBAIC01MCwyMSArNTAsMjEgQEAgc3RhdGljIFVSTFNjaGVtZXNN
YXAmIGxvY2FsVVJMU2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBkaXNwbGF5SXNv
bGF0ZWRVUkxTY2hlbWVzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
VVJMU2NoZW1lc01hcCwgZGlzcGxheUlzb2xhdGVkU2NoZW1lcywgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBkaXNwbGF5SXNvbGF0ZWRTY2hlbWVzOwogICAg
IHJldHVybiBkaXNwbGF5SXNvbGF0ZWRTY2hlbWVzOwogfQogCiBzdGF0aWMgVVJMU2NoZW1lc01h
cCYgc2VjdXJlU2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFVSTFNjaGVtZXNNYXAsIHNlY3VyZVNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2VjdXJlU2NoZW1lczsKIAotICAgIGlmIChzZWN1cmVTY2hl
bWVzLmlzRW1wdHkoKSkgewotICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZCgiaHR0cHMiKTsKLSAg
ICAgICAgc2VjdXJlU2NoZW1lcy5hZGQoImFib3V0Iik7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMu
YWRkKCJkYXRhIik7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuYWRkKCJ3c3MiKTsKKyAgICBpZiAo
c2VjdXJlU2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5n
ZXQoKS5hZGQoImh0dHBzIik7CisgICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJhYm91
dCIpOworICAgICAgICBzZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgiZGF0YSIpOworICAgICAgICBz
ZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgid3NzIik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAg
ICAgIHNlY3VyZVNjaGVtZXMuYWRkKFFMUHJldmlld1Byb3RvY29sKCkpOworICAgICAgICBzZWN1
cmVTY2hlbWVzLmdldCgpLmFkZChRTFByZXZpZXdQcm90b2NvbCgpKTsKICNlbmRpZgogICAgIH0K
IApAQCAtNzMsMTQgKzczLDE0IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzZWN1cmVTY2hlbWVz
KCkKIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIHNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxT
Y2hlbWVzTWFwPiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnM7CiAKLSAgICBpZiAoc2NoZW1lc1dp
dGhVbmlxdWVPcmlnaW5zLmlzRW1wdHkoKSkgewotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9y
aWdpbnMuYWRkKCJhYm91dCIpOwotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuYWRk
KCJqYXZhc2NyaXB0Iik7CisgICAgaWYgKHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgi
YWJvdXQiKTsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgiamF2
YXNjcmlwdCIpOwogICAgICAgICAvLyBUaGlzIGlzIGEgd2lsbGZ1bCB2aW9sYXRpb24gb2YgSFRN
TDUuCiAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE4ODUKLSAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZCgiZGF0YSIpOwor
ICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuZ2V0KCkuYWRkKCJkYXRhIik7CiAgICAg
fQogCiAgICAgcmV0dXJuIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2luczsKQEAgLTg4LDI2ICs4OCwy
NiBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKIAog
c3RhdGljIFVSTFNjaGVtZXNNYXAmIGVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgZW1wdHlEb2N1bWVudFNj
aGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gZW1w
dHlEb2N1bWVudFNjaGVtZXM7CiAKLSAgICBpZiAoZW1wdHlEb2N1bWVudFNjaGVtZXMuaXNFbXB0
eSgpKQotICAgICAgICBlbXB0eURvY3VtZW50U2NoZW1lcy5hZGQoImFib3V0Iik7CisgICAgaWYg
KGVtcHR5RG9jdW1lbnRTY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkKKyAgICAgICAgZW1wdHlEb2N1
bWVudFNjaGVtZXMuZ2V0KCkuYWRkKCJhYm91dCIpOwogCiAgICAgcmV0dXJuIGVtcHR5RG9jdW1l
bnRTY2hlbWVzOwogfQogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBzY2hlbWVzRm9yYmlkZGVu
RnJvbURvbWFpblJlbGF4YXRpb24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChIYXNoU2V0PFN0cmluZz4sIHNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBzY2hlbWVzOwogICAgIHJldHVybiBzY2hlbWVzOwogfQog
CiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVz
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwg
Y2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1l
czsKIAotICAgIGlmIChjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcy5hZGQoImJsb2Ii
KTsKKyAgICBpZiAoY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLmdldCgpLmlzRW1w
dHkoKSkgeworICAgICAgICBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMuZ2V0KCku
YWRkKCJibG9iIik7CiAgICAgfQogCiAgICAgcmV0dXJuIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0U2NoZW1lczsKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2Fu
RGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkKIAogc3RhdGljIFVSTFNjaGVtZXNNYXAm
IG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgbm90QWxsb3dpbmdKYXZhc2NyaXB0VVJM
c1NjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4g
bm90QWxsb3dpbmdKYXZhc2NyaXB0VVJMc1NjaGVtZXM7CiAgICAgcmV0dXJuIG5vdEFsbG93aW5n
SmF2YXNjcmlwdFVSTHNTY2hlbWVzOwogfQogCkBAIC0xNDIsMjQgKzE0MiwyNCBAQCBjb25zdCBV
UkxTY2hlbWVzTWFwJiBTY2hlbWVSZWdpc3RyeTo6bG9jYWxTY2hlbWVzKCkKIAogc3RhdGljIFVS
TFNjaGVtZXNNYXAmIHNjaGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJy
b3dzaW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1l
c01hcCwgc2NoZW1lc0FsbG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmcs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lc0Fs
bG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiAgICAgcmV0dXJuIHNj
aGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOwogfQogCiBz
dGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZh
dGVCcm93c2luZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNj
aGVtZXNNYXAsIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmcs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lc0Fs
bG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsKICAgICByZXR1cm4gc2NoZW1l
c0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsKIH0KIAogc3RhdGljIFVS
TFNjaGVtZXNNYXAmIENPUlNFbmFibGVkU2NoZW1lcygpCiB7CiAgICAgLy8gRklYTUU6IGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTYwCi0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIENPUlNFbmFibGVkU2NoZW1lcywgKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBDT1JTRW5hYmxlZFNj
aGVtZXM7CiAKLSAgICBpZiAoQ09SU0VuYWJsZWRTY2hlbWVzLmlzRW1wdHkoKSkgewotICAgICAg
ICBDT1JTRW5hYmxlZFNjaGVtZXMuYWRkKCJodHRwIik7Ci0gICAgICAgIENPUlNFbmFibGVkU2No
ZW1lcy5hZGQoImh0dHBzIik7CisgICAgaWYgKENPUlNFbmFibGVkU2NoZW1lcy5nZXQoKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmdldCgpLmFkZCgiaHR0cCIpOwor
ICAgICAgICBDT1JTRW5hYmxlZFNjaGVtZXMuZ2V0KCkuYWRkKCJodHRwcyIpOwogICAgIH0KIAog
ICAgIHJldHVybiBDT1JTRW5hYmxlZFNjaGVtZXM7CkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGlj
IFVSTFNjaGVtZXNNYXAmIENPUlNFbmFibGVkU2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVz
TWFwJiBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgc2NoZW1lcywgKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOwogICAgIHJl
dHVybiBzY2hlbWVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZS5jcHAKaW5kZXggZDczN2UyZC4uNDM4ZjM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lLmNwcApAQCAtMjgsMTMgKzI4LDE0IEBACiAKICNpbmNsdWRlICJTY3Jv
bGxiYXJUaGVtZU1vY2suaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9sbGJhclRoZW1l
JiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKQogewogICAgIGlmIChTZXR0aW5nczo6bW9ja1Njcm9s
bGJhcnNFbmFibGVkKCkpIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFNjcm9sbGJhclRoZW1lTW9jaywgbW9ja1RoZW1lLCAoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTY3JvbGxiYXJUaGVtZU1vY2s+IG1vY2tUaGVtZTsKICAgICAgICAgcmV0dXJu
IG1vY2tUaGVtZTsKICAgICB9CiAgICAgcmV0dXJuIG5hdGl2ZVRoZW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMLmNwcAppbmRleCA0ZDFjNzdhLi44ODliNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5j
cHAKQEAgLTE5ODEsNyArMTk4MSw3IEBAIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25z
dCBTdHJpbmcmIHVybCkKIAogY29uc3QgVVJMJiBibGFua1VSTCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTCwgc3RhdGljQmxhbmtVUkwsIChQYXJzZWRVUkxTdHJp
bmcsICJhYm91dDpibGFuayIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0
aWNCbGFua1VSTChQYXJzZWRVUkxTdHJpbmcsICJhYm91dDpibGFuayIpOwogICAgIHJldHVybiBz
dGF0aWNCbGFua1VSTDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRp
b24vQW5pbWF0aW9uLmNwcAppbmRleCBkNjc3MGE0Li4xMjA2MTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcApAQCAtMjIsNiArMjIsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgogCisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQW5pbWF0
aW9uOjpBbmltYXRpb24oKQpAQCAtMTYwLDcgKzE2Miw3IEBAIGJvb2wgQW5pbWF0aW9uOjphbmlt
YXRpb25zTWF0Y2goY29uc3QgQW5pbWF0aW9uJiBvdGhlciwgYm9vbCBtYXRjaFBsYXlTdGF0ZXMp
IGNvCiAKIGNvbnN0IFN0cmluZyYgQW5pbWF0aW9uOjppbml0aWFsTmFtZSgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaW5pdGlhbFZhbHVlLCAoQVNDSUlM
aXRlcmFsKCJub25lIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBpbml0
aWFsVmFsdWUoQVNDSUlMaXRlcmFsKCJub25lIikpOwogICAgIHJldHVybiBpbml0aWFsVmFsdWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3Bw
CmluZGV4IGFlOTU1MDIuLjNjMmRhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtMjksMTIgKzI5LDEzIEBACiAjaWYgVVNFKEFVRElP
X1NFU1NJT04pCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvU2Vzc2lvbiYg
QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXVkaW9TZXNzaW9uLCBzZXNzaW9uLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF1ZGlvU2Vzc2lvbj4gc2Vzc2lvbjsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBk
MWY1MjQ2Li4wYmI0ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uaApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDYg
KzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3Qp
OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxBdWRpb1Nlc3Np
b24+OwogICAgIEF1ZGlvU2Vzc2lvbigpOwogICAgIH5BdWRpb1Nlc3Npb24oKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBhZjk5
MmZiLi5lYTMzZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RWxldmF0aW9uLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY4LDE4ICs2OSwx
OCBAQCBjb25zdCBmbG9hdCBSZXNwb25zZVNhbXBsZVJhdGUgPSA0NDEwMDsKIHN0YXRpYyBBdWRp
b0J1cyogZ2V0Q29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlc0ZvclN1YmplY3QoY29uc3QgU3Ry
aW5nJiBzdWJqZWN0TmFtZSkKIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBdWRpb0J1
cyo+IEF1ZGlvQnVzTWFwOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdWRp
b0J1c01hcCwgYXVkaW9CdXNNYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXVk
aW9CdXNNYXA+IGF1ZGlvQnVzTWFwOwogCiAgICAgQXVkaW9CdXMqIGJ1czsKLSAgICBBdWRpb0J1
c01hcDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBhdWRpb0J1c01hcC5maW5kKHN1YmplY3ROYW1lKTsK
LSAgICBpZiAoaXRlcmF0b3IgPT0gYXVkaW9CdXNNYXAuZW5kKCkpIHsKKyAgICBBdWRpb0J1c01h
cDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBhdWRpb0J1c01hcC5nZXQoKS5maW5kKHN1YmplY3ROYW1l
KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gYXVkaW9CdXNNYXAuZ2V0KCkuZW5kKCkpIHsKICAgICAg
ICAgUmVmUHRyPEF1ZGlvQnVzPiBjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzID0gQXVkaW9C
dXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKHN1YmplY3ROYW1lLnV0ZjgoKS5kYXRhKCksIFJlc3Bv
bnNlU2FtcGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9u
c2VzKTsKICAgICAgICAgaWYgKCFjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3Bv
bnNlcy5yZWxlYXNlKCkubGVha1JlZigpOwotICAgICAgICBhdWRpb0J1c01hcC5zZXQoc3ViamVj
dE5hbWUsIGJ1cyk7CisgICAgICAgIGF1ZGlvQnVzTWFwLmdldCgpLnNldChzdWJqZWN0TmFtZSwg
YnVzKTsKICAgICB9IGVsc2UKICAgICAgICAgYnVzID0gaXRlcmF0b3ItPnZhbHVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHAKaW5kZXggOWQ4ZDFlMS4uYWRkYjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApA
QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb1NlcnZpY2VzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBT
T0ZUX0xJTktfRlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKIFNPRlRfTElOSyhBdWRpb1Rvb2xib3gs
IEF1ZGlvQ29tcG9uZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQg
aW5Db21wb25lbnQsIGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChp
bkNvbXBvbmVudCwgaW5EZXNjKSkKQEAgLTYyLDcgKzYzLDcgQEAgY29uc3QgaW50IGtQcmVmZXJy
ZWRCdWZmZXJTaXplID0gMjU2OwogdHlwZWRlZiBIYXNoU2V0PEF1ZGlvRGVzdGluYXRpb25JT1Mq
PiBBdWRpb0Rlc3RpbmF0aW9uU2V0Owogc3RhdGljIEF1ZGlvRGVzdGluYXRpb25TZXQmIGF1ZGlv
RGVzdGluYXRpb25zKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXVk
aW9EZXN0aW5hdGlvblNldCwgYXVkaW9EZXN0aW5hdGlvblNldCwgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdWRpb0Rlc3RpbmF0aW9uU2V0PiBhdWRpb0Rlc3RpbmF0aW9uU2V0Owog
ICAgIHJldHVybiBhdWRpb0Rlc3RpbmF0aW9uU2V0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGUzZWE4NmEuLmI3
YmNiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUm90YXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ3LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBWZWN0b3I8Rmxv
YXRSZWN0Pj4gUmVwYWludE1hcDsKIHN0YXRpYyBSZXBhaW50TWFwJiByZXBhaW50UmVjdE1hcCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFJlcGFpbnRNYXAsIG1hcCwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXBhaW50TWFwPiBtYXA7CiAgICAgcmV0
dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCmluZGV4IDgzNWRlYTAuLjQ0ODI2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04OCw4ICs4OSw4IEBAIEZsb2F0U2l6ZSBJbWFn
ZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0aW9uU2l6ZShGbG9hdFNpemUgc2l6ZSkgY29uc3QKIAog
dm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9y
U3BhY2UsIENvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoVmVjdG9yPGludD4sIGRldmljZVJnYkxVVCwgKCkpOwotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8aW50PiwgbGluZWFyUmdiTFVULCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxpbnQ+PiBkZXZpY2VSZ2JMVVQ7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxpbnQ+PiBsaW5lYXJSZ2JMVVQ7CiAKICAg
ICBpZiAoc3JjQ29sb3JTcGFjZSA9PSBkc3RDb2xvclNwYWNlKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5k
ZXggMjFkODBhZS4uZmJmOWUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMjM1LDE5ICsyMzUsMTkgQEAgc3RhdGljIHZvaWQg
YWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3IsIE1lZGlh
RW5naW5lU3VwcG8KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRpb25PY3Rl
dFN0cmVhbSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgYXBwbGljYXRpb25PY3RldFN0cmVhbSwgKCJhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYXBwbGljYXRpb25PY3RldFN0cmVh
bSgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW07CiB9CiAKIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRQbGFpbigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdGV4dFBsYWluLCAoInRleHQvcGxh
aW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdGV4dFBsYWluKCJ0ZXh0L3BsYWluIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHRleHRQbGFp
bjsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY29kZWNzKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb2RlY3MsICgi
Y29kZWNzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNvZGVjcygiY29kZWNzIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNvZGVjczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApp
bmRleCA3YzBjMDcwLi44OThkNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkltYWdl
QnVmZmVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTUsNyArMTU2LDcgQEAgcHJpdmF0
ZToKIAogU2NyYXRjaEJ1ZmZlciYgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU2NyYXRjaEJ1ZmZlciwgc2NyYXRjaEJ1ZmZl
ciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3JhdGNoQnVmZmVyPiBzY3JhdGNo
QnVmZmVyOwogICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCAxZmFjNzA0Li4zZDZjZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAg
LTM5Miw3ICszOTIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqYm9vbFN0cmluZyhib29sIHZhbCkK
IHR5cGVkZWYgSGFzaE1hcDxNZWRpYVBsYXllciosIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMqPiBQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlOwogc3RhdGljIFBsYXllclRvUHJpdmF0
ZU1hcFR5cGUmIHBsYXllclRvUHJpdmF0ZU1hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFBsYXllclRvUHJpdmF0ZU1hcFR5cGUsIG1hcCwgKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlPiBtYXA7CiAgICAgcmV0dXJu
IG1hcDsKIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXggNzI0ODkzYi4uNjE0MDI1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VBbHBoYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VBbHBoYS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJGaWx0ZXIuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNiw3ICszNyw3IEBA
IFJlZjxTb3VyY2VBbHBoYT4gU291cmNlQWxwaGE6OmNyZWF0ZShGaWx0ZXJFZmZlY3QmIHNvdXJj
ZUVmZmVjdCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
Zywgc19lZmZlY3ROYW1lLCAoIlNvdXJjZUFscGhhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IHNfZWZmZWN0TmFtZSgiU291cmNlQWxwaGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICByZXR1cm4gc19lZmZlY3ROYW1lOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGlj
LmNwcAppbmRleCA2MWJiMWI4Li4yMzEzYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKQEAgLTIz
LDYgKzIzLDcgQEAKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC0zNSw3ICszNiw3IEBAIFJlZjxTb3VyY2VHcmFwaGljPiBTb3Vy
Y2VHcmFwaGljOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
U291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc19lZmZlY3ROYW1lLCAoIlNvdXJjZUdyYXBo
aWMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc19lZmZlY3ROYW1lKCJTb3VyY2VHcmFw
aGljIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNf
ZWZmZWN0TmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IDA4MGE5
MTIuLjIxMDBlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTQzLDYgKzQz
LDcgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFFUS2l0
L1FUS2l0Lmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFFUS2l0KQogCkBAIC0xMjcxLDcgKzEy
NzIsNyBAQCBzdGF0aWMgdm9pZCBhZGRGaWxlVHlwZXNUb0NhY2hlKE5TQXJyYXkgKiBmaWxlVHlw
ZXMsIEhhc2hTZXQ8U3RyaW5nPiAmY2FjaGUpCiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gbWlt
ZUNvbW1vblR5cGVzQ2FjaGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChIYXNoU2V0PFN0cmluZz4sIGNhY2hlLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8U3RyaW5nPj4gY2FjaGU7CiAgICAgc3RhdGljIGJvb2wgdHlwZUxpc3RJbml0aWFs
aXplZCA9IGZhbHNlOwogCiAgICAgaWYgKCF0eXBlTGlzdEluaXRpYWxpemVkKSB7CkBAIC0xMjg1
LDcgKzEyODYsNyBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IG1pbWVDb21tb25UeXBlc0NhY2hl
KCkKIAogc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBtaW1lTW9kZXJuVHlwZXNDYWNoZSgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwgY2FjaGUs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZTsK
ICAgICBzdGF0aWMgYm9vbCB0eXBlTGlzdEluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgCiAgICAg
aWYgKCF0eXBlTGlzdEluaXRpYWxpemVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvQ3Vyc29ySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9D
dXJzb3JJT1MuY3BwCmluZGV4IGY5NmJmYWYuLmM5ZjBlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwCkBAIC0yNiwxMSArMjYsMTMgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBDdXJzb3ImIGN1
cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEN1cnNv
ciwgY3Vyc29yLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEN1cnNvcj4g
Y3Vyc29yOwogICAgIHJldHVybiBjdXJzb3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5j
cHAKaW5kZXggZGU3YjRlMC4uNWMzNjYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgog
I2luY2x1ZGUgIlRpbGVDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzksNyArODAsNyBAQCB2b2lkIFRpbGVD
b250cm9sbGVyTWVtb3J5SGFuZGxlcjo6dHJpbVVucGFyZW50ZWRUaWxlc1RvVGFyZ2V0KGludCB0
YXJnZXQpCiAKIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlciYgdGlsZUNvbnRyb2xsZXJNZW1v
cnlIYW5kbGVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVyLCBzdGF0aWNUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5k
bGVyPiBzdGF0aWNUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXI7CiAgICAgcmV0dXJuIHN0YXRp
Y1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5o
CmluZGV4IGRhMmZlZjgwLi4xMzIzMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPU19oCiAK
ICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw2ICszNiw3IEBAIGNsYXNzIFRp
bGVDb250cm9sbGVyOwogY2xhc3MgVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyIHsKIHB1Ymxp
YzoKICAgICBmcmllbmQgVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyJiB0aWxlQ29udHJvbGxl
ck1lbW9yeUhhbmRsZXIoKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8VGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVyPjsKIAogICAgIHZvaWQgcmVtb3ZlVGlsZUNvbnRyb2xsZXIo
VGlsZUNvbnRyb2xsZXIqKTsKICAgICB2b2lkIHRpbGVDb250cm9sbGVyR2FpbmVkVW5wYXJlbnRl
ZFRpbGVzKFRpbGVDb250cm9sbGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KaW5kZXggYmUwZGMxNS4uMzg3NTUxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdl
ci5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgY29uc3QgZG91YmxlIGtHcmF2aXR5ID0gOS44
MDY2NTsKIAogKyAoV2ViQ29yZU1vdGlvbk1hbmFnZXIgKilzaGFyZWRNYW5hZ2VyCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxXZWJDb3JlTW90aW9uTWFu
YWdlcj4sIHNoYXJlZE1vdGlvbk1hbmFnZXIsIChbW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIGFsbG9j
XSBpbml0XSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V2ViQ29yZU1v
dGlvbk1hbmFnZXI+PiBzaGFyZWRNb3Rpb25NYW5hZ2VyKFtbV2ViQ29yZU1vdGlvbk1hbmFnZXIg
YWxsb2NdIGluaXRdKTsKICAgICByZXR1cm4gc2hhcmVkTW90aW9uTWFuYWdlci5nZXQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDA5ZmI4MjkuLmUzYWQz
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTE1Niw4ICsxNTYs
OCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JF
dmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdAogICAgICAgICBTdHJpbmcgbG9jYWxpemVkRGV2
aWNlTmFtZTsKIAogICAgICAgICBpZiAobV92aWRlb0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0
KCkpIHsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGFpcnBsYXksIChBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSkpOwotICAgICAgICAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdHZvdXQsIChBU0NJSUxpdGVyYWwoInR2
b3V0IikpKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFpcnBs
YXkoQVNDSUlMaXRlcmFsKCJhaXJwbGF5IikpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgU3RyaW5nIHR5cGUgPSBtX3ZpZGVvRWxlbWVudC0+bWVkaWFDb250cm9s
c0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCk7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBh
aXJwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0Nv
bnRlbnRPYnNlcnZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dL
Q29udGVudE9ic2VydmF0aW9uLmNwcAppbmRleCAwZmI4YWU5Li5kM2E2ZjI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0
aW9uLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgSGFzaE1hcDx2b2lkICosIHZvaWQgKj4g
KiBXZWJUaHJlYWRHZXRPYnNlcnZlZENvbnRlbnRNb2RpZmllcnMoKQogewogICAgIEFTU0VSVChX
ZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPHZvaWQg
Kiwgdm9pZCAqPiBWb2lkVm9pZE1hcDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoVm9pZFZvaWRNYXAsIG9ic2VydmVkQ29udGVudE1vZGlmaWVycywgKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxWb2lkVm9pZE1hcD4gb2JzZXJ2ZWRDb250ZW50TW9kaWZpZXJzOwog
ICAgIHJldHVybiAmb2JzZXJ2ZWRDb250ZW50TW9kaWZpZXJzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCA0MTZkNWRkLi5mNmZjY2EwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KQEAgLTM4LDYg
KzM4LDcgQEAKICNpbXBvcnQgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbXBvcnQgIlN0cmluZ1Ry
dW5jYXRvci5oIgogI2ltcG9ydCAiVGV4dFJ1bi5oIgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTYwLDcgKzE2MSw3IEBAIGNvbnN0
IGZsb2F0IERyYWdMaW5rVXJsRm9udFNpemUgPSAxMDsKIHN0YXRpYyBGb250Q2FzY2FkZSYgZm9u
dEZyb21OU0ZvbnQoTlNGb250ICpmb250KQogewogICAgIHN0YXRpYyBOU0ZvbnQgKmN1cnJlbnRG
b250OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGb250Q2FzY2FkZSwgY3Vy
cmVudFJlbmRlcmVyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRl
PiBjdXJyZW50UmVuZGVyZXI7CiAgICAgCiAgICAgaWYgKFtmb250IGlzRXF1YWw6Y3VycmVudEZv
bnRdKQogICAgICAgICByZXR1cm4gY3VycmVudFJlbmRlcmVyOwpAQCAtMTY4LDcgKzE2OSw3IEBA
IHN0YXRpYyBGb250Q2FzY2FkZSYgZm9udEZyb21OU0ZvbnQoTlNGb250ICpmb250KQogICAgICAg
ICBDRlJlbGVhc2UoY3VycmVudEZvbnQpOwogICAgIGN1cnJlbnRGb250ID0gZm9udDsKICAgICBD
RlJldGFpbihjdXJyZW50Rm9udCk7Ci0gICAgY3VycmVudFJlbmRlcmVyID0gRm9udENhc2NhZGUo
Rm9udFBsYXRmb3JtRGF0YSh0b0NURm9udChmb250KSwgW2ZvbnQgcG9pbnRTaXplXSkpOworICAg
IGN1cnJlbnRSZW5kZXJlci5nZXQoKSA9IEZvbnRDYXNjYWRlKEZvbnRQbGF0Zm9ybURhdGEodG9D
VEZvbnQoZm9udCksIFtmb250IHBvaW50U2l6ZV0pKTsKICAgICByZXR1cm4gY3VycmVudFJlbmRl
cmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggYThl
NmExMS4uOGNkOTczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Ro
ZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpA
QCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiU2Nyb2xsVmlldy5oIgogI2ltcG9ydCAiV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgorI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHN0
YXRpYyBOU1JlY3QgZm9jdXNSaW5nQ2xpcFJlY3Q7CkBAIC0xMzIsOCArMTMzLDggQEAgZW51bSB7
CiAKIFRoZW1lKiBwbGF0Zm9ybVRoZW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoVGhlbWVNYWMsIHRoZW1lTWFjLCAoKSk7Ci0gICAgcmV0dXJuICZ0aGVtZU1hYzsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGhlbWVNYWM+IHRoZW1lTWFjOworICAgIHJldHVy
biAmdGhlbWVNYWMuZ2V0KCk7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSBhIGJ1
bmNoIG9mIGRpZmZlcmVudCBjb250cm9sIHBhcnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RocmVhZENoZWNrLm1tCmluZGV4IDM2ODY0NTIuLmMyODRhZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBv
cnQgIlRocmVhZENoZWNrLmgiCiAKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTk4LDEyICs5OSwxMiBAQCB2b2lkIFdl
YkNvcmVSZXBvcnRUaHJlYWRWaW9sYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb24sIFdlYkNvcmU6
OlRocmVhZFZpb2xhdGlvbgogICAgIGlmIChyb3VuZCA+PSBNYXhpbXVtVGhyZWFkVmlvbGF0aW9u
Um91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChIYXNoU2V0PFN0cmluZz4sIGxvZ2dlZEZ1bmN0aW9ucywgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGxvZ2dlZEZ1bmN0aW9uczsKICAgICBzd2l0
Y2ggKHRocmVhZFZpb2xhdGlvbkJlaGF2aW9yW3JvdW5kXSkgewogICAgICAgICBjYXNlIE5vVGhy
ZWFkQ2hlY2s6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMb2dPbkZpcnN0VGhy
ZWFkVmlvbGF0aW9uOgotICAgICAgICAgICAgaWYgKGxvZ2dlZEZ1bmN0aW9ucy5hZGQoZnVuY3Rp
b24pLmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgIGlmIChsb2dnZWRGdW5jdGlvbnMuZ2V0KCku
YWRkKGZ1bmN0aW9uKS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgTlNMb2coQCJXZWJL
aXQgVGhyZWFkaW5nIFZpb2xhdGlvbiAtICVzIGNhbGxlZCBmcm9tIHNlY29uZGFyeSB0aHJlYWQi
LCBmdW5jdGlvbik7CiAgICAgICAgICAgICAgICAgTlNMb2coQCJBZGRpdGlvbmFsIHRocmVhZGlu
ZyB2aW9sYXRpb25zIGZvciB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IGJlIGxvZ2dlZC4iKTsKICAg
ICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IGI4ZTQ0Y2Iu
Ljc5NmMxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgog
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTUzLDYgKzU0LDcgQEAgcHJpdmF0ZToKIH07CiAKIGNsYXNzIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1hbmFnZXIgewor
ICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyPjsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlSW5mbz4mIGNhcHR1cmVE
ZXZpY2VMaXN0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0K
aW5kZXggNTdkMjE2MC4uNzNjMzE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0KQEAgLTIwOSw3ICsyMDksNyBAQCBib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzQXZh
aWxhYmxlKCkKIAogQVZDYXB0dXJlRGV2aWNlTWFuYWdlciYgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2luZ2xldG9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQVZD
YXB0dXJlRGV2aWNlTWFuYWdlciwgbWFuYWdlciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyPiBtYW5hZ2VyOwogICAgIHJldHVybiBtYW5hZ2Vy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKaW5k
ZXggYjQ5ZDFmNi4uNjNjOGVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyJiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpwbGF0Zm9y
bUNlbnRlcigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYywgY2VudGVy
LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWM+IGNlbnRlcjsKICAgICByZXR1cm4gY2VudGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcAppbmRleCBhZWMw
NDVjLi4zMTAyODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja0JveC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9EYXRhVmlldy5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSW50OEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC03Niw3ICs3Nyw3IEBAIE1vY2tUcmFja0JveDo6TW9ja1RyYWNrQm94KEFycmF5QnVm
ZmVyKiBkYXRhKQogCiBjb25zdCBTdHJpbmcmIE1vY2tUcmFja0JveDo6dHlwZSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdHJhaywgKEFTQ0lJTGl0ZXJh
bCgidHJhayIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHJhayhBU0NJ
SUxpdGVyYWwoInRyYWsiKSk7CiAgICAgcmV0dXJuIHRyYWs7CiB9CiAKQEAgLTEwNSw3ICsxMDYs
NyBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJbml0aWFsaXphdGlvbkJveChBcnJheUJ1
ZmZlciogZGF0YSkKIAogY29uc3QgU3RyaW5nJiBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGluaXQsIChB
U0NJSUxpdGVyYWwoImluaXQiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IGluaXQoQVNDSUlMaXRlcmFsKCJpbml0IikpOwogICAgIHJldHVybiBpbml0OwogfQogCkBAIC0x
MzMsNyArMTM0LDcgQEAgTW9ja1NhbXBsZUJveDo6TW9ja1NhbXBsZUJveChBcnJheUJ1ZmZlciog
ZGF0YSkKIAogY29uc3QgU3RyaW5nJiBNb2NrU2FtcGxlQm94Ojp0eXBlKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzbXBsLCAoQVNDSUlMaXRlcmFsKCJz
bXBsIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzbXBsKEFTQ0lJTGl0
ZXJhbCgic21wbCIpKTsKICAgICByZXR1cm4gc21wbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCA3N2E3MWUzLi41ZDMwMGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNw
cApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM2NSwx
NCArMzY2LDE0IEBAIHZvaWQgZmluZENoYXJzZXRJbk1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSwgdW5zaWduZWQgaW50JiBjaGFyc2V0UG9zLCB1CiAKIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcGFyc2VYU1NQcm90ZWN0aW9uSGVhZGVyKGNv
bnN0IFN0cmluZyYgaGVhZGVyLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24sIHVuc2lnbmVkJiBmYWls
dXJlUG9zaXRpb24sIFN0cmluZyYgcmVwb3J0VVJMKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkVG9nZ2xlLCAoQVNDSUlM
aXRlcmFsKCJleHBlY3RlZCAwIG9yIDEiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkU2VwYXJhdG9yLCAoQVNDSUlMaXRl
cmFsKCJleHBlY3RlZCBzZW1pY29sb24iKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkRXF1YWxzLCAoQVNDSUlMaXRlcmFs
KCJleHBlY3RlZCBlcXVhbHMgc2lnbiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRNb2RlLCAoQVNDSUlMaXRlcmFsKCJp
bnZhbGlkIG1vZGUgZGlyZWN0aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZFJlcG9ydCwgKEFTQ0lJTGl0ZXJhbCgi
aW52YWxpZCByZXBvcnQgZGlyZWN0aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uRHVwbGljYXRlTW9kZSwgKEFTQ0lJTGl0ZXJh
bCgiZHVwbGljYXRlIG1vZGUgZGlyZWN0aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uRHVwbGljYXRlUmVwb3J0LCAoQVNDSUlM
aXRlcmFsKCJkdXBsaWNhdGUgcmVwb3J0IGRpcmVjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWREaXJlY3RpdmUs
IChBU0NJSUxpdGVyYWwoInVucmVjb2duaXplZCBkaXJlY3RpdmUiKSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkVG9nZ2xlKEFTQ0lJTGl0
ZXJhbCgiZXhwZWN0ZWQgMCBvciAxIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkU2VwYXJhdG9yKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQg
c2VtaWNvbG9uIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZhaWx1cmVS
ZWFzb25JbnZhbGlkRXF1YWxzKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgZXF1YWxzIHNpZ24iKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNvbkludmFsaWRN
b2RlKEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBtb2RlIGRpcmVjdGl2ZSIpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZFJlcG9ydChBU0NJSUxp
dGVyYWwoImludmFsaWQgcmVwb3J0IGRpcmVjdGl2ZSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uRHVwbGljYXRlTW9kZShBU0NJSUxpdGVyYWwoImR1
cGxpY2F0ZSBtb2RlIGRpcmVjdGl2ZSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBmYWlsdXJlUmVhc29uRHVwbGljYXRlUmVwb3J0KEFTQ0lJTGl0ZXJhbCgiZHVwbGljYXRl
IHJlcG9ydCBkaXJlY3RpdmUiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
ZmFpbHVyZVJlYXNvbkludmFsaWREaXJlY3RpdmUoQVNDSUlMaXRlcmFsKCJ1bnJlY29nbml6ZWQg
ZGlyZWN0aXZlIikpOwogCiAgICAgdW5zaWduZWQgcG9zID0gMDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCA1YTNkZDM4
Li4wYTBhMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw3ICs0OSw3IEBAIHN0YXRpYyBCdWlsdGluUmVz
b3VyY2VIYW5kbGVDb25zdHJ1Y3Rvck1hcCYgYnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0
b3JNYXAoCiAjZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAjZW5kaWYKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3Ry
dWN0b3JNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCdWlsdGluUmVz
b3VyY2VIYW5kbGVDb25zdHJ1Y3Rvck1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKQEAg
LTYxLDcgKzYyLDcgQEAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVzb3VyY2VIYW5k
bGU6OkJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcj4gQnVpbHRpblIKIHN0YXRpYyBCdWlsdGluUmVz
b3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCYgYnVpbHRpblJlc291cmNlSGFuZGxlU3lu
Y2hyb25vdXNMb2FkZXJNYXAoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEJ1aWx0aW5SZXNvdXJjZUhhbmRsZVN5bmNo
cm9ub3VzTG9hZGVyTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QnVp
bHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXA+IG1hcDsKICAgICByZXR1cm4g
bWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCBlYzc1ZWRlLi45NGVkMDQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRk5ldC5jcHAKQEAgLTgzLDE0ICs4MywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0
cygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5n
PiwgaG9zdHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+
PiBob3N0czsKICAgICByZXR1cm4gaG9zdHM7CiB9CiAKIHN0YXRpYyBIYXNoTWFwPFN0cmluZywg
UmV0YWluUHRyPENGRGF0YVJlZj4+JiBjbGllbnRDZXJ0cygpCiB7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4+IENlcnRzTWFwOwotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChDZXJ0c01hcCwgY2VydHMsICgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q2VydHNNYXA+IGNlcnRzOwogICAgIHJldHVybiBjZXJ0czsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmdLZXll
ZE1SVUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZ0tl
eWVkTVJVQ2FjaGUuaAppbmRleCA5YTUzY2E2Li5kODkyZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaApA
QCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlX2gKICNk
ZWZpbmUgQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZV9oCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzYsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgVCBnZXQoY29uc3Qg
QXRvbWljU3RyaW5nJiBrZXkpCiAgICAgewogICAgICAgICBpZiAoa2V5LmlzTnVsbCgpKSB7Ci0g
ICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVCwgdmFsdWVGb3JOdWxs
LCAoY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkpKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxUPiB2YWx1ZUZvck51bGwoY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlRm9yTnVsbDsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAppbmRleCA0MGI4YmU5Li42
MGIyZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhl
bmF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVu
YXRpb25DRi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBBdG9t
aWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+OjpjcmVhdGUKIAog
c3RhdGljIEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPj4m
IGNmTG9jYWxlQ2FjaGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+LCBjYWNoZSwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hl
PFJldGFpblB0cjxDRkxvY2FsZVJlZj4+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDc0ZTA1NzIuLmIy
OGExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTY2
MCw4ICsxNjYwLDggQEAgUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpibG9ja0VsZW1lbnRDb250
aW51YXRpb24oKSBjb25zdAogICAgIAogc3RhdGljIENvbnRpbnVhdGlvbk91dGxpbmVUYWJsZU1h
cCogY29udGludWF0aW9uT3V0bGluZVRhYmxlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQ29udGludWF0aW9uT3V0bGluZVRhYmxlTWFwLCB0YWJsZSwgKCkpOwotICAg
IHJldHVybiAmdGFibGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnRpbnVhdGlvbk91
dGxpbmVUYWJsZU1hcD4gdGFibGU7CisgICAgcmV0dXJuICZ0YWJsZS5nZXQoKTsKIH0KIAogdm9p
ZCBSZW5kZXJCbG9jazo6YWRkQ29udGludWF0aW9uV2l0aE91dGxpbmUoUmVuZGVySW5saW5lKiBm
bG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IGM3
NDU2MzkuLjQwM2NhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5v
ZGUoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmkKIAogc3RhdGlj
IENvdW50ZXJNYXBzJiBjb3VudGVyTWFwcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKENvdW50ZXJNYXBzLCBzdGF0aWNDb3VudGVyTWFwcywgKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxDb3VudGVyTWFwcz4gc3RhdGljQ291bnRlck1hcHM7CiAgICAgcmV0
dXJuIHN0YXRpY0NvdW50ZXJNYXBzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IGQ5M2IzZWQu
LmFmY2RiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC05ODcsOCArOTg3LDggQEAgdm9pZCBSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJdGVyYXRvciYg
aXRlcmF0b3IsIGJvb2wKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGNvbnN0IFVD
aGFyIGVsbGlwc2lzQW5kU3BhY2VbMl0gPSB7IGhvcml6b250YWxFbGxpcHNpcywgJyAnIH07Ci0g
ICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGVsbGlw
c2lzQW5kU3BhY2VTdHIsIChlbGxpcHNpc0FuZFNwYWNlLCAyKSk7Ci0gICAgICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGVsbGlwc2lzU3RyLCAoJmhvcml6
b250YWxFbGxpcHNpcywgMSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBlbGxpcHNpc0FuZFNwYWNlU3RyKGVsbGlwc2lzQW5kU3BhY2UsIDIpOworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbGxpcHNpc1N0cigmaG9yaXpv
bnRhbEVsbGlwc2lzLCAxKTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9
IG51bVZpc2libGVMaW5lcyA9PSAxID8gZmlyc3RMaW5lU3R5bGUoKSA6IHN0eWxlKCk7CiAgICAg
ICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gbGluZVN0eWxlLmZvbnRDYXNjYWRlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDI1MWIwZWUuLmVh
Mzc5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzYz
MywxMiArMzYzMywxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1h
Z2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdQogICAgIFJlZlB0cjxJbWFn
ZT4gcmVzaXplQ29ybmVySW1hZ2U7CiAgICAgRmxvYXRTaXplIGNvcm5lclJlc2l6ZXJTaXplOwog
ICAgIGlmIChyZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSA+PSAyKSB7
Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChJbWFnZSosIHJlc2l6ZUNv
cm5lckltYWdlSGlSZXMsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVz
aXplQ29ybmVyQDJ4IikubGVha1JlZigpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxJbWFnZSo+IHJlc2l6ZUNvcm5lckltYWdlSGlSZXMoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSk7CiAgICAgICAgIHJlc2l6
ZUNvcm5lckltYWdlID0gcmVzaXplQ29ybmVySW1hZ2VIaVJlczsKICAgICAgICAgY29ybmVyUmVz
aXplclNpemUgPSByZXNpemVDb3JuZXJJbWFnZS0+c2l6ZSgpOwogICAgICAgICBjb3JuZXJSZXNp
emVyU2l6ZS5zY2FsZSgwLjVmKTsKICAgICB9IGVsc2UgewotICAgICAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoSW1hZ2UqLCByZXNpemVDb3JuZXJJbWFnZUxvUmVzLCAoSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lciIpLmxlYWtSZWYoKSkp
OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFn
ZUxvUmVzKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXIi
KS5sZWFrUmVmKCkpOwogICAgICAgICByZXNpemVDb3JuZXJJbWFnZSA9IHJlc2l6ZUNvcm5lcklt
YWdlTG9SZXM7CiAgICAgICAgIGNvcm5lclJlc2l6ZXJTaXplID0gcmVzaXplQ29ybmVySW1hZ2Ut
PnNpemUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclRoZW1lLmNwcAppbmRleCA1NGZlYTBjLi4xNjkyZGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTI2LDE0ICsy
NiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhclRo
ZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFJlbmRlclNjcm9sbGJhclRoZW1lKiBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cmVuZGVyU2Nyb2xsYmFyVGhlbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChSZW5kZXJTY3JvbGxiYXJUaGVtZSwgdGhlbWUsICgpKTsKLSAgICByZXR1cm4gJnRoZW1l
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW5kZXJTY3JvbGxiYXJUaGVtZT4gdGhlbWU7
CisgICAgcmV0dXJuICZ0aGVtZS5nZXQoKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXImIHNjcm9sbGJhciwgaW50JiBi
ZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCmluZGV4IGM2OGJjOGMuLjNhYjlhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmNwcApAQCAtNjgsNyArNjgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCiBzdGF0aWMgQ29sb3ImIGN1c3RvbUZvY3VzUmluZ0NvbG9yKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGNvbG9yLCAoKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPENvbG9yPiBjb2xvcjsKICAgICByZXR1cm4gY29sb3I7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggZTQ5NDcxMy4u
OTI0ZWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgdW5zaWduZWQgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25T
Y29wZTo6c193aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ28KIAogV2lkZ2V0SGllcmFyY2h5
VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6V2lkZ2V0VG9QYXJlbnRNYXAmIFdpZGdldEhpZXJhcmNo
eVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OndpZGdldE5ld1BhcmVudE1hcCgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFdpZGdldFRvUGFyZW50TWFwLCBtYXAsICgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2lkZ2V0VG9QYXJlbnRNYXA+IG1hcDsKICAgICBy
ZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlT3V0c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGVPdXRzaWRlSW5mby5oCmluZGV4IDkxMmFhNWMuLjM5NTY0YTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUgIlNoYXBlLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzAsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAg
ICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjp1bmlxdWVfcHRyPFNoYXBl
T3V0c2lkZUluZm8+PiBJbmZvTWFwOwogICAgIHN0YXRpYyBJbmZvTWFwJiBpbmZvTWFwKCkKICAg
ICB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChJbmZvTWFwLCBzdGF0
aWNJbmZvTWFwLCAoKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbmZvTWFwPiBz
dGF0aWNJbmZvTWFwOwogICAgICAgICByZXR1cm4gc3RhdGljSW5mb01hcDsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDY1
OGRlZDUuLjBiZDlhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcApAQCAtMTI0OCw4ICsxMjQ4LDggQEAgY29uc3QgQXRvbWljU3RyaW5nJiBS
ZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGh5cGhlbmF0
aW9uU3RyaW5nOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGRlcGVuZCBvbiBsb2NhbGUu
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaHlwaGVu
TWludXNTdHJpbmcsICgmaHlwaGVuTWludXMsIDEpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBoeXBoZW5TdHJpbmcsICgmaHlwaGVuLCAxKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaHlwaGVuTWludXNTdHJpbmco
Jmh5cGhlbk1pbnVzLCAxKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBoeXBoZW5TdHJpbmcoJmh5cGhlbiwgMSk7CiAgICAgcmV0dXJuIGZvbnRDYXNjYWRlKCkucHJp
bWFyeUZvbnQoKS5nbHlwaEZvckNoYXJhY3RlcihoeXBoZW4pID8gaHlwaGVuU3RyaW5nIDogaHlw
aGVuTWludXNTdHJpbmc7CiB9CiAKQEAgLTEyNjEsMjggKzEyNjEsMjggQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzTWFya1N0cmluZygpIGNvbnN0CiAgICAg
Y2FzZSBUZXh0RW1waGFzaXNNYXJrQ3VzdG9tOgogICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lz
Q3VzdG9tTWFyaygpOwogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0RvdDogewotICAgICAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWxsZWREb3RTdHJp
bmcsICgmYnVsbGV0LCAxKSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIG9wZW5Eb3RTdHJpbmcsICgmd2hpdGVCdWxsZXQsIDEpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkRG90U3RyaW5nKCZi
dWxsZXQsIDEpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBv
cGVuRG90U3RyaW5nKCZ3aGl0ZUJ1bGxldCwgMSk7CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFz
aXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZERvdFN0cmluZyA6IG9w
ZW5Eb3RTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0NpcmNsZTogewot
ICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWxs
ZWRDaXJjbGVTdHJpbmcsICgmYmxhY2tDaXJjbGUsIDEpKTsKLSAgICAgICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb3BlbkNpcmNsZVN0cmluZywgKCZ3aGl0
ZUNpcmNsZSwgMSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBmaWxsZWRDaXJjbGVTdHJpbmcoJmJsYWNrQ2lyY2xlLCAxKTsKKyAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlbkNpcmNsZVN0cmluZygmd2hpdGVDaXJjbGUs
IDEpOwogICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0Zp
bGxGaWxsZWQgPyBmaWxsZWRDaXJjbGVTdHJpbmcgOiBvcGVuQ2lyY2xlU3RyaW5nOwogICAgIH0K
ICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3VibGVDaXJjbGU6IHsKLSAgICAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVkRG91YmxlQ2lyY2xl
U3RyaW5nLCAoJmZpc2hleWUsIDEpKTsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgb3BlbkRvdWJsZUNpcmNsZVN0cmluZywgKCZidWxsc2V5ZSwg
MSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxsZWRE
b3VibGVDaXJjbGVTdHJpbmcoJmZpc2hleWUsIDEpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVuRG91YmxlQ2lyY2xlU3RyaW5nKCZidWxsc2V5ZSwgMSk7
CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZp
bGxlZCA/IGZpbGxlZERvdWJsZUNpcmNsZVN0cmluZyA6IG9wZW5Eb3VibGVDaXJjbGVTdHJpbmc7
CiAgICAgfQogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1RyaWFuZ2xlOiB7Ci0gICAgICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpbGxlZFRyaWFuZ2xl
U3RyaW5nLCAoJmJsYWNrVXBQb2ludGluZ1RyaWFuZ2xlLCAxKSk7Ci0gICAgICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9wZW5UcmlhbmdsZVN0cmluZywg
KCZ3aGl0ZVVwUG9pbnRpbmdUcmlhbmdsZSwgMSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxsZWRUcmlhbmdsZVN0cmluZygmYmxhY2tVcFBvaW50aW5n
VHJpYW5nbGUsIDEpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBvcGVuVHJpYW5nbGVTdHJpbmcoJndoaXRlVXBQb2ludGluZ1RyaWFuZ2xlLCAxKTsKICAgICAg
ICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8g
ZmlsbGVkVHJpYW5nbGVTdHJpbmcgOiBvcGVuVHJpYW5nbGVTdHJpbmc7CiAgICAgfQogICAgIGNh
c2UgVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWxsZWRTZXNhbWVTdHJpbmcsICgmc2VzYW1lRG90
LCAxKSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIG9wZW5TZXNhbWVTdHJpbmcsICgmd2hpdGVTZXNhbWVEb3QsIDEpKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkU2VzYW1lU3RyaW5nKCZzZXNh
bWVEb3QsIDEpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBv
cGVuU2VzYW1lU3RyaW5nKCZ3aGl0ZVNlc2FtZURvdCwgMSk7CiAgICAgICAgIHJldHVybiB0ZXh0
RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZFNlc2FtZVN0
cmluZyA6IG9wZW5TZXNhbWVTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFy
a0F1dG86CkBAIC0xMjk3LDEzICsxMjk3LDEzIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVy
U3R5bGU6OnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSBjb25zdAogI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIFJlbmRlclN0
eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4sIGVtcHR5TGlzdCwgKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+
PiBlbXB0eUxpc3Q7CiAgICAgcmV0dXJuIGVtcHR5TGlzdDsKIH0KIAogY29uc3QgVmVjdG9yPFN0
eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0eWxlRGFzaGJv
YXJkUmVnaW9uPiwgbm9uZUxpc3QsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVj
dG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPj4gbm9uZUxpc3Q7CiAgICAgc3RhdGljIGJvb2wgbm9u
ZUxpc3RJbml0aWFsaXplZCA9IGZhbHNlOwogCiAgICAgaWYgKCFub25lTGlzdEluaXRpYWxpemVk
KSB7CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdp
b24+JiBSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKQogICAgICAgICByZWdpb24u
b2Zmc2V0LmJvdHRvbSgpID0gTGVuZ3RoKCk7CiAgICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgp
ID0gTGVuZ3RoKCk7CiAgICAgICAgIHJlZ2lvbi50eXBlID0gU3R5bGVEYXNoYm9hcmRSZWdpb246
Ok5vbmU7Ci0gICAgICAgIG5vbmVMaXN0LmFwcGVuZChyZWdpb24pOworICAgICAgICBub25lTGlz
dC5nZXQoKS5hcHBlbmQocmVnaW9uKTsKICAgICAgICAgbm9uZUxpc3RJbml0aWFsaXplZCA9IHRy
dWU7CiAgICAgfQogICAgIHJldHVybiBub25lTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNjU4NWM2ZS4uZWQ0OWFiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTcwLDYgKzcwLDcg
QEAKICNpbmNsdWRlICJVbmljb2RlQmlkaS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTIwMDgsNyArMjAwOSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbENvbHVtbkNvdW50KCkgeyByZXR1cm4gMTsgfQog
ICAgIHN0YXRpYyBDb2x1bW5GaWxsIGluaXRpYWxDb2x1bW5GaWxsKCkgeyByZXR1cm4gQ29sdW1u
RmlsbEJhbGFuY2U7IH0KICAgICBzdGF0aWMgQ29sdW1uU3BhbiBpbml0aWFsQ29sdW1uU3Bhbigp
IHsgcmV0dXJuIENvbHVtblNwYW5Ob25lOyB9Ci0gICAgc3RhdGljIGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbnMmIGluaXRpYWxUcmFuc2Zvcm0oKSB7IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChUcmFuc2Zvcm1PcGVyYXRpb25zLCBvcHMsICgpKTsgcmV0dXJuIG9wczsgfQorICAgIHN0
YXRpYyBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBpbml0aWFsVHJhbnNmb3JtKCkgeyBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VHJhbnNmb3JtT3BlcmF0aW9ucz4gb3BzOyByZXR1cm4gb3BzOyB9
CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWCgpIHsgcmV0dXJuIExl
bmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxUcmFuc2Zv
cm1PcmlnaW5ZKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjBmLCBQZXJjZW50KTsgfQogICAgIHN0YXRp
YyBFUG9pbnRlckV2ZW50cyBpbml0aWFsUG9pbnRlckV2ZW50cygpIHsgcmV0dXJuIFBFX0FVVE87
IH0KQEAgLTIxMTQsOSArMjExNSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVmVjdG9y
PFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgaW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKTsKICAgICBz
dGF0aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgbm9uZURhc2hib2FyZFJl
Z2lvbnMoKTsKICNlbmRpZgotICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBpbml0
aWFsRmlsdGVyKCkgeyBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRmlsdGVyT3BlcmF0
aW9ucywgb3BzLCAoKSk7IHJldHVybiBvcHM7IH0KKyAgICBzdGF0aWMgY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgaW5pdGlhbEZpbHRlcigpIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZpbHRlck9w
ZXJhdGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIp
Ci0gICAgc3RhdGljIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGluaXRpYWxCYWNrZHJvcEZpbHRl
cigpIHsgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZpbHRlck9wZXJhdGlvbnMsIG9w
cywgKCkpOyByZXR1cm4gb3BzOyB9CisgICAgc3RhdGljIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGluaXRpYWxCYWNrZHJvcEZpbHRlcigpIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZpbHRlck9w
ZXJhdGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19DT01Q
T1NJVElORykKICAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRpYWxCbGVuZE1vZGUoKSB7IHJldHVy
biBCbGVuZE1vZGVOb3JtYWw7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1BhdGguY3BwCmluZGV4IDNiZTFkN2IuLmVjMmUyODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApAQCAtMTMxLDE1ICsxMzEsMTUg
QEAgYm9vbCBSZW5kZXJTVkdQYXRoOjpzaG91bGRTdHJva2VaZXJvTGVuZ3RoU3VicGF0aCgpIGNv
bnN0CiAKIFBhdGgqIFJlbmRlclNWR1BhdGg6Onplcm9MZW5ndGhMaW5lY2FwUGF0aChjb25zdCBG
bG9hdFBvaW50JiBsaW5lY2FwUG9zaXRpb24pIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFBhdGgsIHRlbXBQYXRoLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFBhdGg+IHRlbXBQYXRoOwogCi0gICAgdGVtcFBhdGguY2xlYXIoKTsKKyAgICB0ZW1w
UGF0aC5nZXQoKS5jbGVhcigpOwogICAgIGlmIChzdHlsZSgpLnN2Z1N0eWxlKCkuY2FwU3R5bGUo
KSA9PSBTcXVhcmVDYXApCi0gICAgICAgIHRlbXBQYXRoLmFkZFJlY3QoemVyb0xlbmd0aFN1YnBh
dGhSZWN0KGxpbmVjYXBQb3NpdGlvbiwgdGhpcy0+c3Ryb2tlV2lkdGgoKSkpOworICAgICAgICB0
ZW1wUGF0aC5nZXQoKS5hZGRSZWN0KHplcm9MZW5ndGhTdWJwYXRoUmVjdChsaW5lY2FwUG9zaXRp
b24sIHRoaXMtPnN0cm9rZVdpZHRoKCkpKTsKICAgICBlbHNlCi0gICAgICAgIHRlbXBQYXRoLmFk
ZEVsbGlwc2UoemVyb0xlbmd0aFN1YnBhdGhSZWN0KGxpbmVjYXBQb3NpdGlvbiwgdGhpcy0+c3Ry
b2tlV2lkdGgoKSkpOworICAgICAgICB0ZW1wUGF0aC5nZXQoKS5hZGRFbGxpcHNlKHplcm9MZW5n
dGhTdWJwYXRoUmVjdChsaW5lY2FwUG9zaXRpb24sIHRoaXMtPnN0cm9rZVdpZHRoKCkpKTsKIAot
ICAgIHJldHVybiAmdGVtcFBhdGg7CisgICAgcmV0dXJuICZ0ZW1wUGF0aC5nZXQoKTsKIH0KIAog
RmxvYXRSZWN0IFJlbmRlclNWR1BhdGg6Onplcm9MZW5ndGhTdWJwYXRoUmVjdChjb25zdCBGbG9h
dFBvaW50JiBsaW5lY2FwUG9zaXRpb24sIGZsb2F0IHN0cm9rZVdpZHRoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCA4MjI4
NTgzLi44YTFmZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmNwcApAQCAtMTg3LDEyICsxODcsMTIgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6
bGF5b3V0KCkKIAogUGF0aCogUmVuZGVyU1ZHU2hhcGU6Om5vblNjYWxpbmdTdHJva2VQYXRoKGNv
bnN0IFBhdGgqIHBhdGgsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlVHJhbnNmb3JtKSBj
b25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChQYXRoLCB0ZW1wUGF0
aCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYXRoPiB0ZW1wUGF0aDsKIAotICAg
IHRlbXBQYXRoID0gKnBhdGg7Ci0gICAgdGVtcFBhdGgudHJhbnNmb3JtKHN0cm9rZVRyYW5zZm9y
bSk7CisgICAgdGVtcFBhdGguZ2V0KCkgPSAqcGF0aDsKKyAgICB0ZW1wUGF0aC5nZXQoKS50cmFu
c2Zvcm0oc3Ryb2tlVHJhbnNmb3JtKTsKIAotICAgIHJldHVybiAmdGVtcFBhdGg7CisgICAgcmV0
dXJuICZ0ZW1wUGF0aC5nZXQoKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdTaGFwZTo6c2V0dXBOb25T
Y2FsaW5nU3Ryb2tlQ29udGV4dChBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZVRyYW5zZm9ybSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciYgc3RhdGVTYXZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDhiYzBhOTku
LjUzN2ZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5n
Q29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgUGFpCiAKIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0mIGN1cnJlbnRDb250ZW50VHJhbnNmb3Jt
YXRpb24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBZmZpbmVUcmFu
c2Zvcm0sIHNfY3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlvbiwgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBZmZpbmVUcmFuc2Zvcm0+IHNfY3VycmVudENvbnRlbnRUcmFuc2Zvcm1h
dGlvbjsKICAgICByZXR1cm4gc19jdXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9uOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKaW5kZXggZTY4
Y2UzOC4uMmUxZjJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzLmNwcApAQCAtNDUsNDQgKzQ1LDQ0IEBAIFNWR1Jlc291cmNlczo6U1ZHUmVzb3VyY2Vz
KCkKIAogc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgY2xpcHBlckZpbHRlck1hc2tlclRh
Z3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PEF0b21p
Y1N0cmluZz4sIHNfdGFnTGlzdCwgKCkpOwotICAgIGlmIChzX3RhZ0xpc3QuaXNFbXB0eSgpKSB7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4gc190YWdM
aXN0OworICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vICJj
b250YWluZXIgZWxlbWVudHMiOiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9pbnRyby5odG1s
I1Rlcm1Db250YWluZXJFbGVtZW50CiAgICAgICAgIC8vICJncmFwaGljcyBlbGVtZW50cyIgOiBo
dHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9pbnRyby5odG1sI1Rlcm1HcmFwaGljc0VsZW1lbnQK
LSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6YVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmNpcmNsZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmVsbGlwc2VUYWcubG9jYWxOYW1lKCkpOwotICAg
ICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpnbHlwaFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmdUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjppbWFnZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNf
dGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3Rh
Z0xpc3QuYWRkKFNWR05hbWVzOjptYXJrZXJUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3Rh
Z0xpc3QuYWRkKFNWR05hbWVzOjptYXNrVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdM
aXN0LmFkZChTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5Z29uVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWxpbmVUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpyZWN0VGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6c3ZnVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190
YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFn
TGlzdC5hZGQoU1ZHTmFtZXM6OnVzZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlz
dC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmFUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xp
c3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpjaXJjbGVUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBz
X3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjplbGxpcHNlVGFnLmxvY2FsTmFtZSgpKTsKKyAg
ICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6Z2x5cGhUYWcubG9jYWxOYW1lKCkp
OworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpnVGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6aW1hZ2VUYWcubG9jYWxO
YW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxv
Y2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6bWFya2Vy
VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6
bWFza1RhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFt
ZXM6Om1pc3NpbmdfZ2x5cGhUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0
KCkuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0
LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNf
dGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgpKTsKKyAg
ICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cmVjdFRhZy5sb2NhbE5hbWUoKSk7
CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnN2Z1RhZy5sb2NhbE5hbWUo
KSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRleHRUYWcubG9jYWxO
YW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp1c2VUYWcubG9j
YWxOYW1lKCkpOwogCiAgICAgICAgIC8vIE5vdCBsaXN0ZWQgaW4gdGhlIGRlZmluaXRpb25zIGlz
IHRoZSBjbGlwUGF0aCBlbGVtZW50LCB0aGUgU1ZHIHNwZWMgc2F5cyB0aG91Z2g6CiAgICAgICAg
IC8vIFRoZSAiY2xpcFBhdGgiIGVsZW1lbnQgb3IgYW55IG9mIGl0cyBjaGlsZHJlbiBjYW4gc3Bl
Y2lmeSBwcm9wZXJ0eSAiY2xpcC1wYXRoIi4KICAgICAgICAgLy8gU28gd2UgaGF2ZSB0byBhZGQg
Y2xpcFBhdGhUYWcgaGVyZSwgb3RoZXJ3aGlzZSBjbGlwLXBhdGggb24gY2xpcFBhdGggd2lsbCBm
YWlsLgogICAgICAgICAvLyAoQWxyZWFkeSBtYWlsZWQgU1ZHIFdHLCB3YWl0aW5nIGZvciBhIHNv
bHV0aW9uKQotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpjbGlwUGF0aFRhZy5sb2Nh
bE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmNsaXBQYXRo
VGFnLmxvY2FsTmFtZSgpKTsKIAogICAgICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBkZWZpbml0
aW9ucyBhcmUgdGhlIHRleHQgY29udGVudCBlbGVtZW50cywgdGhvdWdoIGZpbHRlci9jbGlwcGVy
L21hc2tlciBvbiB0c3Bhbi90ZXh0Ly4uIGlzIGFsbG93ZWQuCiAgICAgICAgIC8vIChBbHJlYWR5
IG1haWxlZCBTVkcgV0csIHdhaXRpbmcgZm9yIGEgc29sdXRpb24pCi0gICAgICAgIHNfdGFnTGlz
dC5hZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdM
aXN0LmFkZChTVkdOYW1lczo6dGV4dFBhdGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3Rh
Z0xpc3QuYWRkKFNWR05hbWVzOjp0cmVmVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdM
aXN0LmFkZChTVkdOYW1lczo6dHNwYW5UYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xp
c3QuZ2V0KCkuYWRkKFNWR05hbWVzOjphbHRHbHlwaFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAg
IHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRleHRQYXRoVGFnLmxvY2FsTmFtZSgpKTsK
KyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dHJlZlRhZy5sb2NhbE5hbWUo
KSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRzcGFuVGFnLmxvY2Fs
TmFtZSgpKTsKIAogICAgICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBkZWZpbml0aW9ucyBpcyB0
aGUgZm9yZWlnbk9iamVjdCBlbGVtZW50LCBidXQgY2xpcC1wYXRoCiAgICAgICAgIC8vIGlzIGEg
c3VwcG9ydGVkIGF0dHJpYnV0ZS4KLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Zm9y
ZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcubG9jYWxOYW1lKCkpOwogCiAgICAgICAgIC8vIEVs
ZW1lbnRzIHRoYXQgd2UgaWdub3JlLCBhcyBpdCBkb2Vzbid0IG1ha2UgYW55IHNlbnNlLgogICAg
ICAgICAvLyBkZWZzLCBwYXR0ZXJuLCBzd2l0Y2ggKEZJWE1FOiBNYWlsIFNWRyBXRyBhYm91dCB0
aGVzZSkKQEAgLTk0LDEyICs5NCwxMiBAQCBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBj
bGlwcGVyRmlsdGVyTWFza2VyVGFncygpCiAKIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4m
IG1hcmtlclRhZ3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNo
U2V0PEF0b21pY1N0cmluZz4sIHNfdGFnTGlzdCwgKCkpOwotICAgIGlmIChzX3RhZ0xpc3QuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxO
YW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFt
ZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5h
bWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmc+
PiBzX3RhZ0xpc3Q7CisgICAgaWYgKHNfdGFnTGlzdC5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6bGluZVRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxOYW1lKCkp
OworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5Z29uVGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWxpbmVU
YWcubG9jYWxOYW1lKCkpOwogICAgIH0KIAogICAgIHJldHVybiBzX3RhZ0xpc3Q7CkBAIC0xMDcs
MjAgKzEwNywyMCBAQCBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBtYXJrZXJUYWdzKCkK
IAogc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgZmlsbEFuZFN0cm9rZVRhZ3MoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PEF0b21pY1N0cmluZz4s
IHNfdGFnTGlzdCwgKCkpOwotICAgIGlmIChzX3RhZ0xpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAg
ICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Y2lyY2xlVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAg
ICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6ZWxsaXBzZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAg
ICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cmVjdFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRleHRUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0ZXh0UGF0aFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRyZWZUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0c3BhblRhZy5sb2NhbE5hbWUoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4gc190YWdMaXN0OworICAgIGlm
IChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5h
ZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0
LmdldCgpLmFkZChTVkdOYW1lczo6Y2lyY2xlVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190
YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6ZWxsaXBzZVRhZy5sb2NhbE5hbWUoKSk7CisgICAg
ICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxOYW1lKCkpOwor
ICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2Nh
bE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5l
VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6
cmVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFt
ZXM6OnRleHRUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNW
R05hbWVzOjp0ZXh0UGF0aFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQo
KS5hZGQoU1ZHTmFtZXM6OnRyZWZUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3Qu
Z2V0KCkuYWRkKFNWR05hbWVzOjp0c3BhblRhZy5sb2NhbE5hbWUoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHNfdGFnTGlzdDsKQEAgLTEyOCwxMiArMTI4LDEyIEBAIHN0YXRpYyBIYXNoU2V0PEF0
b21pY1N0cmluZz4mIGZpbGxBbmRTdHJva2VUYWdzKCkKIAogc3RhdGljIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiYgY2hhaW5hYmxlUmVzb3VyY2VUYWdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBzX3RhZ0xpc3QsICgpKTsKLSAg
ICBpZiAoc190YWdMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05h
bWVzOjpsaW5lYXJHcmFkaWVudFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5h
ZGQoU1ZHTmFtZXM6OmZpbHRlclRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5h
ZGQoU1ZHTmFtZXM6OnBhdHRlcm5UYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3Qu
YWRkKFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZy5sb2NhbE5hbWUoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4gc190YWdMaXN0OworICAgIGlm
IChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5h
ZGQoU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190
YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6ZmlsdGVyVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAg
ICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cGF0dGVyblRhZy5sb2NhbE5hbWUoKSk7
CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFn
LmxvY2FsTmFtZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gc190YWdMaXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmdsZS5jcHAKaW5kZXggNTg4ZjI3Ny4uOWE2OTRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUu
Y3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTIsMTYgKzExMywxNiBAQCBTdHJp
bmcgU1ZHQW5nbGU6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewogICAgIHN3aXRjaCAobV91bml0
VHlwZSkgewogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9ERUc6IHsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZGVnU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJk
ZWciKSkpOwotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVk
VW5pdHMpICsgZGVnU3RyaW5nOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiBkZWdTdHJpbmcoQVNDSUlMaXRlcmFsKCJkZWciKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6
Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyBkZWdTdHJpbmcuZ2V0KCk7CiAgICAg
fQogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9SQUQ6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcmFkU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJyYWQiKSkp
OwotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMp
ICsgcmFkU3RyaW5nOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiByYWRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJyYWQiKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJl
cihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyByYWRTdHJpbmcuZ2V0KCk7CiAgICAgfQogICAg
IGNhc2UgU1ZHX0FOR0xFVFlQRV9HUkFEOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGdyYWRTdHJpbmcsIChBU0NJSUxpdGVyYWwoImdyYWQiKSkpOwot
ICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsg
Z3JhZFN0cmluZzsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZ3JhZFN0
cmluZyhBU0NJSUxpdGVyYWwoImdyYWQiKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJl
cihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyBncmFkU3RyaW5nLmdldCgpOwogICAgIH0KICAg
ICBjYXNlIFNWR19BTkdMRVRZUEVfVU5TUEVDSUZJRUQ6CiAgICAgY2FzZSBTVkdfQU5HTEVUWVBF
X1VOS05PV046CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9y
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5j
cHAKaW5kZXggZDQ0OTJhZC4uMGZiNmQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlQ29sb3JFbGVtZW50LmNwcApAQCAtMzksNyArMzksNyBAQCBSZWY8U1ZHQW5pbWF0ZUNv
bG9yRWxlbWVudD4gU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmCiAKIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlSXNDdXJyZW50Q29sb3IoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBjdXJyZW50Q29sb3IsICgiY3VycmVudENvbG9yIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IGN1cnJlbnRDb2xvcigiY3VycmVudENvbG9yIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHZhbHVlID09IGN1cnJlbnRD
b2xvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHAKaW5kZXggNDk2YzJmMy4uNzljMDRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0xMDgsOCArMTA4LDggQEAgdm9pZCBTVkdB
bmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXQKICAgICAKIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpSb3RhdGVNb2Rl
IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3RhdGVNb2RlKCkgY29uc3QKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhdXRvVmFsLCAo
ImF1dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYXV0b1JldmVyc2Us
ICgiYXV0by1yZXZlcnNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGF1dG9WYWwoImF1
dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBhdXRvUmV2ZXJzZSgiYXV0by1yZXZlcnNl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiByb3RhdGUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpOwogICAg
IGlmIChyb3RhdGUgPT0gYXV0b1ZhbCkKICAgICAgICAgcmV0dXJuIFJvdGF0ZUF1dG87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKaW5kZXggMzQ2MjhhZC4uZWIx
MjQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcApAQCAt
Mjg2LDEwICsyODYsMTAgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRp
b25Nb2RlKCkKIAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZShjb25zdCBB
dG9taWNTdHJpbmcmIGNhbGNNb2RlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRpc2NyZXRlLCAoImRpc2NyZXRlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGxpbmVhciwgKCJsaW5lYXIiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgcGFjZWQsICgicGFjZWQiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3BsaW5lLCAoInNwbGluZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiBkaXNjcmV0ZSgiZGlzY3JldGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBsaW5lYXIoImxpbmVhciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHBhY2VkKCJw
YWNlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNwbGluZSgic3BsaW5lIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGNhbGNNb2RlID09IGRpc2Ny
ZXRlKQogICAgICAgICBzZXRDYWxjTW9kZShDYWxjTW9kZURpc2NyZXRlKTsKICAgICBlbHNlIGlm
IChjYWxjTW9kZSA9PSBsaW5lYXIpCkBAIC0zMDQsOCArMzA0LDggQEAgdm9pZCBTVkdBbmltYXRp
b25FbGVtZW50OjpzZXRDYWxjTW9kZShjb25zdCBBdG9taWNTdHJpbmcmIGNhbGNNb2RlKQogCiB2
b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnNldEF0dHJpYnV0ZVR5cGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBhdHRyaWJ1dGVUeXBlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGNzcywgKCJDU1MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgeG1sLCAoIlhNTCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBj
c3MoIkNTUyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHhtbCgiWE1MIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGF0dHJpYnV0ZVR5cGUgPT0gY3Nz
KQogICAgICAgICBtX2F0dHJpYnV0ZVR5cGUgPSBBdHRyaWJ1dGVUeXBlQ1NTOwogICAgIGVsc2Ug
aWYgKGF0dHJpYnV0ZVR5cGUgPT0geG1sKQpAQCAtMzMyLDE0ICszMzIsMTQgQEAgU3RyaW5nIFNW
R0FuaW1hdGlvbkVsZW1lbnQ6OmZyb21WYWx1ZSgpIGNvbnN0CiAKIGJvb2wgU1ZHQW5pbWF0aW9u
RWxlbWVudDo6aXNBZGRpdGl2ZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VtLCAoInN1bSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiBzdW0oInN1bSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKFNW
R05hbWVzOjphZGRpdGl2ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBzdW0gfHwgYW5pbWF0
aW9uTW9kZSgpID09IEJ5QW5pbWF0aW9uOwogfQogCiBib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6
OmlzQWNjdW11bGF0ZWQoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1bSwgKCJzdW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gc3VtKCJzdW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShTVkdOYW1l
czo6YWNjdW11bGF0ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBzdW0gJiYgYW5pbWF0aW9u
TW9kZSgpICE9IFRvQW5pbWF0aW9uOwogfQpAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6YWRqdXN0Rm9ySW5oZXJpdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxl
bWVudCwgY29uc3QKIAogc3RhdGljIGJvb2wgaW5oZXJpdHNGcm9tUHJvcGVydHkoU1ZHRWxlbWVu
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgaW5oZXJpdCwgKCJpbmhlcml0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGlu
aGVyaXQoImluaGVyaXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICAKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpIHx8IHZhbHVlICE9IGluaGVyaXQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuY3BwCmluZGV4IDFmYWVhNTMuLmRkZjkyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApAQCAtNzUsMjUgKzc1
LDI1IEBAIFJlZjxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudD4gU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVu
dGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNf
aWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0aFgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWUlk
ZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6b3JkZXJY
SWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR09yZGVyWCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBzX2lkZW50aWZpZXIoIlNWR09yZGVyWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om9yZGVyWUlkZW50aWZpZXIoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmll
ciwgKCJTVkdPcmRlclkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdP
cmRlclkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4g
c19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IGJhMmEzZDQuLjEyZmEwYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC02
MywxMyArNjMsMTMgQEAgUmVmPFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudD4gU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGkKIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRp
ZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
Zywgc19pZGVudGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0aFgiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6a2VybmVsVW5p
dExlbmd0aFlJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHS2VybmVsVW5pdExlbmd0aFkiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0TGVuZ3RoWSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50
aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFk
b3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50
LmNwcAppbmRleCBhZWUwOGRkLi5mOTNkYWNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcApAQCAtNjIsMTMgKzYyLDEzIEBAIFJlZjxTVkdGRURy
b3BTaGFkb3dFbGVtZW50PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURyb3BTaGFkb3dFbGVtZW50
OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1N0ZERldmlhdGlvblgi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGREZXZpYXRpb25YIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRp
ZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojpz
dGREZXZpYXRpb25ZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1N0ZERldmlhdGlvblkiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGREZXZpYXRpb25ZIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmll
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcAppbmRleCAyMmMxNzhiLi43YjIxZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcApAQCAtNTcsMTMgKzU3LDEzIEBAIFJlZjxTVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQ+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1N0ZERldmlh
dGlvblgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGREZXZpYXRp
b25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNf
aWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHU3RkRGV2aWF0
aW9uWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR1N0ZERldmlhdGlv
blkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19p
ZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxl
bWVudC5jcHAKaW5kZXggNTlmMDdkMi4uMzM3MGUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtNTYsMTMgKzU2LDEzIEBAIFJlZjxTVkdG
RU1vcnBob2xvZ3lFbGVtZW50PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRU1vcnBob2xvZ3lFbGVt
ZW50OjpyYWRpdXNYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1JhZGl1c1giLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdSYWRpdXNYIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpyYWRpdXNZSWRlbnRpZmll
cigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
c19pZGVudGlmaWVyLCAoIlNWR1JhZGl1c1kiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVu
dGlmaWVyKCJTVkdSYWRpdXNZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IGZlZjdlZWQuLjE5ZjVk
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5jcHAKQEAgLTY3LDEzICs2NywxMyBAQCBSZWY8U1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5l
bFVuaXRMZW5ndGhYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRMZW5ndGhY
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0
aFgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19p
ZGVudGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0tl
cm5lbFVuaXRMZW5ndGhZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZH
S2VybmVsVW5pdExlbmd0aFkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5jcHAKaW5kZXggODZkY2FmMS4uYjgwOGJkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcApAQCAtNjEsMTMgKzYx
LDEzIEBAIFJlZjxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50PiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50OjpiYXNlRnJlcXVlbmN5WElkZW50aWZpZXIoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwg
KCJTVkdCYXNlRnJlcXVlbmN5WCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIo
IlNWR0Jhc2VGcmVxdWVuY3lYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50OjpiYXNlRnJlcXVlbmN5WUlkZW50aWZpZXIoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwg
KCJTVkdCYXNlRnJlcXVlbmN5WSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIo
IlNWR0Jhc2VGcmVxdWVuY3lZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuY3BwCmluZGV4IGYzMmMzMmYuLjBhNzVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTgyLDEzICs4MiwxMyBAQCBSZWY8U1ZHRmlsdGVyRWxl
bWVudD4gU1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvYwogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZpbHRlckVsZW1lbnQ6OmZpbHRlclJl
c1hJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHRmlsdGVyUmVzWCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0ZpbHRlclJlc1giLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFNWR0ZpbHRlckVsZW1lbnQ6OmZpbHRlclJlc1lJZGVudGlmaWVyKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50
aWZpZXIsICgiU1ZHRmlsdGVyUmVzWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZp
ZXIoIlNWR0ZpbHRlclJlc1kiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR2x5cGhNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCmlu
ZGV4IGI3NDdjNmQuLmNlMGI2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
bHlwaE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCkBAIC0xNDMs
NyArMTQzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFNWR0dseXBoJiBzdmdHbHlwaEZvckdseXBo
KEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFnbHlwaCB8fCBnbHlwaCA+
IG1fZ2x5cGhUYWJsZS5zaXplKCkpIHsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTVkdHbHlwaCwgZGVmYXVsdEdseXBoLCAoKSk7CisgICAgICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U1ZHR2x5cGg+IGRlZmF1bHRHbHlwaDsKICAgICAgICAgICAgIHJl
dHVybiBkZWZhdWx0R2x5cGg7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fZ2x5cGhUYWJs
ZVtnbHlwaCAtIDFdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcAppbmRleCA0OGJlMGRj
Li5iNjUxODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcApAQCAtMzUsNyArMzUs
NyBAQCB2b2lkIFNWR0xhbmdTcGFjZTo6c2V0WG1sbGFuZyhjb25zdCBBdG9taWNTdHJpbmcmIHht
bExhbmcpCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0xhbmdTcGFjZTo6eG1sc3BhY2UoKSBjb25z
dAogewogICAgIGlmICghbV9zcGFjZSkgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZWZhdWx0U3RyaW5nLCAoImRlZmF1bHQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRlZmF1bHRTdHJpbmcoImRlZmF1bHQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmV0dXJuIGRlZmF1
bHRTdHJpbmc7CiAgICAgfQogCkBAIC02Miw3ICs2Miw3IEBAIGJvb2wgU1ZHTGFuZ1NwYWNlOjpp
c0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIAogdm9p
ZCBTVkdMYW5nU3BhY2U6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGFzaFNldDxRdWFsaWZpZWRO
YW1lPiYgc3VwcG9ydGVkQXR0cmlidXRlcykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4bWxQcmVmaXgsICgieG1sIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IHhtbFByZWZpeCgieG1sIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAKICAgICBRdWFsaWZpZWROYW1lIGxhbmdXaXRoUHJlZml4ID0gWE1MTmFtZXM6OmxhbmdB
dHRyOwogICAgIGxhbmdXaXRoUHJlZml4LnNldFByZWZpeCh4bWxQcmVmaXgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCmluZGV4IDA2Njg3ZjIuLmRmOTZlYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKQEAgLTkwLDEzICs5MCwxMyBAQCBS
ZWY8U1ZHTWFya2VyRWxlbWVudD4gU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvYwogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR01hcmtlckVs
ZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHT3JpZW50VHlwZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR09yaWVudFR5cGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVy
OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR01hcmtlckVsZW1lbnQ6Om9yaWVudEFuZ2xl
SWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR09yaWVudEFuZ2xlIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHT3JpZW50QW5nbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCkBAIC0yMzcs
NyArMjM3LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUo
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgaWYgKG93bmVyVHlwZS5tX29yaWVudFR5
cGUudmFsdWUgIT0gU1ZHTWFya2VyT3JpZW50QXV0bykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYXV0b1N0cmluZywg
KCJhdXRvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1dG9TdHJpbmcoImF1dG8iLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBvd25lclR5cGUubV9vcmllbnRUeXBl
LnN5bmNocm9uaXplKCZvd25lclR5cGUsIG9yaWVudFR5cGVQcm9wZXJ0eUluZm8oKS0+YXR0cmli
dXRlTmFtZSwgYXV0b1N0cmluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVu
dC5jcHAKaW5kZXggOGFjMjhkYS4uMDQ1YWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
RWxlbWVudC5jcHAKQEAgLTYyLDkgKzYyLDkgQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnNldERp
c2FibGVkKGJvb2wgc2V0RGlzYWJsZWQpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU3R5bGVF
bGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZWZhdWx0VmFsdWUsICgidGV4dC9jc3MiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21pY1N0cmluZz4gZGVmYXVsdFZhbHVlKCJ0ZXh0L2NzcyIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbiA9IGdl
dEF0dHJpYnV0ZShTVkdOYW1lczo6dHlwZUF0dHIpOwotICAgIHJldHVybiBuLmlzTnVsbCgpID8g
ZGVmYXVsdFZhbHVlIDogbjsKKyAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZS5n
ZXQoKSA6IG47CiB9CiAKIHZvaWQgU1ZHU3R5bGVFbGVtZW50OjpzZXRUeXBlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC03NCw5ICs3NCw5IEBAIHZvaWQgU1ZH
U3R5bGVFbGVtZW50OjpzZXRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRXhjZXB0aW9u
Q29kZSYpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU3R5bGVFbGVtZW50OjptZWRpYSgpIGNv
bnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgZGVmYXVsdFZhbHVlLCAoImFsbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBk
ZWZhdWx0VmFsdWUoImFsbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbiA9IGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6Om1l
ZGlhQXR0cik7Ci0gICAgcmV0dXJuIG4uaXNOdWxsKCkgPyBkZWZhdWx0VmFsdWUgOiBuOworICAg
IHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVlLmdldCgpIDogbjsKIH0KIAogdm9pZCBT
VkdTdHlsZUVsZW1lbnQ6OnNldE1lZGlhKGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWEsIEV4Y2Vw
dGlvbkNvZGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcAppbmRleCBlOGEzZjEyLi4y
MTFhZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTEzNCwyNyArMTM1LDI3IEBAIGNvbnN0IFN0cmluZyYgU1ZHVHJhbnNm
b3JtOjp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyhTVkdUcmFuc2Zvcm1UeXBlIHR5cGUp
CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1VOS05PV046CiAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9NQVRSSVg6IHsKLSAgICAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbWF0cml4U3RyaW5nLCAoQVNDSUlMaXRl
cmFsKCJtYXRyaXgoIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
bWF0cml4U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWF0cml4KCIpKTsKICAgICAgICAgcmV0dXJuIG1h
dHJpeFN0cmluZzsKICAgICB9CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1RSQU5TTEFURTogewot
ICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0cmFuc2xhdGVT
dHJpbmcsIChBU0NJSUxpdGVyYWwoInRyYW5zbGF0ZSgiKSkpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiB0cmFuc2xhdGVTdHJpbmcoQVNDSUlMaXRlcmFsKCJ0cmFuc2xh
dGUoIikpOwogICAgICAgICByZXR1cm4gdHJhbnNsYXRlU3RyaW5nOwogICAgIH0KICAgICBjYXNl
IFNWR19UUkFOU0ZPUk1fU0NBTEU6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgc2NhbGVTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNjYWxlKCIpKSk7Cisg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNjYWxlU3RyaW5nKEFTQ0lJTGl0
ZXJhbCgic2NhbGUoIikpOwogICAgICAgICByZXR1cm4gc2NhbGVTdHJpbmc7CiAgICAgfQogICAg
IGNhc2UgU1ZHX1RSQU5TRk9STV9ST1RBVEU6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgcm90YXRlU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJyb3RhdGUo
IikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcm90YXRlU3RyaW5n
KEFTQ0lJTGl0ZXJhbCgicm90YXRlKCIpKTsKICAgICAgICAgcmV0dXJuIHJvdGF0ZVN0cmluZzsK
ICAgICB9ICAgIAogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWDogewotICAgICAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBza2V3WFN0cmluZywgKEFTQ0lJTGl0
ZXJhbCgic2tld1goIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
c2tld1hTdHJpbmcoQVNDSUlMaXRlcmFsKCJza2V3WCgiKSk7CiAgICAgICAgIHJldHVybiBza2V3
WFN0cmluZzsKICAgICB9CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NLRVdZOiB7Ci0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNrZXdZU3RyaW5nLCAoQVND
SUlMaXRlcmFsKCJza2V3WSgiKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBza2V3WVN0cmluZyhBU0NJSUxpdGVyYWwoInNrZXdZKCIpKTsKICAgICAgICAgcmV0dXJu
IHNrZXdZU3RyaW5nOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVmlld1NwZWMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcApp
bmRleCBhYzg2ZWUzLi4wMDk4Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vmlld1NwZWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKQEAg
LTg0LDE5ICs4NCwxOSBAQCBTVkdWaWV3U3BlYzo6U1ZHVmlld1NwZWMoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHVmlld1NwZWM6OnZpZXdCb3hJ
ZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHVmlld1NwZWNWaWV3Qm94QXR0cmlidXRlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHVmlld1NwZWNWaWV3Qm94QXR0cmli
dXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNf
aWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdWaWV3U3BlYzo6cHJlc2Vy
dmVBc3BlY3RSYXRpb0lkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdWaWV3U3BlY1ByZXNlcnZl
QXNwZWN0UmF0aW9BdHRyaWJ1dGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVy
KCJTVkdWaWV3U3BlY1ByZXNlcnZlQXNwZWN0UmF0aW9BdHRyaWJ1dGUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIFNWR1ZpZXdTcGVjOjp0cmFuc2Zvcm1JZGVudGlmaWVyKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50
aWZpZXIsICgiU1ZHVmlld1NwZWNUcmFuc2Zvcm1BdHRyaWJ1dGUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gc19pZGVudGlmaWVyKCJTVkdWaWV3U3BlY1RyYW5zZm9ybUF0dHJpYnV0ZSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5j
cHAKaW5kZXggMzU2OGJlNC4uNDQxMGI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2Fu
aW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBTTUlMVGltZSBT
VkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICAK
ICAgICBTdHJpbmcgcGFyc2UgPSBkYXRhLnN0cmlwV2hpdGVTcGFjZSgpOwogCi0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgaW5kZWZpbml0ZVZh
bHVlLCAoImluZGVmaW5pdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gaW5kZWZpbml0
ZVZhbHVlKCJpbmRlZmluaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgaWYgKHBhcnNlID09IGluZGVmaW5pdGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIFNNSUxU
aW1lOjppbmRlZmluaXRlKCk7CiAKQEAgLTQ1MiwxOSArNDUyLDE5IEBAIHZvaWQgU1ZHU01JTEVs
ZW1lbnQ6OnBhcnNlQmVnaW5PckVuZChjb25zdCBTdHJpbmcmIHBhcnNlU3RyaW5nLCBCZWdpbk9y
RW5kIGJlZ2luCiAKIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChIYXNoU2V0PFF1YWxpZmllZE5hbWU+LCBzdXBwb3J0ZWRBdHRyaWJ1dGVzLCAo
KSk7Ci0gICAgaWYgKHN1cHBvcnRlZEF0dHJpYnV0ZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN1
cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjpiZWdpbkF0dHIpOwotICAgICAgICBzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6ZW5kQXR0cik7Ci0gICAgICAgIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjpkdXJBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0
cmlidXRlcy5hZGQoU1ZHTmFtZXM6OnJlcGVhdER1ckF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRB
dHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6cmVwZWF0Q291bnRBdHRyKTsKLSAgICAgICAgc3VwcG9y
dGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6Om1pbkF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRB
dHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6bWF4QXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJp
YnV0ZXMuYWRkKFNWR05hbWVzOjphdHRyaWJ1dGVOYW1lQXR0cik7Ci0gICAgICAgIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuYWRkKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVkQXR0cmlidXRlczsKKyAg
ICBpZiAoc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc3Vw
cG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmJlZ2luQXR0cik7CisgICAgICAg
IHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjplbmRBdHRyKTsKKyAgICAg
ICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmR1ckF0dHIpOworICAg
ICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6cmVwZWF0RHVyQXR0
cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpyZXBl
YXRDb3VudEF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdO
YW1lczo6bWluQXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNW
R05hbWVzOjptYXhBdHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQo
U1ZHTmFtZXM6OmF0dHJpYnV0ZU5hbWVBdHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRl
cy5nZXQoKS5hZGQoWExpbmtOYW1lczo6aHJlZkF0dHIpOwogICAgIH0KLSAgICByZXR1cm4gc3Vw
cG9ydGVkQXR0cmlidXRlcy5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0
ck5hbWUpOworICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNW
R0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKIHZvaWQgU1ZHU01JTEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCkBAIC02NDMsOCArNjQzLDggQEAgYm9vbCBTVkdTTUlMRWxlbWVu
dDo6aXNGcm96ZW4oKSBjb25zdAogICAgIAogU1ZHU01JTEVsZW1lbnQ6OlJlc3RhcnQgU1ZHU01J
TEVsZW1lbnQ6OnJlc3RhcnQoKSBjb25zdAogeyAgICAKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBuZXZlciwgKCJuZXZlciIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB3aGVuTm90QWN0aXZlLCAoIndoZW5Ob3RBY3Rp
dmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbmV2ZXIoIm5ldmVyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gd2hlbk5vdEFjdGl2ZSgid2hlbk5vdEFjdGl2ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUgPSBmYXN0R2V0QXR0cmlidXRlKFNWR05hbWVzOjpyZXN0YXJ0QXR0cik7CiAgICAgaWYgKHZh
bHVlID09IG5ldmVyKQogICAgICAgICByZXR1cm4gUmVzdGFydE5ldmVyOwpAQCAtNjU1LDcgKzY1
NSw3IEBAIFNWR1NNSUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NNSUxFbGVtZW50OjpyZXN0YXJ0KCkg
Y29uc3QKICAgICAKIFNWR1NNSUxFbGVtZW50OjpGaWxsTW9kZSBTVkdTTUlMRWxlbWVudDo6Zmls
bCgpIGNvbnN0CiB7ICAgCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgZnJlZXplLCAoImZyZWV6ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBmcmVlemUoImZyZWV6ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKFNWR05h
bWVzOjpmaWxsQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09IGZyZWV6ZSA/IEZpbGxGcmVlemUg
OiBGaWxsUmVtb3ZlOwogfQpAQCAtNjg4LDcgKzY4OCw3IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVt
ZW50OjpyZXBlYXRDb3VudCgpIGNvbnN0CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKIAotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGluZGVmaW5pdGVWYWx1ZSwgKCJpbmRl
ZmluaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGluZGVmaW5pdGVWYWx1ZSgiaW5k
ZWZpbml0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICh2
YWx1ZSA9PSBpbmRlZmluaXRlVmFsdWUpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6aW5kZWZp
bml0ZSgpOwogICAgIGJvb2wgb2s7CkBAIC0xMTQzLDE2ICsxMTQzLDE2IEBAIGJvb2wgU1ZHU01J
TEVsZW1lbnQ6OnByb2dyZXNzKFNNSUxUaW1lIGVsYXBzZWQsIFNWR1NNSUxFbGVtZW50KiByZXN1
bHRFbGVtZW50LCBiCiB2b2lkIFNWR1NNSUxFbGVtZW50Ojpub3RpZnlEZXBlbmRlbnRzSW50ZXJ2
YWxDaGFuZ2VkKE5ld09yRXhpc3RpbmdJbnRlcnZhbCBuZXdPckV4aXN0aW5nKQogewogICAgIEFT
U0VSVChtX2ludGVydmFsQmVnaW4uaXNGaW5pdGUoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEhhc2hTZXQ8U1ZHU01JTEVsZW1lbnQqPiwgbG9vcEJyZWFrZXIsICgpKTsK
LSAgICBpZiAobG9vcEJyZWFrZXIuY29udGFpbnModGhpcykpCisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U1ZHU01JTEVsZW1lbnQqPj4gbG9vcEJyZWFrZXI7CisgICAgaWYgKGxv
b3BCcmVha2VyLmdldCgpLmNvbnRhaW5zKHRoaXMpKQogICAgICAgICByZXR1cm47Ci0gICAgbG9v
cEJyZWFrZXIuYWRkKHRoaXMpOworICAgIGxvb3BCcmVha2VyLmdldCgpLmFkZCh0aGlzKTsKICAg
ICAKICAgICBmb3IgKGF1dG8mIGRlcGVuZGVudCA6IG1fdGltZURlcGVuZGVudHMpIHsKICAgICAg
ICAgZGVwZW5kZW50LT5jcmVhdGVJbnN0YW5jZVRpbWVzRnJvbVN5bmNiYXNlKHRoaXMsIG5ld09y
RXhpc3RpbmcpOwogICAgIH0KIAotICAgIGxvb3BCcmVha2VyLnJlbW92ZSh0aGlzKTsKKyAgICBs
b29wQnJlYWtlci5nZXQoKS5yZW1vdmUodGhpcyk7CiB9CiAgICAgCiB2b2lkIFNWR1NNSUxFbGVt
ZW50OjpjcmVhdGVJbnN0YW5jZVRpbWVzRnJvbVN5bmNiYXNlKFNWR1NNSUxFbGVtZW50KiBzeW5j
YmFzZSwgTmV3T3JFeGlzdGluZ0ludGVydmFsKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268573</attachid>
            <date>2016-01-08 12:49:31 -0800</date>
            <delta_ts>2016-01-08 13:23:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152902-5.diff</filename>
            <type>text/plain</type>
            <size>264819</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KaW5k
ZXggZWY1NDYwMi4uNzIzNjg3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSVdyYXBwZXJPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSVdyYXBwZXJPYmplY3QubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NhbGxi
YWNrT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCkBAIC00MSw4ICs0Miw4IEBAIHB1YmxpYzoKIAogc3Rh
dGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmplY3RIYW5k
bGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEpTQVBJV3Jh
cHBlck9iamVjdEhhbmRsZU93bmVyLCBqc1dyYXBwZXJPYmplY3RIYW5kbGVPd25lciwgKCkpOwot
ICAgIHJldHVybiAmanNXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyPiBqc1dyYXBwZXJPYmplY3RI
YW5kbGVPd25lcjsKKyAgICByZXR1cm4gJmpzV3JhcHBlck9iamVjdEhhbmRsZU93bmVyLmdldCgp
OwogfQogCiB2b2lkIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRleCBhNzJkMTliLi4xYzFmN2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgIldlYWtIYW5kbGVPd25lci5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRy
YXMuaCIKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9OU01hcFRhYmxlU1BJLmg+CiAKIGNsYXNzIEpT
TWFuYWdlZFZhbHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpA
QCAtNDcsOCArNDgsOCBAQCBwdWJsaWM6CiAKIHN0YXRpYyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyKiBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIsIGpzTWFuYWdlZFZhbHVlSGFu
ZGxlT3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI+IGpzTWFu
YWdlZFZhbHVlSGFuZGxlT3duZXI7CisgICAgcmV0dXJuICZqc01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyLmdldCgpOwogfQogCiBjbGFzcyBXZWFrVmFsdWVSZWYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggYTFlMDlhOC4uYmQ5ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTYtMDEtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTAorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyOTAyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3RseSBt
ZWNoYW5pY2FsIGNvbnZlcnNpb24gdG8gTmV2ZXJEZXN0cm95ZWQgdGhyb3VnaG91dC4KKworICAg
ICAgICAqIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QubW06CisgICAgICAgIChqc0FQSVdyYXBwZXJP
YmplY3RIYW5kbGVPd25lcik6CisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLm1tOgorICAg
ICAgICAobWFuYWdlZFZhbHVlSGFuZGxlT3duZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om9iamVj
dEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbik6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yOjphbGxv
Y2F0b3JzKToKKwogMjAxNi0wMS0wNiAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIERhdGUucHJvdG90eXBlIHNob3VsZCBiZSBhIHBs
YWluIG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlYzc3YTc0
Li44M2Q3ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUyLDggKzUzLDggQEAgY29uc3QgY2hhciogSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXAgPSAiYmFja3RyYWNlIjsKIC8vIGNy
ZWF0ZSBvYmplY3RzIGluIHRoZSBzYW1lIGdyb3VwLgogc3RhdGljIFN0cmluZyBvYmplY3RHcm91
cEZvckJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW9u
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIG9iamVjdEdyb3VwLCAoImJyZWFrcG9pbnQtYWN0aW9uLSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cCwg
U3RyaW5nOjpudW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBvYmplY3RHcm91cChBU0NJSUxpdGVyYWwoImJyZWFrcG9pbnQtYWN0aW9u
LSIpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cC5nZXQoKSwgU3RyaW5nOjpu
dW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKIH0KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBkMjkx
MWEzLi43YWJhZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAKQEAgLTEzNCw4ICsxMzQsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxQYWdlUmVzZXJ2YXRpb24sIDE2PiByZXNlcnZhdGlvbnM7CiAgICAgc3RhdGljIEhhc2hTZXQ8
RGVtYW5kRXhlY3V0YWJsZUFsbG9jYXRvcio+JiBhbGxvY2F0b3JzKCkKICAgICB7Ci0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PERlbWFuZEV4ZWN1dGFibGVB
bGxvY2F0b3IqPiwgc0FsbG9jYXRvcnMsICgpKTsKLSAgICAgICAgcmV0dXJuIHNBbGxvY2F0b3Jz
OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxEZW1hbmRFeGVjdXRhYmxl
QWxsb2NhdG9yKj4+IHNldDsKKyAgICAgICAgcmV0dXJuIHNldDsKICAgICB9CiAKICAgICBzdGF0
aWMgU3RhdGljTG9jayYgYWxsb2NhdG9yc011dGV4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMjY4MjQyZi4uNzM0MzQzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMS0wOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
NTI5MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW9zdGx5IG1lY2hhbmljYWwgY29udmVyc2lvbiB0byBOZXZlckRlc3Ryb3llZCB0aHJvdWdob3V0
LgorCisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpj
dXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAo
V1RGOjp0aHJlYWRNYXBNdXRleCk6CisgICAgICAgIChXVEY6OnRocmVhZE1hcCk6CisKIDIwMTYt
MDEtMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEFsbG93IHRvIHNhdmUgYW5kIHJlc3RvcmUgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApp
bmRleCBlMzUyOTBkLi43MDFjMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29w
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KIApAQCAtNTYsOCArNTcsOCBAQCB2b2lkIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpCiAKIFJ1bkxvb3AmIFJ1bkxvb3A6OmN1cnJlbnQo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlRocmVhZFNwZWNp
ZmljPFJ1bkxvb3A6OkhvbGRlcj4sIHJ1bkxvb3BIb2xkZXIsICgpKTsKLSAgICByZXR1cm4gcnVu
TG9vcEhvbGRlci0+cnVuTG9vcCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaHJlYWRT
cGVjaWZpYzxIb2xkZXI+PiBydW5Mb29wSG9sZGVyOworICAgIHJldHVybiBydW5Mb29wSG9sZGVy
LmdldCgpLT5ydW5Mb29wKCk7CiB9CiAKIFJ1bkxvb3AmIFJ1bkxvb3A6Om1haW4oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IGE5N2NmMzIuLjcwNWYzNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJU
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3BlY2lmaWMu
aCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SYXdQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVh
ZERhdGEuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtOTksNyArMTAwLDcgQEAgdm9pZCB0aHJl
YWRXYXNKb2luZWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIHN0YXRpYyBNdXRleCYgdGhyZWFkTWFw
TXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0
ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0ZXg+IG11dGV4OwogICAgIHJl
dHVybiBtdXRleDsKIH0KIApAQCAtMTI1LDcgKzEyNiw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpCiAKIHN0YXRpYyBUaHJlYWRNYXAmIHRocmVhZE1hcCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRocmVhZE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFRocmVhZE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkYzdlMmNmLi45MGY5NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTI0IEBACisy
MDE2LTAxLTA4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCBvZiBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0bHkgbWVjaGFuaWNhbCBjb252
ZXJzaW9uIHRvIE5ldmVyRGVzdHJveWVkIHRocm91Z2hvdXQuCisKKyAgICAgICAgKiBNb2R1bGVz
L2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmRpcmVjdGlvbk5leHRVbmlxdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJl
Y3Rpb25QcmV2KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVu
aXF1ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5UmVxdWVzdDo6cmVhZHlTdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om9wZW5L
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRlZEtleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKToKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChX
ZWJDb3JlOjpxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNNaW1lVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNGaWxlRXh0
ZW5zaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUpOgor
ICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKToKKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFJlc29sdXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZSk6
CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldCk6CisgICAgICAgICog
ZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjdW11
bGF0b3JNYXApOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc1N1cHBvcnRlZFNWRzEwRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c1N1cHBvcnRlZFNWRzExRmVhdHVyZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWFkeVN0YXRlKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0
KToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayk6CisgICAgICAgICogZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ1NT
Q29udGVudFR5cGUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OnN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNv
cmQuY3BwOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBzZXVkb0VsZW1lbnRUYWdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1l
bnQ6OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVk
TmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdWFsaWZpZWROYW1lQ2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6bnVsbFFOYW1lKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0xlZ2FjeVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dHlsZVNwYW5DbGFzc1N0cmluZyk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFt
ZXNwYWNlRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0ludGVyY2hhbmdlTmV3bGluZU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5nZUNvbnZlcnRlZFNwYWNlU3Bhbik6CisgICAgICAg
ICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub25CcmVha2lu
Z1NwYWNlU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c3R5bGVOb2RlQ2xvc2VUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwSW50ZXJuYWwpOgorICAgICAgICAqIGZpbGVhcGkv
QmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KToK
KyAgICAgICAgKiBodG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAg
ICAgKiBodG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVU
aW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVM
b2NhbElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRU
eXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRW1haWxJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEVtYWlsQWRkcmVzcyk6CisgICAgICAgICogaHRt
bC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtS2V5R2VuZXJhdG9y
Ojpmb3JtS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1TdGF0ZVNpZ25hdHVyZSk6CisgICAg
ICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyb290
RWRpdGFibGVFbGVtZW50TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxv
YWRpbmdEaXNhYmxlcjo6ZGlzYWJsZWRTdWJ0cmVlUm9vdHMpOgorICAgICAgICAqIGh0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6
OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bGlua0xvYWRFdmVudFNlbmRlcik6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50VG9FbGVtZW50
U2V0TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzUmVjb2duaXplZFRhZ05hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpm
b3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGl0bGVUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OnN1YnRpdGxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkpOgorICAgICAgICAqIGh0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmZv
cm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpcmVjdGlvblN0cmluZyk6CisgICAg
ICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlu
cHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlTmFtZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmJ1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6Y2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlTmFtZXM6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVz
OjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpkYXRldGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OmZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Omhp
ZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6aW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Om1vbnRoKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZU5hbWVzOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6
OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpyYWRpbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6cmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5h
bWVzOjpzZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OndlZWspOgorICAgICAgICAqIGh0
bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHBsYXliYWNrU3RhdGVXYWl0aW5nKToK
KyAgICAgICAgKHBsYXliYWNrU3RhdGVQbGF5aW5nKToKKyAgICAgICAgKHBsYXliYWNrU3RhdGVF
bmRlZCk6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb250aElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL051
bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNy
ZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAg
KiBodG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFjY2Vw
dGFibGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JT
dGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3RlcE1pc21hdGNoKToKKyAgICAg
ICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJbWFnZURhdGEpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNT
QXVkaXRvcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRD
YXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50U2hhZG93UHNldWRv
SWQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRv
d0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6Ok1ldGVy
SW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1ldGVyVmFsdWVFbGVtZW50Ojp2YWx1
ZVBzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpt
ZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpjaGFwdGVyc0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjptZXRhZGF0YUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Ojpmb3JjZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6ZGlzYWJsZWRL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6aGlkZGVuS2V5d29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
OjpjdWVTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhcnRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Om1pZGRs
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpyaWdodEtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6dmVydGljYWxHcm93aW5nTGVmdEtleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6dmVydGljYWxHcm93aW5nUmlnaHRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1
ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6Om1h
cmtGdXR1cmVBbmRQYXN0Tm9kZXMpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUUmVnaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNv
cmU6OlZUVFJlZ2lvbjo6c2V0U2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6
cGFyc2VTZXR0aW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjp0ZXh0VHJh
Y2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcyk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRl
b1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6bWFpbktleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2lnbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6c3VidGl0bGVzS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpj
b21tZW50YXJ5S2V5d29yZCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVUeXBlVG9UYWdOYW1lKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNvbGxlY3RNZXRhZGF0YUhl
YWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVQc2V1ZG9DbGFzc01hc2spOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgor
ICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJl
dmVudGVkTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmluaXRpYXRv
ck5hbWUpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKToKKyAgICAg
ICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKToK
KyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tn
cm91bmRDU1MpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MpOgorICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2
YVNjcmlwdFVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJ
bmxpbmVFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6d2luZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyk6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpkcmFnU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9jdXNEaXJlY3Rpb25Gb3JL
ZXkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmFzZTo6cGxhdGZvcm0pOgorICAgICAgICAqIHBhZ2Uv
UGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlVmlzaWJpbGl0
eVN0YXRlU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om9yaWdpbkFjY2Vzc01hcCk6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjpwYXJzZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93Rm9yQmxlbmRpbmcpOgorICAgICAgICAqIHBh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50ZXJDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZEN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptb3ZlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnZlcnRpY2FsVGV4dEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpjZWxsQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmFs
aWFzQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Onpvb21JbkN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjp6b29tT3V0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6bm9uZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpwcm9ncmVz
c0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub0Ryb3BDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6bm90QWxsb3dlZEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjppQmVhbUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjp3YWl0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmhlbHBD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpub3J0aFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aEVhc3RS
ZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9ydGhXZXN0UmVzaXplQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNvdXRoRWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpzb3V0aFdlc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6d2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpub3J0aFNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVh
c3RXZXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoRWFzdFNvdXRoV2Vz
dFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aFdlc3RTb3V0aEVhc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29sdW1uUmVzaXplQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJvd1Jlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptaWRkbGVQ
YW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVhc3RQYW5uaW5nQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6Om5vcnRoUGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpu
b3J0aEVhc3RQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoV2VzdFBhbm5p
bmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6c291dGhQYW5uaW5nQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNvdXRoRWFzdFBhbm5pbmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
c291dGhXZXN0UGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjp3ZXN0UGFubmluZ0N1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpncmFiQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OmdyYWJiaW5nQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZWRT
dHJpbmdGb3JMb29rdXBNZW51SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZWRpYU1JTUVUeXBlTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxVUkxTY2hlbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2VjdXJlU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMpOgorICAgICAgICAoV2ViQ29yZTo6ZW1wdHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6c2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0
ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNPUlNFbmFibGVkU2NoZW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpibGFua1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxOYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25z
ZXNGb3JTdWJqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdWRpb0Rlc3RpbmF0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXBhaW50UmVjdE1hcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9y
U3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFBsYWluKToKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNo
QnVmZmVyOjpzaW5nbGV0b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpwbGF5ZXJUb1ByaXZhdGVNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxw
aGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjplZmZlY3RO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjptaW1lQ29tbW9uVHlwZXNDYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjptaW1lTW9kZXJuVHlwZXNDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0N1cnNvcklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJzb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAgICAgICgrW1dlYkNvcmVNb3Rp
b25NYW5hZ2VyIHNoYXJlZE1hbmFnZXJdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYlRo
cmVhZEdldE9ic2VydmVkQ29udGVudE1vZGlmaWVycyk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRGcm9tTlNGb250KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybVRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW06CisgICAg
ICAgIChXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpwbGF0Zm9ybUNl
bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUcmFja0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Nh
bXBsZUJveDo6dHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXApOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xpZW50Q2VydHMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5
ZWRNUlVDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNo
ZTo6Z2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2ZMb2NhbGVDYWNoZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJs
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y291bnRlck1hcHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVy
SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhl
bWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVu
c2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQ
YXRoOjp6ZXJvTGVuZ3RoTGluZWNhcFBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vblNj
YWxpbmdTdHJva2VQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2xpcHBlckZpbHRlck1hc2tlclRhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6bWFy
a2VyVGFncyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsQW5kU3Ryb2tlVGFncyk6CisgICAgICAg
IChXZWJDb3JlOjpjaGFpbmFibGVSZXNvdXJjZVRhZ3MpOgorICAgICAgICAqIHN2Zy9TVkdBbmds
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6dmFsdWVBc1N0cmluZyk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50Ojpyb3RhdGVNb2RlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRBdHRyaWJ1dGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBY2N1bXVsYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjppbmhlcml0c0Zyb21Qcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
b3JkZXJYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudDo6b3JkZXJZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmll
cik6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9u
WUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRp
b25YSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVyKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50
OjpyYWRpdXNYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpyYWRpdXNZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRp
Zmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVx
dWVuY3lZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWUlkZW50aWZp
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaE1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R2x5cGhNYXA6OnN2Z0dseXBoRm9yR2x5cGgpOgorICAgICAgICAqIHN2Zy9TVkdMYW5nU3BhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGFuZ1NwYWNlOjp4bWxzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtl
ckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01h
cmtlckVsZW1lbnQ6Om9yaWVudEFuZ2xlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUpOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6bWVkaWEpOgorICAgICAg
ICAqIHN2Zy9TVkdUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3Jt
Ojp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdT
cGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjp2aWV3Qm94SWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cHJlc2VydmVBc3BlY3RSYXRpb0lk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OnRyYW5zZm9ybUlkZW50
aWZpZXIpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU01JTEVsZW1lbnQ6OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6
OnJlcGVhdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpub3RpZnlE
ZXBlbmRlbnRzSW50ZXJ2YWxDaGFuZ2VkKToKKwogMjAxNi0wMS0wNSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIHNob3dSZW5kZXJUcmVlOiBhZGQgaW5saW5lLWJs
b2NrL2lubGluZS9ibG9jayBjb2x1bW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5jcHAKaW5kZXggNGFlNDI3ZC4uOGRjMDgzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcApAQCAtMjYsMTQgKzI2LDE2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudC5oIgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5KGJvb2wgYXZhaWxhYmxlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGF2YWlsYWJsZVN0cmluZywgKCJhdmFpbGFibGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgbm90QXZhaWxhYmxlU3RyaW5nLCAoIm5vdC1hdmFpbGFibGUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXZhaWxhYmxlU3RyaW5nKCJhdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBub3RBdmFpbGFibGVTdHJpbmcoIm5vdC1hdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIHJldHVybiBhdmFpbGFibGUg
PyBhdmFpbGFibGVTdHJpbmcgOiBub3RBdmFpbGFibGVTdHJpbmc7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA4NjM4MGUxLi4wMzY2
MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwyNSArMzksMjUgQEAgSURCQ3Vyc29yOjpJ
REJDdXJzb3IoKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4
dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bmV4dCwgKCJuZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5leHQoIm5leHQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmV4dDsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5leHR1bmlxdWUs
ICgibmV4dHVuaXF1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuZXh0dW5pcXVlKCJuZXh0dW5p
cXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5l
eHR1bmlxdWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25Q
cmV2KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBwcmV2LCAoInByZXYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcHJldigicHJldiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBwcmV2OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHJldnVuaXF1
ZSwgKCJwcmV2dW5pcXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHByZXZ1bmlxdWUoInByZXZ1
bmlxdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4g
cHJldnVuaXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDUxNzA3NzcuLjI1OWZiZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwzMSArNDAsMzEgQEAgSURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgicmVhZG9u
bHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZG9ubHkoInJlYWRvbmx5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWRvbmx5OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByZWFkd3JpdGUs
ICgicmVhZHdyaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJlYWR3cml0ZSgicmVhZHdyaXRl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3
cml0ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNp
b25DaGFuZ2UoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHZlcnNpb25jaGFuZ2UsICgidmVyc2lvbmNoYW5nZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiB2ZXJzaW9uY2hhbmdlKCJ2ZXJzaW9uY2hhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHZlcnNpb25jaGFuZ2U7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgi
MCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiByZWFkb25seSgiMCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiByZWFkb25seTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZHdyaXRlLCAo
IjEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZHdyaXRlKCIxIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3cml0ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJl
cXVlc3QuY3BwCmluZGV4IDhiMmYyMGQuLmJmY2RkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5UmVxdWVzdC5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNSwxMyAr
MTM2LDEzIEBAIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gTGVnYWN5UmVxdWVzdDo6dHJhbnNhY3Rp
b24oKSBjb25zdAogY29uc3QgU3RyaW5nJiBMZWdhY3lSZXF1ZXN0OjpyZWFkeVN0YXRlKCkgY29u
c3QKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IElEQlJlcXVlc3RSZWFkeVN0YXRlOjpQ
ZW5kaW5nIHx8IG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6RG9uZSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGVuZGluZywg
KCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRvbmUsICgiZG9uZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBwZW5kaW5nKCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gZG9uZSgiZG9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6UGVuZGluZykK
LSAgICAgICAgcmV0dXJuIHBlbmRpbmc7CisgICAgICAgIHJldHVybiBwZW5kaW5nLmdldCgpOwog
Ci0gICAgcmV0dXJuIGRvbmU7CisgICAgcmV0dXJuIGRvbmUuZ2V0KCk7CiB9CiAKIHZvaWQgTGVn
YWN5UmVxdWVzdDo6bWFya0Vhcmx5RGVhdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggODdi
YzM4Mi4uZjhmM2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCkBAIC00NSwxOSArNDUsMTkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbHNI
b3N0OjphdXRvbWF0aWNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhdXRvbWF0aWMsICgiYXV0b21hdGljIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IGF1dG9tYXRpYygiYXV0b21hdGljIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGF1dG9tYXRpYzsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IGZvcmNlZE9uLCAoImZvcmNlZC1vbmx5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZv
cmNlZE9uKCJmb3JjZWQtb25seSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBmb3JjZWRPbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHdheXNPbiwgKCJhbHdheXMtb24iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx3YXlzT24oImFsd2F5cy1vbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHdheXNPbjsKIH0KIApA
QCAtMjMwLDEyICsyMzAsMTIgQEAgU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERl
dmljZURpc3BsYXlOYW1lKCkgY29uc3QKIAogU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRl
cm5hbERldmljZVR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIG5vbmUsIChBU0NJSUxpdGVyYWwoIm5vbmUiKSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5vbmUoQVNDSUlMaXRlcmFsKCJub25lIikpOwogICAgIFN0
cmluZyB0eXBlID0gbm9uZTsKICAgICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFpcnBsYXks
IChBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHR2b3V0LCAoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXki
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFs
KCJ0dm91dCIpKTsKICAgICAKICAgICBNZWRpYVBsYXllciogcGxheWVyID0gbV9tZWRpYUVsZW1l
bnQtPnBsYXllcigpOwogICAgIGlmICghcGxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDRlMTI1NDMuLjgyOWQx
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCkBAIC05NSwxOSArOTUsMTkgQEAgTWVkaWFTb3VyY2U6On5NZWRpYVNvdXJjZSgp
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcGVu
LCAoIm9wZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gb3Blbigib3BlbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBvcGVuOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjbG9zZWQs
ICgiY2xvc2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNsb3NlZCgiY2xvc2VkIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNsb3NlZDsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZTo6ZW5kZWRLZXl3b3JkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBl
bmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7
CiB9CiAKQEAgLTQ0MCw4ICs0NDAsOCBAQCB2b2lkIE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShj
b25zdCBBdG9taWNTdHJpbmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBNZWRp
YVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3IoY29uc3QgQXRvbWljU3RyaW5nJiBlcnJvciwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgbmV0d29yaywgKCJuZXR3b3JrIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGRlY29kZSwgKCJkZWNvZGUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gbmV0d29yaygibmV0d29yayIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IGRlY29kZSgiZGVjb2RlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICBMT0coTWVkaWFTb3VyY2UsICJNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3Io
JXApIDogJXMiLCB0aGlzLCBlcnJvci5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbQppbmRleCBhYThiMDUyLi41ZTE0NjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50Lm1tCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFW
TWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqLCBKU0NvbnRlCiAKIHN0
YXRpYyBTdHJpbmcgcXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjcmlwdCwgKFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCwgc2l6ZW9mKFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50SmF2YVNjcmlwdCkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3Jp
cHQoUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0LCBzaXplb2YoUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0KSk7CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApA
QCAtODksMTMgKzg5LDEzIEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBv
cnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICAgICAgImF1ZGlvL3gtbTRy
IiwgImF1ZGlvL3gtbXAzIiwgImF1ZGlvL3gtbXBlZyIsICJhdWRpby94LW1wZWczIiwgImF1ZGlv
L3gtbXBlZ3VybCIsICJhdWRpby94LXNjcGxzIiwgImF1ZGlvL3gtd2F2IiwKICAgICAgICAgInZp
ZGVvLzNncHAiLCAidmlkZW8vM2dwcDIiLCAidmlkZW8vbXA0IiwgInZpZGVvL3F1aWNrdGltZSIs
ICJ2aWRlby94LW00diIKICAgICB9OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChIYXNoU2V0PFN0cmluZz4sIHR5cGVIYXNoLCAoKSk7Ci0gICAgaWYgKCF0eXBlSGFzaC5zaXpl
KCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB0eXBlSGFz
aDsKKyAgICBpZiAoIXR5cGVIYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodHlwZXMpOyArK2kpCi0gICAgICAgICAgICB0
eXBlSGFzaC5hZGQodHlwZXNbaV0pOworICAgICAgICAgICAgdHlwZUhhc2guZ2V0KCkuYWRkKHR5
cGVzW2ldKTsKICAgICB9CiAKLSAgICByZXR1cm4gdHlwZUhhc2guY29udGFpbnMobWltZVR5cGUp
OworICAgIHJldHVybiB0eXBlSGFzaC5nZXQoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJv
b2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTEwNSwxMyArMTA1LDEzIEBAIGJvb2wgUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikKICAgICAgICAgIm0zdTgiLCAibTRhIiwgIm00YiIsICJtNHAiLCAibTRyIiwgIm00
diIsICJtb3YiLCAibXAzIiwgIm1wMyIsICJtcDQiLCAibXBlZyIsICJtcGciLCAibXF2IiwgInBs
cyIsICJxdCIsCiAgICAgICAgICJzbmQiLCAic3dhIiwgInRzIiwgInVsdyIsICJ3YXYiCiAgICAg
fTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBl
eHRlbnNpb25IYXNoLCAoKSk7Ci0gICAgaWYgKCFleHRlbnNpb25IYXNoLnNpemUoKSkgeworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGV4dGVuc2lvbkhhc2g7Cisg
ICAgaWYgKCFleHRlbnNpb25IYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZXh0ZW5zaW9ucyk7ICsraSkKLSAgICAgICAg
ICAgIGV4dGVuc2lvbkhhc2guYWRkKGV4dGVuc2lvbnNbaV0pOworICAgICAgICAgICAgZXh0ZW5z
aW9uSGFzaC5nZXQoKS5hZGQoZXh0ZW5zaW9uc1tpXSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGV4
dGVuc2lvbkhhc2guY29udGFpbnMoZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9uSGFz
aC5nZXQoKS5jb250YWlucyhleHRlbnNpb24pOwogfQogCiBRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdp
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXMuY3BwCmluZGV4IDdmYjEzZTguLjdmMTc1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc0V2ZW50LmgiCiAjaW5jbHVkZSAiU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
QEAgLTE5Miw4ICsxOTMsOCBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6aGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuYwogICAgIAogdm9pZCBT
cGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5k
YXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgd29yZEJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ3
b3JkIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzZW50ZW5jZSIpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gd29yZEJvdW5kYXJ5U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgid29yZCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2VudGVuY2UiKSk7
CiAKICAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7CiAgICAgY2FzZSBTcGVlY2hXb3JkQm91bmRhcnk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA5MWJhMzEyLi41NGFjYjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKQEAgLTE4NCw4ICsxODQsOCBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAg
ICAgU3RyaW5nIHN0cmluZ0ZvckNhY2hlID0gU3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZyk7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ1NTUHJvcGVydHlJbmZvPiBDU1NQcm9wZXJ0eUlu
Zm9NYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5SW5m
b01hcCwgcHJvcGVydHlJbmZvQ2FjaGUsICgpKTsKLSAgICBwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0
eUluZm9DYWNoZS5nZXQoc3RyaW5nRm9yQ2FjaGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDU1NQcm9wZXJ0eUluZm9NYXA+IHByb3BlcnR5SW5mb0NhY2hlOworICAgIHByb3BlcnR5SW5m
byA9IHByb3BlcnR5SW5mb0NhY2hlLmdldCgpLmdldChzdHJpbmdGb3JDYWNoZSk7CiAgICAgaWYg
KHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwog
CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlE
Rm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICBpZiAocHJv
cGVydHlJRCkgewogICAgICAgICBwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGhh
ZFBpeGVsT3JQb3NQcmVmaXg7CiAgICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCk7Ci0gICAgICAgIHByb3BlcnR5SW5m
b0NhY2hlLmFkZChzdHJpbmdGb3JDYWNoZSwgcHJvcGVydHlJbmZvKTsKKyAgICAgICAgcHJvcGVy
dHlJbmZvQ2FjaGUuZ2V0KCkuYWRkKHN0cmluZ0ZvckNhY2hlLCBwcm9wZXJ0eUluZm8pOwogICAg
IH0KICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmNwcAppbmRleCA0NGY2NGI2Li5mYWE4OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX2luc3RhbmNlLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01Niw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBCaW5k
aW5ncyB7CiAKIHN0YXRpYyBTdHJpbmcmIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZXhjZXB0aW9uU3RyOwogICAgIHJl
dHVybiBleGNlcHRpb25TdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggYzU1
NzdiNy4uMjgzNGY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgog
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMjg4LDExICsyODksMTEgQEAgc3RhdGljIHZvaWQgYWRkUmVz
b2x1dGlvbldhcm5pbmdNZXNzYWdlVG9Db25zb2xlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
U3RyaW4KICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVCh2YWx1ZSk7CiAKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBtZWRpYVF1ZXJ5TWVzc2FnZSwg
KEFTQ0lJTGl0ZXJhbCgiQ29uc2lkZXIgdXNpbmcgJ2RwcHgnIHVuaXRzIGluc3RlYWQgb2YgJyVy
ZXBsYWNlbWVudFVuaXRzJScsIGFzIGluIENTUyAnJXJlcGxhY2VtZW50VW5pdHMlJyBtZWFucyBk
b3RzLXBlci1DU1MtJWxlbmd0aFVuaXQlLCBub3QgZG90cy1wZXItcGh5c2ljYWwtJWxlbmd0aFVu
aXQlLCBzbyBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIHRoZSBhY3R1YWwgJyVyZXBsYWNlbWVudFVu
aXRzJScgb2YgYSBzY3JlZW4uIEluIG1lZGlhIHF1ZXJ5IGV4cHJlc3Npb246ICIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbWVkaWFWYWx1ZURQSSwgKEFT
Q0lJTGl0ZXJhbCgiZHBpIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBtZWRpYVZhbHVlRFBDTSwgKEFTQ0lJTGl0ZXJhbCgiZHBjbSIpKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbGVuZ3RoVW5pdEluY2gsIChBU0NJ
SUxpdGVyYWwoImluY2giKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGxlbmd0aFVuaXRDZW50aW1ldGVyLCAoQVNDSUlMaXRlcmFsKCJjZW50aW1ldGVyIikp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRpYVF1ZXJ5TWVzc2FnZShB
U0NJSUxpdGVyYWwoIkNvbnNpZGVyIHVzaW5nICdkcHB4JyB1bml0cyBpbnN0ZWFkIG9mICclcmVw
bGFjZW1lbnRVbml0cyUnLCBhcyBpbiBDU1MgJyVyZXBsYWNlbWVudFVuaXRzJScgbWVhbnMgZG90
cy1wZXItQ1NTLSVsZW5ndGhVbml0JSwgbm90IGRvdHMtcGVyLXBoeXNpY2FsLSVsZW5ndGhVbml0
JSwgc28gZG9lcyBub3QgY29ycmVzcG9uZCB0byB0aGUgYWN0dWFsICclcmVwbGFjZW1lbnRVbml0
cyUnIG9mIGEgc2NyZWVuLiBJbiBtZWRpYSBxdWVyeSBleHByZXNzaW9uOiAiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbWVkaWFWYWx1ZURQSShBU0NJSUxpdGVyYWwoImRw
aSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRpYVZhbHVlRFBDTShB
U0NJSUxpdGVyYWwoImRwY20iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
bGVuZ3RoVW5pdEluY2goQVNDSUlMaXRlcmFsKCJpbmNoIikpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGxlbmd0aFVuaXRDZW50aW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY2VudGlt
ZXRlciIpKTsKIAogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGlmICh2YWx1ZS0+aXNEb3RzUGVy
SW5jaCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCA2
MGM1ZDM5Li4zZTMwMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUg
IlN0eWxlUnVsZUltcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzE2LDExICszMTcsMTEgQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBh
cnNlQXV0aG9yU3R5bGVTaGVldChjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWQKIAog
ICAgIGlmIChtX3BhcnNlckNvbnRleHQubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgJiYgaXNTdHJp
Y3RQYXJzZXJNb2RlKG1fcGFyc2VyQ29udGV4dC5tb2RlKSkgewogICAgICAgICAvLyBXb3JrIGFy
b3VuZCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MzUwPi4KLSAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbWVkaWFX
aWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQsIChBU0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHls
ZXNoZWV0ICovXG4vKiB3b3JrIGFyb3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4j
Y29sdW1uLWNvbnRlbnQgeyBtYXJnaW4tbGVmdDogMDsgfVxuXG4iKSkpOworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVT
aGVldChBU0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHlsZXNoZWV0ICovXG4vKiB3b3JrIGFy
b3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4jY29sdW1uLWNvbnRlbnQgeyBtYXJn
aW4tbGVmdDogMDsgfVxuXG4iKSk7CiAgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gdmFyaWFudHMg
b2YgS0hUTUxGaXhlcy5jc3MuIE9uZSBpcyBlcXVhbCB0byBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5
bGVTaGVldCwKICAgICAgICAgLy8gd2hpbGUgdGhlIG90aGVyIGxhY2tzIHRoZSBzZWNvbmQgdHJh
aWxpbmcgbmV3bGluZS4KLSAgICAgICAgaWYgKGJhc2VVUkwoKS5zdHJpbmcoKS5lbmRzV2l0aCgi
L0tIVE1MRml4ZXMuY3NzIikgJiYgIXNoZWV0VGV4dC5pc051bGwoKSAmJiBtZWRpYVdpa2lLSFRN
TEZpeGVzU3R5bGVTaGVldC5zdGFydHNXaXRoKHNoZWV0VGV4dCkKLSAgICAgICAgICAgICYmIHNo
ZWV0VGV4dC5sZW5ndGgoKSA+PSBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVTaGVldC5sZW5ndGgo
KSAtIDEpCisgICAgICAgIGlmIChiYXNlVVJMKCkuc3RyaW5nKCkuZW5kc1dpdGgoIi9LSFRNTEZp
eGVzLmNzcyIpICYmICFzaGVldFRleHQuaXNOdWxsKCkgJiYgbWVkaWFXaWtpS0hUTUxGaXhlc1N0
eWxlU2hlZXQuZ2V0KCkuc3RhcnRzV2l0aChzaGVldFRleHQpCisgICAgICAgICAgICAmJiBzaGVl
dFRleHQubGVuZ3RoKCkgPj0gbWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQuZ2V0KCkubGVu
Z3RoKCkgLSAxKQogICAgICAgICAgICAgY2xlYXJSdWxlcygpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCAzMWU1ZjMxLi5m
NmRlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuaCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlN0YXRpY05v
ZGVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYgSGFzaE1hcDxDb250YWluZXJOb2RlKiwgQ2hp
bGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcio+IEFjY3VtdWxhdG9yTWFwOwogc3RhdGljIEFjY3Vt
dWxhdG9yTWFwJiBhY2N1bXVsYXRvck1hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEFjY3VtdWxhdG9yTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QWNjdW11bGF0b3JNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCBmZTBiY2MxLi5mYWYyZGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTUzLDYgKzUzLDcg
QEAKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHREb2N1bWVudC5o
IgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC04OCw3ICs4OSw3IEBAIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkU1ZHMTBGZWF0dXJlKGNvbnN0
IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZlYXR1cmVTZXQsIHN2Z0ZlYXR1cmVzLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTZXQ+IHN2Z0ZlYXR1cmVzOwogICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICBhZGRTdHJp
bmcoc3ZnRmVhdHVyZXMsICJzdmciKTsKQEAgLTEwOCw3ICsxMDksNyBAQCBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZFNWRzEwRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbgogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmZWF0dXJlLnN0YXJ0c1dpdGgoIm9yZy53M2MuIiwgZmFsc2UpCi0gICAgICAgICYmIHN2Z0Zl
YXR1cmVzLmNvbnRhaW5zKGZlYXR1cmUucmlnaHQoZmVhdHVyZS5sZW5ndGgoKSAtIDgpKTsKKyAg
ICAgICAgJiYgc3ZnRmVhdHVyZXMuZ2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJl
Lmxlbmd0aCgpIC0gOCkpOwogfQogCiBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVy
ZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKQEAgLTExNyw3
ICsxMTgsNyBAQCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVyZShjb25zdCBTdHJp
bmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChGZWF0dXJlU2V0LCBzdmdGZWF0dXJlcywgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxGZWF0dXJlU2V0PiBzdmdGZWF0dXJlczsKICAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CiAgICAgICAgIC8vIFNhZGx5LCB3ZSBjYW5ub3QgY2xhaW0gdG8gaW1wbGVt
ZW50IGFueSBvZiB0aGUgU1ZHIDEuMSBnZW5lcmljIGZlYXR1cmUgc2V0cwogICAgICAgICAvLyBs
YWNrIG9mIEZvbnQgYW5kIEZpbHRlciBzdXBwb3J0LgpAQCAtMTc1LDcgKzE3Niw3IEBAIHN0YXRp
YyBib29sIGlzU3VwcG9ydGVkU1ZHMTFGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZlYXR1cmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy53My5vcmcvdHIvc3ZnMTEv
ZmVhdHVyZSMiLCBmYWxzZSkKLSAgICAgICAgJiYgc3ZnRmVhdHVyZXMuY29udGFpbnMoZmVhdHVy
ZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKKyAgICAgICAgJiYgc3ZnRmVhdHVyZXMu
Z2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKIH0K
IAogRE9NSW1wbGVtZW50YXRpb246OkRPTUltcGxlbWVudGF0aW9uKERvY3VtZW50JiBkb2N1bWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDI4NGU4NzcuLmQwNTYyZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTc3LDYgKzE3Nyw3IEBACiAjaW5jbHVkZSA8Y3RpbWU+CiAj
aW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4K
ICNpbmNsdWRlIDx5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmg+CkBAIC0xMTE4LDkgKzExMTksOSBA
QCBSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaQogCiBTdHJpbmcgRG9jdW1lbnQ6OnJlYWR5U3RhdGUo
KSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGxvYWRpbmcsIChBU0NJSUxpdGVyYWwoImxvYWRpbmciKSkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGludGVyYWN0aXZlLCAoQVNDSUlMaXRl
cmFsKCJpbnRlcmFjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgY29tcGxldGUsIChBU0NJSUxpdGVyYWwoImNvbXBsZXRlIikpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBsb2FkaW5nKEFTQ0lJTGl0ZXJh
bCgibG9hZGluZyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBp
bnRlcmFjdGl2ZShBU0NJSUxpdGVyYWwoImludGVyYWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNvbXBsZXRlKEFTQ0lJTGl0ZXJhbCgiY29tcGxldGUi
KSk7CiAKICAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0ZSkgewogICAgIGNhc2UgTG9hZGluZzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCA5ODllMTRlLi5lOGNiYzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8
d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjkyOCwyMSArMjkyOSwyMSBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIEVsZW1lbnQ6OndlYmtpdFJlZ2lvbk92ZXJzZXQoKSBjb25zdAogewogICAgIGRvY3Vt
ZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB1bmRlZmluZWRTdGF0ZSwg
KCJ1bmRlZmluZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdW5kZWZpbmVkU3RhdGUoInVuZGVm
aW5lZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICghZG9j
dW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpIHx8ICFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgp
KQogICAgICAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7CiAKICAgICBzd2l0Y2ggKHJlZ2lvbk92
ZXJzZXRTdGF0ZSgpKSB7CiAgICAgY2FzZSBSZWdpb25GaXQ6IHsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZml0U3RhdGUsICgiZml0IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaXRTdGF0ZSgiZml0IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiBmaXRTdGF0ZTsKICAgICB9CiAgICAg
Y2FzZSBSZWdpb25FbXB0eTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBlbXB0eVN0YXRlLCAoImVtcHR5IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBlbXB0eVN0YXRlKCJlbXB0eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgICAgICByZXR1cm4gZW1wdHlTdGF0ZTsKICAgICB9CiAgICAgY2FzZSBSZWdp
b25PdmVyc2V0OiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG92ZXJmbG93U3RhdGUsICgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gb3ZlcmZsb3dTdGF0ZSgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gb3ZlcmZsb3dTdGF0ZTsKICAgICB9CiAgICAgY2Fz
ZSBSZWdpb25VbmRlZmluZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmlu
ZGV4IDM0MTg0N2YuLmQ1NGM2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIu
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJT
VkdVc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxMyw4ICsyMTQs
OCBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFbGVtZW50
KiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZwogICAgIGlmIChlbGVtZW50LT5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEhhc2hTZXQ8RWxlbWVudCo+LCBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxh
dGVkQ2xpY2tzLCAoKSk7Ci0gICAgaWYgKCFlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xp
Y2tzLmFkZChlbGVtZW50KS5pc05ld0VudHJ5KQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PEVsZW1lbnQqPj4gZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrczsKKyAg
ICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MuZ2V0KCkuYWRkKGVsZW1l
bnQpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtb3VzZUV2ZW50T3B0
aW9ucyA9PSBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzKQpAQCAtMjMwLDcgKzIzMSw3IEBAIHZv
aWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKEVsZW1lbnQqIGVsZW1l
bnQsIEV2ZW50KiB1bmRlcmx5aW5nCiAgICAgLy8gYWx3YXlzIHNlbmQgY2xpY2sKICAgICBkaXNw
YXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY2xpY2tFdmVudCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5
aW5nRXZlbnQsIGVsZW1lbnQpKTsKIAotICAgIGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRD
bGlja3MucmVtb3ZlKGVsZW1lbnQpOworICAgIGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRD
bGlja3MuZ2V0KCkucmVtb3ZlKGVsZW1lbnQpOwogfQogCiBzdGF0aWMgdm9pZCBjYWxsRGVmYXVs
dEV2ZW50SGFuZGxlcnNJblRoZUJ1YmJsaW5nT3JkZXIoRXZlbnQmIGV2ZW50LCBjb25zdCBFdmVu
dFBhdGgmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIu
Y3BwCmluZGV4IDRjYWY2MmYuLjQxYTIwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRO
b2RlVHJhdmVyc2FsLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MTMsNyArMTE0LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNsZWFyU2hlZXQoKQog
CiBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29udGVudFR5cGUoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNzc0NvbnRlbnRUeXBlLCAoInRleHQvY3NzIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNzc0NvbnRlbnRUeXBlKCJ0ZXh0L2NzcyIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICh0eXBlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGVsZW1lbnQuaXNIVE1MRWxlbWVudCgp
ID8gZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgY3NzQ29udGVudFR5cGUpIDogdHlwZSA9PSBjc3ND
b250ZW50VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBm
YzE3MDhjLi44N2ZiYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CkBAIC0xNDUsMTMgKzE0NSwxMyBAQCB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPE11dGF0aW9uT2Jz
ZXJ2ZXI+PiBNdXRhdGlvbk9ic2VydmVyU2V0OwogCiBzdGF0aWMgTXV0YXRpb25PYnNlcnZlclNl
dCYgYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChNdXRhdGlvbk9ic2VydmVyU2V0LCBhY3RpdmVPYnNlcnZlcnMsICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0YXRpb25PYnNlcnZlclNldD4gYWN0aXZlT2JzZXJ2
ZXJzOwogICAgIHJldHVybiBhY3RpdmVPYnNlcnZlcnM7CiB9CiAKIHN0YXRpYyBNdXRhdGlvbk9i
c2VydmVyU2V0JiBzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycygpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGF0aW9uT2JzZXJ2ZXJTZXQsIHN1c3BlbmRlZE9ic2Vy
dmVycywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNdXRhdGlvbk9ic2VydmVyU2V0
PiBzdXNwZW5kZWRPYnNlcnZlcnM7CiAgICAgcmV0dXJuIHN1c3BlbmRlZE9ic2VydmVyczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKaW5kZXggOTVmY2VjMi4uY2U0MWEx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAKICNpbmNsdWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3Qu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0NSwxOSArMTQ2LDE5IEBAIHBy
aXZhdGU6CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQ2hpbGRMaXN0UmVjb3JkOjp0eXBlKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGlsZExp
c3QsICgiY2hpbGRMaXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGNoaWxkTGlzdCgiY2hpbGRM
aXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNo
aWxkTGlzdDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdHRyaWJ1dGVzUmVjb3JkOjp0eXBl
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBh
dHRyaWJ1dGVzLCAoImF0dHJpYnV0ZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXR0cmlidXRl
cygiYXR0cmlidXRlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBhdHRyaWJ1dGVzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIENoYXJhY3RlckRh
dGFSZWNvcmQ6OnR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGNoYXJhY3RlckRhdGEsICgiY2hhcmFjdGVyRGF0YSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBjaGFyYWN0ZXJEYXRhKCJjaGFyYWN0ZXJEYXRhIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNoYXJhY3RlckRhdGE7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCBiMjQ5MjQxLi5jZjllYWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjb25zdCBRdWFsaWZpZWROYW1lJiBwc2V1ZG9FbGVtZW50VGFnTmFt
ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUs
IG5hbWUsIChudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVsbEF0b20pKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVs
bEF0b20pOwogICAgIHJldHVybiBuYW1lOwogfQogCiBTdHJpbmcgUHNldWRvRWxlbWVudDo6cHNl
dWRvRWxlbWVudE5hbWVGb3JFdmVudHMoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgYWZ0ZXIsIChBU0NJSUxpdGVy
YWwoIjo6YWZ0ZXIiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIGJlZm9yZSwgKEFTQ0lJTGl0ZXJhbCgiOjpiZWZvcmUiKSkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGFmdGVyKEFTQ0lJTGl0ZXJhbCgiOjphZnRl
ciIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBiZWZvcmUoQVND
SUlMaXRlcmFsKCI6OmJlZm9yZSIpKTsKICAgICBzd2l0Y2ggKHBzZXVkb0lkKSB7CiAgICAgY2Fz
ZSBBRlRFUjoKICAgICAgICAgcmV0dXJuIGFmdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwCmluZGV4IGZkNzliZGEuLjU2ZTRmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RhdGljQ29uc3RydWN0b3Jz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC03NCw3ICs3NSw3
IEBAIHN0cnVjdCBRTmFtZUNvbXBvbmVudHNUcmFuc2xhdG9yIHsKIAogc3RhdGljIGlubGluZSBR
TmFtZVNldCYgcXVhbGlmaWVkTmFtZUNhY2hlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUU5hbWVTZXQsIG5hbWVDYWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxRTmFtZVNldD4gbmFtZUNhY2hlOwogICAgIHJldHVybiBuYW1lQ2FjaGU7CiB9CiAK
QEAgLTExNSw3ICsxMTYsNyBAQCB2b2lkIFF1YWxpZmllZE5hbWU6OmluaXQoKQogCiBjb25zdCBR
dWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChRdWFsaWZpZWROYW1lLCBudWxsTmFtZSwgKG51bGxBdG9tLCBudWxsQXRvbSwgbnVs
bEF0b20pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbnVsbE5h
bWUobnVsbEF0b20sIG51bGxBdG9tLCBudWxsQXRvbSk7CiAgICAgcmV0dXJuIG51bGxOYW1lOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNjNmNTkzZi4uMTg3OTFm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMTE5LDI0ICsxMTksMjQg
QEAgc3RhdGljIGJvb2wgaXNMZWdhY3lTdXBwb3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoY29uc3Qg
U3RyaW5nJiBsYW5ndWFnZSkKIAogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBI
VE1MNSBjb21wbGlhbnQuIFRoZXNlIGJlbG9uZyBpbiB0aGUgTUlNRSByZWdpc3RyeSBhcyAidGV4
dC9qYXZhc2NyaXB0PHZlcnNpb24+IiBlbnRyaWVzLgogICAgIHR5cGVkZWYgSGFzaFNldDxTdHJp
bmcsIENhc2VGb2xkaW5nSGFzaD4gTGFuZ3VhZ2VTZXQ7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKExhbmd1YWdlU2V0LCBsYW5ndWFnZXMsICgpKTsKLSAgICBpZiAobGFuZ3Vh
Z2VzLmlzRW1wdHkoKSkgewotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7Ci0g
ICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFk
ZCgiamF2YXNjcmlwdDEuMCIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS4x
Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjIiKTsKLSAgICAgICAgbGFu
Z3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMyIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZh
c2NyaXB0MS40Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjUiKTsKLSAg
ICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuNiIpOwotICAgICAgICBsYW5ndWFnZXMu
YWRkKCJqYXZhc2NyaXB0MS43Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImxpdmVzY3JpcHQi
KTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiZWNtYXNjcmlwdCIpOwotICAgICAgICBsYW5ndWFn
ZXMuYWRkKCJqc2NyaXB0Iik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhbmd1YWdlU2V0
PiBsYW5ndWFnZXM7CisgICAgaWYgKGxhbmd1YWdlcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdCIpOworICAgICAgICBsYW5ndWFnZXMu
Z2V0KCkuYWRkKCJqYXZhc2NyaXB0Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImph
dmFzY3JpcHQxLjAiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEu
MSIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0MS4yIik7CisgICAg
ICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFzY3JpcHQxLjMiKTsKKyAgICAgICAgbGFuZ3Vh
Z2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNCIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCku
YWRkKCJqYXZhc2NyaXB0MS41Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFz
Y3JpcHQxLjYiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNyIp
OworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJsaXZlc2NyaXB0Iik7CisgICAgICAgIGxh
bmd1YWdlcy5nZXQoKS5hZGQoImVjbWFzY3JpcHQiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgp
LmFkZCgianNjcmlwdCIpOwogICAgIH0KIAotICAgIHJldHVybiBsYW5ndWFnZXMuY29udGFpbnMo
bGFuZ3VhZ2UpOworICAgIHJldHVybiBsYW5ndWFnZXMuZ2V0KCkuY29udGFpbnMobGFuZ3VhZ2Up
OwogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVudCgpCkBAIC0zNDcs
NyArMzQ3LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpCiAKICAgICBpZiAobV9yZXF1ZXN0VXNlc0FjY2Vzc0NvbnRyb2wgJiYg
IW1fY2FjaGVkU2NyaXB0LT5wYXNzZXNTYW1lT3JpZ2luUG9saWN5Q2hlY2soKm1fZWxlbWVudC5k
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVu
dCgpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25z
b2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlwdCBsb2FkIGRlbmll
ZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFs
KCJDcm9zcy1vcmlnaW4gc2NyaXB0IGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJj
ZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAgICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25z
b2xlTWVzc2FnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDcyZTNhZDQuLjdiODllMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJWaXNpYmxl
VW5pdHMuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTYyLDcgKzYzLDcgQEAgc3RhdGljIGludCB0b0lk
ZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUpCiAKIHN0YXRpYyBTdHJpbmcmIHN0
eWxlU3BhbkNsYXNzU3RyaW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBzdHlsZVNwYW5DbGFzc1N0cmluZywgKChBcHBsZVN0eWxlU3BhbkNsYXNzKSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0eWxlU3BhbkNsYXNzU3RyaW5n
KEFwcGxlU3R5bGVTcGFuQ2xhc3MpOwogICAgIHJldHVybiBzdHlsZVNwYW5DbGFzc1N0cmluZzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRl
eCBmOTY4MmE0Li5jMTM0MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIK
ICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJO
YW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTksOCArMjYwLDggQEAgYm9vbCBN
YXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlRWxlbWVudChjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogICAgIGlmIChwcmVmaXguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIWVs
ZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zQXRvbSk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCB4bWxuc1dpdGhDb2xvbiwgKEFTQ0lJTGl0ZXJhbCgieG1sbnM6
IikpKTsKLSAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zV2l0aENvbG9uICsg
cHJlZml4KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB4bWxuc1dpdGhDb2xv
bihBU0NJSUxpdGVyYWwoInhtbG5zOiIpKTsKKyAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmli
dXRlKHhtbG5zV2l0aENvbG9uLmdldCgpICsgcHJlZml4KTsKIH0KIAogYm9vbCBNYXJrdXBBY2N1
bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlLCBOYW1lc3BhY2VzJiBuYW1lc3BhY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA3ODk3MmM3Li5lYjQxMGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcApAQCAtMTA0LDE0ICsxMDQsMTQgQEAgcHJpdmF0ZToKIAogc3RhdGljIGJvb2wgaXNJ
bnRlcmNoYW5nZU5ld2xpbmVOb2RlKGNvbnN0IE5vZGUgKm5vZGUpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJp
bmcsIChBcHBsZUludGVyY2hhbmdlTmV3bGluZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nKEFwcGxlSW50ZXJjaGFuZ2VO
ZXdsaW5lKTsKICAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSAmJiAK
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmli
dXRlKGNsYXNzQXR0cikgPT0gaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmc7CiB9CiAKIHN0
YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9kZSAqbm9k
ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb252ZXJ0
ZWRTcGFjZVNwYW5DbGFzc1N0cmluZywgKEFwcGxlQ29udmVydGVkU3BhY2UpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZyhB
cHBsZUNvbnZlcnRlZFNwYWNlKTsKICAgICByZXR1cm4gbm9kZS0+aXNIVE1MRWxlbWVudCgpICYm
IAogICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCAqPihub2RlKS0+Z2V0
QXR0cmlidXRlKGNsYXNzQXR0cikgPT0gY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmc7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDMwNmY0YjIuLjJkN2Fk
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC00MjgsNyArNDI4
LDcgQEAgYm9vbCBpc1RhYmxlU3RydWN0dXJlTm9kZShjb25zdCBOb2RlICpub2RlKQogCiBjb25z
dCBTdHJpbmcmIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcsICgmbm9CcmVh
a1NwYWNlLCAxKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbm9uQnJlYWtp
bmdTcGFjZVN0cmluZygmbm9CcmVha1NwYWNlLCAxKTsKICAgICByZXR1cm4gbm9uQnJlYWtpbmdT
cGFjZVN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDZkMzI2NTYu
LmM3YWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTIxMyw4ICsyMTMsOCBA
QCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFN0
cmluZ0J1aWxkZXImIG91dCwgU3R5bGVQcgogCiBjb25zdCBTdHJpbmcmIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyhib29sIGlzQmxvY2spCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xvc2UsIChBU0NJSUxp
dGVyYWwoIjwvZGl2PiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2UsIChBU0NJSUxpdGVyYWwoIjwvc3Bhbj4iKSkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGRpdkNsb3NlKEFTQ0lJTGl0
ZXJhbCgiPC9kaXY+IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+
IHN0eWxlU3BhbkNsb3NlKEFTQ0lJTGl0ZXJhbCgiPC9zcGFuPiIpKTsKICAgICByZXR1cm4gaXNC
bG9jayA/IGRpdkNsb3NlIDogc3R5bGVTcGFuQ2xvc2U7CiB9CiAKQEAgLTU3Nyw3ICs1NzcsNyBA
QCBzdGF0aWMgTm9kZSogaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKGNvbnN0IFJhbmdlKiBy
YW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaAogc3RhdGljIFN0cmluZyBjcmVhdGVNYXJrdXBJbnRl
cm5hbChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJhbmdlJiByYW5nZSwgVmVjdG9yPE5vZGUq
Piogbm9kZXMsCiAgICAgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGJv
b2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJM
cykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBp
bnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcsIChBU0NJSUxpdGVyYWwoIjxiciBjbGFzcz1cIiIgQXBw
bGVJbnRlcmNoYW5nZU5ld2xpbmUgIlwiPiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiPGJy
IGNsYXNzPVwiIiBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAiXCI+IikpOwogCiAgICAgYm9vbCBj
b2xsYXBzZWQgPSByYW5nZS5jb2xsYXBzZWQoKTsKICAgICBpZiAoY29sbGFwc2VkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5jcHAKaW5kZXggNmIwMzNiMC4uMGY0Y2U5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MSwxMSArNjIsMTAgQEAgdm9p
ZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJiB1cmwpCiAKIFVSTFJl
Z2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQmxvYlVSTFJlZ2lzdHJ5LCBpbnN0YW5jZSwgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxCbG9iVVJMUmVnaXN0cnk+IGluc3RhbmNlOwogICAgIHJldHVy
biBpbnN0YW5jZTsKIH0KIAotCiBCbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25s
eURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCBhMzJhMGI3Li5hZGIwZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTU4LDcgKzU5LDcgQEAgdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlu
cHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCopCiAKIHZvaWQgQmFzZUNob29z
ZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHZhbHVlQ29udGFp
bmVyUHNldWRvLCAoIi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiB2YWx1ZUNvbnRhaW5lclBzZXVkbygiLXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBSZWY8SFRNTERp
dkVsZW1lbnQ+IHZhbHVlQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50
KCkuZG9jdW1lbnQoKSk7CiAgICAgdmFsdWVDb250YWluZXItPnNldFBzZXVkbyh2YWx1ZUNvbnRh
aW5lclBzZXVkbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCBiMWU4
MjlkLi5iMzRmN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw3ICs2Miw3IEBA
IERhdGVDb21wb25lbnRzOjpUeXBlIERhdGVJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIAog
U3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAo
ZGF0ZURlZmF1bHRTdGVwLCBkYXRlRGVmYXVsdFN0ZXBCYXNlLCBkYXRlU3RlcFNjYWxlRmFjdG9y
LCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERl
c2NyaXB0aW9uKGRhdGVEZWZhdWx0U3RlcCwgZGF0ZURlZmF1bHRTdGVwQmFzZSwgZGF0ZVN0ZXBT
Y2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpOwog
CiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwogICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9
IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2lt
YWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKaW5kZXggYjJlZmU4NS4uYjI5NDUxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5o
IgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDcgKzYzLDcgQEAgRGVjaW1h
bCBEYXRlVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3Rl
cFJhbmdlIERhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5n
IGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwg
KGRhdGVUaW1lRGVmYXVsdFN0ZXAsIGRhdGVUaW1lRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZVN0
ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb24+IHN0ZXBEZXNjcmlwdGlvbihkYXRlVGltZURlZmF1bHRTdGVwLCBkYXRlVGltZURlZmF1
bHRTdGVwQmFzZSwgZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3Rl
cFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKICAg
ICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjpt
aW5pbXVtRGF0ZVRpbWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
VGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5jcHAKaW5kZXggNGE0MzhmMy4uODIxYzgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjgsNyArNjksNyBAQCB2b2lkIERhdGVUaW1l
TG9jYWxJbnB1dFR5cGU6OnNldFZhbHVlQXNEYXRlKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbgogCiBTdGVwUmFuZ2UgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6Y3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0
aW9uLCBzdGVwRGVzY3JpcHRpb24sIChkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXAsIGRhdGVUaW1l
TG9jYWxEZWZhdWx0U3RlcEJhc2UsIGRhdGVUaW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IsIFN0ZXBS
YW5nZTo6U2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRp
b24oZGF0ZVRpbWVMb2NhbERlZmF1bHRTdGVwLCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNl
LCBkYXRlVGltZUxvY2FsU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcik7CiAKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7CiAgICAgY29u
c3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJp
YnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11
bURhdGVUaW1lKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXgg
ZGFlMTc4Mi4uZTZlMDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KIApAQCAtNDQsMTAg
KzQ1LDEwIEBAIHN0YXRpYyBib29sIGlzVmFsaWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBh
ZGRyZXNzKQogICAgIGlmICghYWRkcmVzc0xlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEpTQzo6WWFycjo6UmVn
dWxhckV4cHJlc3Npb24sIHJlZ0V4cCwgKGVtYWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2
ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJF
eHByZXNzaW9uPiByZWdFeHAoZW1haWxQYXR0ZXJuLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKIAog
ICAgIGludCBtYXRjaExlbmd0aDsKLSAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAubWF0Y2go
YWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKKyAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAu
Z2V0KCkubWF0Y2goYWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKIAogICAgIHJldHVybiAhbWF0
Y2hPZmZzZXQgJiYgbWF0Y2hMZW5ndGggPT0gYWRkcmVzc0xlbmd0aDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggYjBmM2E5Mi4uY2RjN2IxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzMyw3ICszMzQsNyBAQCBBdG9t
aWNTdHJpbmcgRm9ybUtleUdlbmVyYXRvcjo6Zm9ybUtleShjb25zdCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlJiBjbwogewogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IG93bmVy
Rm9ybUZvclN0YXRlKGNvbnRyb2wpOwogICAgIGlmICghZm9ybSkgewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmb3JtS2V5Rm9yTm9Pd25lciwg
KCJObyBvd25lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZm9ybUtleUZvck5vT3duZXIo
Ik5vIG93bmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAg
IHJldHVybiBmb3JtS2V5Rm9yTm9Pd25lcjsKICAgICB9CiAgICAgRm9ybVRvS2V5TWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fZm9ybVRvS2V5TWFwLmZpbmQoZm9ybSk7CkBAIC0zODYsNyArMzg3
LDcgQEAgc3RhdGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogICAgIC8vIEluIHRoZSBs
ZWdhY3kgdmVyc2lvbiBvZiBzZXJpYWxpemVkIHN0YXRlLCB0aGUgZmlyc3QgaXRlbSB3YXMgYSBu
YW1lCiAgICAgLy8gYXR0cmlidXRlIHZhbHVlIG9mIGEgZm9ybSBjb250cm9sLiBUaGUgZm9sbG93
aW5nIHN0cmluZyBsaXRlcmFsIHNob3VsZAogICAgIC8vIGNvbnRhaW4gc29tZSBjaGFyYWN0ZXJz
IHdoaWNoIGFyZSByYXJlbHkgdXNlZCBmb3IgbmFtZSBhdHRyaWJ1dGUgdmFsdWVzLgotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNpZ25hdHVyZSwgKEFTQ0lJTGl0
ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxuXHI9
JiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2lnbmF0dXJlKEFTQ0lJ
TGl0ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxu
XHI9JiIpKTsKICAgICByZXR1cm4gc2lnbmF0dXJlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDllYWVjZmQuLjQxOWE0YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC02MTksNyArNjE5LDcgQEAgdHlw
ZWRlZiBIYXNoTWFwPGNvbnN0IEhUTUxBbmNob3JFbGVtZW50KiwgUmVmUHRyPEVsZW1lbnQ+PiBS
b290RWRpdGFibGVFbGVtZW50TWEKIAogc3RhdGljIFJvb3RFZGl0YWJsZUVsZW1lbnRNYXAmIHJv
b3RFZGl0YWJsZUVsZW1lbnRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChSb290RWRpdGFibGVFbGVtZW50TWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Um9vdEVkaXRhYmxlRWxlbWVudE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggMmU3M2Rl
ZC4uZGY4ZTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAK
QEAgLTY1LDE1ICs2NSwxNSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxCdXR0b25FbGVtZW50
Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAg
ICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJtaXQsICgic3VibWl0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VibWl0KCJzdWJtaXQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgICAgIHJldHVybiBzdWJtaXQ7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBCVVRUT046IHsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJ1dHRvbiwgKCJidXR0b24iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBidXR0b24oImJ1dHRvbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbjsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIFJFU0VUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCByZXNldCwgKCJyZXNldCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHJlc2V0KCJyZXNldCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAgICAgcmV0dXJuIHJlc2V0
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAKaW5kZXggOTE2MmFmYy4uZDA4N2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBIVE1MRmll
bGRTZXRFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZpZWxkc2V0
LCAoImZpZWxkc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZpZWxkc2V0KCJmaWVs
ZHNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBm
aWVsZHNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVP
d25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgKaW5kZXggMDFmYTcwMC4uOTY2NzFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg4LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVy
Tm9kZSo+JiBkaXNhYmxlZFN1YnRyZWVSb290cygpCiAgICAgewotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+LCBub2Rl
cywgKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaENvdW50ZWRTZXQ8Q29u
dGFpbmVyTm9kZSo+PiBub2RlczsKICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAppbmRleCBhYTA5MWZiLi44OTQ0
YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogICAgIEtleWdlblNlbGVjdEVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICA6IEhUTUxTZWxlY3RFbGVtZW50KHNlbGVj
dFRhZywgZG9jdW1lbnQsIDApCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwc2V1ZG9JZCwgKCItd2Via2l0LWtleWdlbi1zZWxlY3Qi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LWtleWdlbi1zZWxl
Y3QiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgc2V0UHNl
dWRvKHBzZXVkb0lkKTsKICAgICB9CiAKQEAgLTExMiw3ICsxMTMsNyBAQCBib29sIEhUTUxLZXln
ZW5FbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kZWRfdmFsdWVzLCBi
b29sKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxLZXlnZW5FbGVtZW50Ojpmb3JtQ29udHJv
bFR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGtleWdlbiwgKCJrZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4ga2V5Z2VuKCJrZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4ga2V5Z2VuOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKaW5kZXggYjU4MzIyMy4uMWM0OWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBzdGF0aWMgTGlua0V2ZW50U2VuZGVyJiBsaW5rTG9hZEV2ZW50U2VuZGVyKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTGlua0V2ZW50U2VuZGVyLCBzaGFy
ZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPExpbmtFdmVudFNlbmRlcj4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyKGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwogICAgIHJldHVybiBzaGFyZWRMb2FkRXZlbnRTZW5kZXI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDgxNTE2
ZmEuLjY4NGQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtMjA1LDcgKzIwNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB0eXBlZGVmIEhh
c2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVt
ZW50U2V0TWFwOwogc3RhdGljIERvY3VtZW50RWxlbWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1l
bnRTZXRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEb2N1bWVu
dEVsZW1lbnRTZXRNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEb2N1
bWVudEVsZW1lbnRTZXRNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGFiYTAwMWIuLmM0NTZlNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00MDQsOCArNDA0
LDggQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkLCBhbGwgY2FsbGVycyBhcmUgYWxtb3N0IGNl
cnRhaW5seSB3cm9uZy4KIHN0YXRpYyBib29sIGlzUmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIHRhZ0xpc3QsICgpKTsKLSAgICBpZiAodGFn
TGlzdC5pc0VtcHR5KCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4+IHRhZ0xpc3Q7CisgICAgaWYgKHRhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGF1dG8qIHRhZ3MgPSBIVE1MTmFtZXM6OmdldEhUTUxUYWdzKCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRNTE5hbWVzOjpIVE1MVGFnc0NvdW50OyBpKysp
IHsKICAgICAgICAgICAgIGlmICgqdGFnc1tpXSA9PSBiZ3NvdW5kVGFnCkBAIC00MjAsMTAgKzQy
MCwxMCBAQCBzdGF0aWMgYm9vbCBpc1JlY29nbml6ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUpCiAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IGNoYW5nZXMgaG93
IHdlIHBhcnNlIGRvY3VtZW50cy4KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHRhZ0xpc3QuYWRkKHRhZ3NbaV0tPmxvY2FsTmFtZSgpLmltcGwo
KSk7CisgICAgICAgICAgICB0YWdMaXN0LmdldCgpLmFkZCh0YWdzW2ldLT5sb2NhbE5hbWUoKS5p
bXBsKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiB0YWdMaXN0LmNvbnRhaW5zKHRh
Z05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICByZXR1cm4gdGFnTGlzdC5nZXQoKS5jb250
YWlucyh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVs
ZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50LmNwcAppbmRleCBlMGJkOGNmLi44NjIyNjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBI
VE1MT3B0R3JvdXBFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcHRn
cm91cCwgKCJvcHRncm91cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBvcHRncm91cCgi
b3B0Z3JvdXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gb3B0Z3JvdXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91
dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5j
cHAKaW5kZXggMmY2YmE3Yi4uZWRkYTRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01NCw3ICs1NSw3IEBAIFJlZjxIVE1MT3V0cHV0RWxlbWVudD4gSFRN
TE91dHB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgp
IGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21p
Y1N0cmluZywgb3V0cHV0LCAoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBv
dXRwdXQoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBvdXRwdXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKaW5kZXggMDExNzVkOS4uNTdhNTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3Ry
YXIoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4mKTsKIAogc3RhdGljIFZlY3RvcjxSZXBsYWNlbWVu
dFBsdWdpbio+JiByZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFJlcGxhY2VtZW50UGx1Z2luKj4sIHJlZ2lz
dGVyZWRSZXBsYWNlbWVudHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9y
PFJlcGxhY2VtZW50UGx1Z2luKj4+IHJlZ2lzdGVyZWRSZXBsYWNlbWVudHM7CiAgICAgc3RhdGlj
IGJvb2wgZW5naW5lc1F1ZXJpZWQgPSBmYWxzZTsKICAgICAKICAgICBpZiAoZW5naW5lc1F1ZXJp
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApp
bmRleCBkNjhhNTk5Li4wOWU3YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTc0LDI5ICs3NCwyOSBAQCBzdGF0aWMgY29uc3QgYXV0
byByZW1vdmVTbmFwc2hvdFRpbWVyRGVsYXkgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHsg
MTUwMCB9OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJp
bmcgbWltZVR5cGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE1pbWVU
eXBlVG9Mb2NhbGl6ZWRTdHJpbmdNYXAsIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLCAoKSk7Ci0g
ICAgU3RyaW5nIHRpdGxlVGV4dCA9IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLmdldChtaW1lVHlw
ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1pbWVUeXBlVG9Mb2NhbGl6ZWRTdHJpbmdN
YXA+IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwOworICAgIFN0cmluZyB0aXRsZVRleHQgPSBtaW1l
VHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5nZXQobWltZVR5cGUpOwogICAgIGlmICghdGl0bGVU
ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIAogICAgIHRpdGxlVGV4
dCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxUaXRsZShtaW1lVHlw
ZSk7CiAgICAgaWYgKHRpdGxlVGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHRpdGxlVGV4dCA9IHNu
YXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpOwotICAgIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFw
LnNldChtaW1lVHlwZSwgdGl0bGVUZXh0KTsKKyAgICBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5n
ZXQoKS5zZXQobWltZVR5cGUsIHRpdGxlVGV4dCk7CiAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIH07
CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgc3VidGl0bGVUZXh0KFBhZ2UqIHBhZ2UsIFN0cmluZyBt
aW1lVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTWltZVR5cGVU
b0xvY2FsaXplZFN0cmluZ01hcCwgbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAsICgpKTsKLSAg
ICBTdHJpbmcgc3VidGl0bGVUZXh0ID0gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuZ2V0KG1p
bWVUeXBlKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWltZVR5cGVUb0xvY2FsaXplZFN0
cmluZ01hcD4gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXA7CisgICAgU3RyaW5nIHN1YnRpdGxl
VGV4dCA9IG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLmdldChtaW1lVHlwZSk7CiAg
ICAgaWYgKCFzdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3VidGl0bGVU
ZXh0OwogCiAgICAgc3VidGl0bGVUZXh0ID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0lu
U3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBlKTsKICAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1w
dHkoKSkKICAgICAgICAgc3VidGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRp
dGxlKCk7Ci0gICAgbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuc2V0KG1pbWVUeXBlLCBzdWJ0
aXRsZVRleHQpOworICAgIG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLnNldChtaW1l
VHlwZSwgc3VidGl0bGVUZXh0KTsKICAgICByZXR1cm4gc3VidGl0bGVUZXh0OwogfTsKIApAQCAt
NDA4LDExICs0MDgsMTEgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2Vy
QWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVybGF5KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0
b3IsICgiLnNuYXBzaG90LW92ZXJsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc2VsZWN0b3Io
Ii5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgU2hhZG93Um9vdCogc2hhZG93ID0gdXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlm
ICghc2hhZG93KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHNu
YXBzaG90TGFiZWwgPSBzaGFkb3ctPnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IsIEFTU0VSVF9OT19F
WENFUFRJT04pOworICAgIFJlZlB0cjxFbGVtZW50PiBzbmFwc2hvdExhYmVsID0gc2hhZG93LT5x
dWVyeVNlbGVjdG9yKHNlbGVjdG9yLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBy
ZXR1cm4gbm9kZSAmJiBzbmFwc2hvdExhYmVsICYmIChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0
KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yoc25hcHNob3RMYWJlbC5nZXQoKSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU3MzA0N2YuLmFl
ZGVkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC05
Nyw4ICs5Nyw4IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxl
OjpDaGFuZ2Ugc3R5bGVDaGFuZ2UpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVs
ZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2VsZWN0TXVsdGlwbGUsICgic2VsZWN0
LW11bHRpcGxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNlbGVjdE9u
ZSwgKCJzZWxlY3Qtb25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNlbGVjdE11bHRp
cGxlKCJzZWxlY3QtbXVsdGlwbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzZWxlY3RP
bmUoInNlbGVjdC1vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gbV9tdWx0aXBsZSA/IHNlbGVjdE11bHRpcGxlIDogc2VsZWN0T25lOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAppbmRleCBhY2VkZWQ0Li41MWM2
ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIFN0eWxlRXZlbnRT
ZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3R5bGVFdmVudFNlbmRlciwgc2hhcmVkTG9hZEV2ZW50U2VuZGVyLCAoZXZl
bnROYW1lcygpLmxvYWRFdmVudCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHlsZUV2
ZW50U2VuZGVyPiBzaGFyZWRMb2FkRXZlbnRTZW5kZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7
CiAgICAgcmV0dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNzg5NDM3Yy4uMmM4Y2U0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xMTUsNyAr
MTE1LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRleHRBcmVh
RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0ZXh0YXJlYSwgKCJ0ZXh0YXJlYSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0ZXh0YXJlYSgidGV4dGFyZWEiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gdGV4dGFyZWE7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggZDdmMDczNy4uMDk2MzcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTM3NSw5ICszNzUsOSBAQCBpbnQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVTZWxlY3Rpb25FbmQoKSBjb25zdAog
CiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcoVGV4dEZpZWxkU2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBub25lLCAoIm5vbmUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9yd2FyZCwgKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJhY2t3YXJkLCAoImJhY2t3YXJkIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBmb3J3YXJkKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmFja3dhcmQo
ImJhY2t3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDEzMTBjZTkuLjVjYmYyZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC02NCwxMCArNjQsMTAg
QEAgYm9vbCBJbWFnZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNv
ZGluZywgYm9vbCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG90WFN0cmluZywgKEFTQ0lJTGl0
ZXJhbCgiLngiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGRvdFlTdHJpbmcsIChBU0NJSUxpdGVyYWwoIi55IikpKTsKLSAgICBlbmNvZGluZy5hcHBlbmRE
YXRhKG5hbWUgKyBkb3RYU3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueCgpKTsKLSAgICBlbmNvZGlu
Zy5hcHBlbmREYXRhKG5hbWUgKyBkb3RZU3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkb3RYU3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
LngiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZG90WVN0cmluZyhBU0NJ
SUxpdGVyYWwoIi55IikpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSArIGRvdFhTdHJp
bmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi54KCkpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEo
bmFtZSArIGRvdFlTdHJpbmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi55KCkpOwogCiAgICAgaWYg
KCFlbGVtZW50KCkudmFsdWUoKS5pc0VtcHR5KCkpCiAgICAgICAgIGVuY29kaW5nLmFwcGVuZERh
dGEobmFtZSwgZWxlbWVudCgpLnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5h
bWVzLmNwcAppbmRleCBhYzA4OTZhLi40Mzg3NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZU5hbWVzLmNwcApAQCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgSW5wdXRUeXBlTmFtZXMgewpA
QCAtMzEsMTM5ICszMywxMzkgQEAgbmFtZXNwYWNlIElucHV0VHlwZU5hbWVzIHsKIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBidXR0b24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGNoZWNrYm94KCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImNo
ZWNrYm94IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImNoZWNrYm94IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgY29sb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
bmFtZSgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBy
ZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBkYXRlKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImRhdGUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiZGF0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IGRhdGV0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBuYW1lLCAoImRhdGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImRh
dGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWVsb2NhbCgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRl
dGltZS1sb2NhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJkYXRldGltZS1sb2NhbCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImVtYWlsIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5hbWUoImVtYWlsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgZmlsZSgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwg
KCJmaWxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImZpbGUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBoaWRkZW4oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIG5hbWUsICgiaGlkZGVuIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5h
bWUoImhpZGRlbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImltYWdlIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImltYWdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbW9udGgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIG5hbWUsICgibW9udGgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgibW9udGgi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBudW1iZXIoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgibnVtYmVyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IG5hbWUoIm51bWJlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3N3
b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBuYW1lLCAoInBhc3N3b3JkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInBhc3N3b3Jk
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaW8oKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgicmFkaW8iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gbmFtZSgicmFkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiByYW5nZSgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFt
ZSwgKCJyYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJyYW5nZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInNlYXJj
aCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJzZWFyY2giLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBzdWJtaXQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIG5hbWUsICgic3VibWl0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUo
InN1Ym1pdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHRlbGVwaG9uZSgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ0ZWwiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGVsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
dGV4dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgbmFtZSwgKCJ0ZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInRleHQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiB0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInRpbWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gbmFtZSgidGltZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHVybCgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ1cmwiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidXJsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
d2VlaygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgbmFtZSwgKCJ3ZWVrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoIndlZWsiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IGRiYjAyYWIuLjQ3YTk1
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKQEAgLTI5MCwxOSAr
MjkwLDE5IEBAIHZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChib29sIGZsYWcpCiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBsYXliYWNrU3RhdGVXYWl0aW5nKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB3YWl0aW5nLCAoIndh
aXRpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gd2FpdGluZygid2FpdGluZyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiB3YWl0aW5nOwogfQogCiBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwbGF5YmFja1N0YXRlUGxheWluZygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGxheWluZywgKCJw
bGF5aW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBsYXlpbmcoInBsYXlpbmciLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcGxheWluZzsKIH0KIAog
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGxheWJhY2tTdGF0ZUVuZGVkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbmRlZCwgKCJlbmRl
ZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggNDcyOTg3Mi4uNjBjMzE2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkwLDcgKzkxLDcgQEAgRGVjaW1hbCBNb250aElucHV0
VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIE1vbnRoSW5w
dXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykg
Y29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJh
bmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKG1vbnRoRGVmYXVsdFN0ZXAs
IG1vbnRoRGVmYXVsdFN0ZXBCYXNlLCBtb250aFN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQ
YXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0ZXBEZXNjcmlwdGlvbihtb250
aERlZmF1bHRTdGVwLCBtb250aERlZmF1bHRTdGVwQmFzZSwgbW9udGhTdGVwU2NhbGVGYWN0b3Is
IFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0
IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmli
dXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKG1vbnRoRGVmYXVsdFN0ZXBCYXNlKSk7
CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFz
dEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50
czo6bWluaW11bU1vbnRoKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNw
cAppbmRleCBmZDM1YmI4Li5mNjYwNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnR5cGVN
aXNtYXRjaCgpIGNvbnN0CiAKIFN0ZXBSYW5nZSBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBS
YW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlv
biwgc3RlcERlc2NyaXB0aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVw
QmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRpb24obnVtYmVy
RGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9y
KTsKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJU
eXBlKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3Rl
cEJhc2UpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1heCBmb3IgbnVtYmVyIGlucHV0IHR5cGUuCiAgICAgY29uc3QgRGVjaW1hbCBmbG9hdE1h
eCA9IERlY2ltYWw6OmZyb21Eb3VibGUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggMjRmN2JiYy4uZTBk
NzcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTExMyw3ICsx
MTMsNyBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QKIAog
U3RlcFJhbmdlIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5n
IGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwg
KHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZh
Y3RvcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVs
dFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3Rvcik7CiAKICAgICBjb25zdCBEZWNpbWFsIG1p
bmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIp
LCByYW5nZURlZmF1bHRNaW5pbXVtKTsKICAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBlbnN1
cmVNYXhpbXVtKHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0
ciksIHJhbmdlRGVmYXVsdE1heGltdW0pLCBtaW5pbXVtLCByYW5nZURlZmF1bHRNYXhpbXVtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCBjNDc3MThhLi5lYmYzMWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNjUsMTMgKzY2LDEzIEBAIFN0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0
IERlY2ltYWwmIHN0ZXBCYXNlLCBjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25zdCBEZWNpCiBE
ZWNpbWFsIFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9yKCkgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHVzZSBEQkxfTUFOVF9ESUcgaW5zdGVhZCBvZiBGTFRfTUFOVF9ESUcgcmVn
YXJkaW5nIHRvIEhUTUw1IHNwZWNpZmljYXRpb24uCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IERlY2ltYWwsIHR3b1Bvd2VyT2ZGbG9hdE1hbnRpc3NhQml0cywgKERl
Y2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgRGVjaW1hbD4gdHdvUG93ZXJPZkZsb2F0TWFudGlz
c2FCaXRzKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcp
OwogICAgIHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5zdGVwVmFsdWVTaG91bGRCZSA9PSBTdGVw
VmFsdWVTaG91bGRCZVJlYWwgPyBtX3N0ZXAgLyB0d29Qb3dlck9mRmxvYXRNYW50aXNzYUJpdHMg
OiBEZWNpbWFsKDApOwogfQogCiBEZWNpbWFsIFN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAo
Y29uc3QgRGVjaW1hbCYgY3VycmVudFZhbHVlLCBjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSkgY29u
c3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwg
dGVuUG93ZXJPZjIxLCAoRGVjaW1hbDo6UG9zaXRpdmUsIDIxLCAxKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IERlY2ltYWw+IHRlblBvd2VyT2YyMShEZWNpbWFsOjpQb3NpdGl2
ZSwgMjEsIDEpOwogICAgIGlmIChuZXdWYWx1ZSA+PSB0ZW5Qb3dlck9mMjEpCiAgICAgICAgIHJl
dHVybiBuZXdWYWx1ZTsKIApAQCAtMTUwLDcgKzE1MSw3IEBAIGJvb2wgU3RlcFJhbmdlOjpzdGVw
TWlzbWF0Y2goY29uc3QgRGVjaW1hbCYgdmFsdWVGb3JDaGVjaykgY29uc3QKICAgICAvLyBEZWNp
bWFsJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0LiBJZiB0aGUgY3Vy
cmVudCB2YWx1ZQogICAgIC8vIGlzIGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJMX01BTlRfRElHLCB0
aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIGZvcgogICAgIC8vIHJlbWFpbmRlciBtYWtlcyBubyBz
ZW5zZS4KLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwg
dHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cywgKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5U
NjRfQygxKSA8PCBEQkxfTUFOVF9ESUcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgRGVjaW1hbD4gdHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cyhEZWNpbWFsOjpQb3NpdGl2
ZSwgMCwgVUlOVDY0X0MoMSkgPDwgREJMX01BTlRfRElHKTsKICAgICBpZiAodmFsdWUgLyB0d29Q
b3dlck9mRG91YmxlTWFudGlzc2FCaXRzID4gbV9zdGVwKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgLy8gVGhlIGNvbXB1dGF0aW9uIGZvbGxvd3MgSFRNTDUgNC4xMC43LjIuMTAgYFRoZSBz
dGVwIGF0dHJpYnV0ZScgOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKaW5kZXgg
YzA5MDQxOS4uODczYmM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCkBA
IC03Nyw3ICs3Nyw3IEBAIERlY2ltYWwgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3Rl
cFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShB
bnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3Rl
cERlc2NyaXB0aW9uLCAodGltZURlZmF1bHRTdGVwLCB0aW1lRGVmYXVsdFN0ZXBCYXNlLCB0aW1l
U3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdl
cikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNj
cmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHRpbWVEZWZhdWx0U3RlcCwgdGltZURlZmF1bHRTdGVw
QmFzZSwgdGltZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91
bGRCZUludGVnZXIpOwogCiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1i
ZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwogICAgIGNvbnN0IERl
Y2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUo
bWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1UaW1l
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCmluZGV4IDg0Y2E5ODguLjE4
YzA0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcApAQCAtNTYsNyArNTYs
NyBAQCBEYXRlQ29tcG9uZW50czo6VHlwZSBXZWVrSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0
CiAKIFN0ZXBSYW5nZSBXZWVrSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRs
aW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlv
biwgKHdlZWtEZWZhdWx0U3RlcCwgd2Vla0RlZmF1bHRTdGVwQmFzZSwgd2Vla1N0ZXBTY2FsZUZh
Y3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0
ZXBEZXNjcmlwdGlvbih3ZWVrRGVmYXVsdFN0ZXAsIHdlZWtEZWZhdWx0U3RlcEJhc2UsIHdlZWtT
dGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2Vy
KTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQo
KS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlKTsKICAgICBj
b25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0
cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjptaW5p
bXVtV2VlaygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA2NTQyN2ExLi5hNjAzMzdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYg
VVNFKENHKQpAQCAtMTk1OSw3ICsxOTYwLDcgQEAgUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjp3ZWJraXRHZXRJbWFnZURhdGFIRChmbG9hdCBzeCwgZmxvYXQKIFJl
ZlB0cjxJbWFnZURhdGE+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRhKElt
YWdlQnVmZmVyOjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0sIGZsb2F0IHN4LCBm
bG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsK
ICAgICBpZiAoIWNhbnZhcygpLT5vcmlnaW5DbGVhbigpKSB7Ci0gICAgICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0aGUgY2FudmFz
IGhhcyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEuIikpKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJV
bmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMgYmVjYXVzZSB0aGUgY2FudmFzIGhh
cyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEuIikpOwogICAgICAgICBjYW52YXMo
KS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UpOwogICAgICAgICBlYyA9IFNFQ1VS
SVRZX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGQ5YWUxMmEuLmExOTFmMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk
ZSAiWExpbmtOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNzMsNyArMjc0LDcgQEAgdm9pZCBYU1NBdWRpdG9yOjpp
bml0KERvY3VtZW50KiBkb2N1bWVudCwgWFNTQXVkaXRvckRlbGVnYXRlKiBhdWRpdG9yRGVsZWdh
dGUpCiAKICAgICBTdHJpbmcgaHR0cEJvZHlBc1N0cmluZzsKICAgICBpZiAoRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyID0gZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCkpIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgWFNTUHJvdGVjdGlvbkhlYWRlciwgKEFTQ0lJTGl0ZXJhbCgiWC1YU1MtUHJvdGVjdGlvbiIp
KSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IFhTU1Byb3RlY3Rpb25I
ZWFkZXIoQVNDSUlMaXRlcmFsKCJYLVhTUy1Qcm90ZWN0aW9uIikpOwogICAgICAgICBTdHJpbmcg
aGVhZGVyVmFsdWUgPSBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQo
WFNTUHJvdGVjdGlvbkhlYWRlcik7CiAgICAgICAgIFN0cmluZyBlcnJvckRldGFpbHM7CiAgICAg
ICAgIHVuc2lnbmVkIGVycm9yUG9zaXRpb24gPSAwOwpAQCAtNTIzLDcgKzUyNCw3IEBAIGJvb2wg
WFNTQXVkaXRvcjo6ZmlsdGVyQnV0dG9uVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiBy
ZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5q
ZWN0ZWQoY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNhZmVKYXZhU2NyaXB0VVJMLCAoQVNDSUlM
aXRlcmFsKCJqYXZhc2NyaXB0OnZvaWQoMCkiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHNhZmVKYXZhU2NyaXB0VVJMKEFTQ0lJTGl0ZXJhbCgiamF2YXNjcmlwdDp2b2lk
KDApIikpOwogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVxdWVzdC50b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyArK2kpIHsK
QEAgLTUzOCw3ICs1MzksNyBAQCBib29sIFhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmli
dXRlc0lmSW5qZWN0ZWQoY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIHJlcXVlc3QudG9rZW4uZXJhc2VWYWx1ZU9mQXR0cmlidXRlKGkp
OwogICAgICAgICBpZiAodmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwpCi0gICAgICAgICAgICBy
ZXF1ZXN0LnRva2VuLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoaSwgc2FmZUphdmFTY3JpcHRVUkwp
OworICAgICAgICAgICAgcmVxdWVzdC50b2tlbi5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGksIHNh
ZmVKYXZhU2NyaXB0VVJMLmdldCgpKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgPSB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggMDc5YmMwZi4uZjdh
M2M3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcApAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
CiB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRl
RGlzcGxheSgpCiB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdGVkQ2xhc3NWYWx1ZSwgKCJzZWxl
Y3RlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzZWxlY3RlZENsYXNzVmFsdWUoInNlbGVjdGVk
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAoIW1lZGlh
Q29udHJvbGxlcigpLT5oYXNDbG9zZWRDYXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC0x
MDM4LDcgKzEwMzgsNyBAQCBSZWY8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50PiBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZQogCiBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBnZXRNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnRT
aGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1k
aXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGlkKCItd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXRpbWUtcmVtYWluaW5nLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gaWQ7CiB9CiAKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIFJlZjxNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xDdXJyZW50VGlt
ZURpc3BsYXlFbGVtZW50CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGdldE1lZGlhQ29u
dHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1t
ZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBpZCgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBpZDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKaW5k
ZXggMTY0NWI4Mi4uODA4MmNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTWV0ZXJTaGFk
b3dFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIE1l
dGVySW5uZXJFbGVtZW50OjpNZXRlcklubmVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgOiBNZXRlclNoYWRvd0VsZW1lbnQoZG9jdW1lbnQpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1p
bm5lci1lbGVtZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LW1l
dGVyLWlubmVyLWVsZW1lbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBzZXRQc2V1ZG8ocHNldWRvSWQpOwogfQogCkBAIC04MCw5ICs4MCw5IEBAIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWV0ZXJWYWx1ZUVsZW1lbnQ6
OnZhbHVlUHNldWRvSWQoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG9wdGltdW1Qc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLW9wdGlt
dW0tdmFsdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc3Vib3B0aW11bVBzZXVk
b0lkLCAoIi13ZWJraXQtbWV0ZXItc3Vib3B0aW11bS12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBldmVuTGVzc0dvb2RQc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLWV2ZW4t
bGVzcy1nb29kLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wdGltdW1Qc2V1ZG9JZCgi
LXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc3Vib3B0
aW11bVBzZXVkb0lkKCItd2Via2l0LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBldmVuTGVzc0dvb2RQc2V1ZG9JZCgiLXdlYmtpdC1tZXRlci1ldmVuLWxlc3Mt
Z29vZC12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAg
SFRNTE1ldGVyRWxlbWVudCogbWV0ZXIgPSBtZXRlckVsZW1lbnQoKTsKICAgICBpZiAoIW1ldGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaApp
bmRleCA0ZjliMzA0Li43NzA2YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZXRlclNoYWRvd0VsZW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShNRVRF
Ul9FTEVNRU5UKQogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC03NSw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgTWV0ZXJCYXJFbGVtZW50
KERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgOiBNZXRlclNoYWRvd0VsZW1lbnQoZG9jdW1l
bnQpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBwc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLWJhciIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gcHNldWRvSWQoIi13ZWJraXQtbWV0ZXItYmFyIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHNldFBzZXVkbyhwc2V1ZG9JZCk7CiAgICAgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCmluZGV4IGZiNTgzMzYuLjBkODkxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNTc2LDEzICs1NzYsMTMgQEAgSFRN
TElucHV0RWxlbWVudCogU2xpZGVyVGh1bWJFbGVtZW50Ojpob3N0SW5wdXQoKSBjb25zdAogCiBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzbGlkZXJUaHVtYlNoYWRvd1BzZXVkb0lkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBz
bGlkZXJUaHVtYiwgKCItd2Via2l0LXNsaWRlci10aHVtYiIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBzbGlkZXJUaHVtYigiLXdlYmtpdC1zbGlkZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc2xpZGVyVGh1bWI7CiB9CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhU2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgbWVkaWFTbGlkZXJUaHVtYiwgKCItd2Via2l0LW1lZGlhLXNsaWRlci10aHVtYiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBtZWRpYVNsaWRlclRodW1iKCItd2Via2l0LW1lZGlhLXNs
aWRlci10aHVtYiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBtZWRpYVNsaWRlclRodW1iOwogfQogCkBAIC02NDIsOCArNjQyLDggQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
CiAgICAgLy8gdGhhdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBzdHlsZSwgd2hpY2ggbWVhbnMgdGhl
IHN0eWxlIG5lZWRzIHRvIGJlIGNvbXB1dGVkIHR3aWNlIHRvIGdldAogICAgIC8vIGEgY29ycmVj
dCB2YWx1ZTogb25jZSB0byBnZXQgdGhlIElucHV0J3MgYXBwZWFyYW5jZSwgdGhlbiBhIHNlY29u
ZCB0aW1lIHRvIHN0eWxlIHRoZSBzaGFkb3cgdHJlZSBjb3JyZWN0bHkuCiAKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtZWRpYVNsaWRlckNv
bnRhaW5lciwgKCItd2Via2l0LW1lZGlhLXNsaWRlci1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2xpZGVyQ29udGFpbmVyLCAoIi13ZWJraXQtc2xpZGVy
LWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBtZWRpYVNsaWRlckNvbnRh
aW5lcigiLXdlYmtpdC1tZWRpYS1zbGlkZXItY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gc2xpZGVyQ29udGFpbmVyKCItd2Via2l0LXNsaWRlci1jb250YWluZXIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIGlmICghaXM8SFRNTElucHV0
RWxlbWVudD4oKnNoYWRvd0hvc3QoKSkpCiAgICAgICAgIHJldHVybiBzbGlkZXJDb250YWluZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcAppbmRleCA4NzMyOTI1Li5h
NDJlMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTM4
LDQyICszOCw0MyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZlLCAoImFsdGVy
bmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHRlcm5h
dGl2ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktl
eXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIGRlc2NyaXB0aW9uLCAoImRlc2NyaXB0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IGRlc2NyaXB0aW9uKCJkZXNjcmlwdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWFpbiwgKCJtYWluIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IG1haW4oIm1haW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gbWFpbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1Ry
YWNrOjptYWluRGVzY0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW5EZXNjLCAoIm1haW4tZGVzYyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBtYWluRGVzYygibWFpbi1kZXNjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1haW5EZXNjOwogfQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhbnNsYXRpb24sICgi
dHJhbnNsYXRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdHJhbnNsYXRpb24oInRyYW5zbGF0
aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHRy
YW5zbGF0aW9uOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRh
cnlLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBjb21tZW50YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gY29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggMGQ5YTJiNi4uNzI5ZjUyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtNDksNTUgKzQ5LDU1IEBAIHN0YXRpYyBj
b25zdCBpbnQgaW52YWxpZFRyYWNrSW5kZXggPSAtMTsKIAogY29uc3QgQXRvbWljU3RyaW5nJiBU
ZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc3VidGl0bGVzOwogfQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0
aW9ucywgKCJjYXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjYXB0aW9ucygi
Y2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gY2FwdGlvbnM7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpkZXNjcmlw
dGlvbnNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbnMsICgiZGVzY3JpcHRpb25zIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IGRlc2NyaXB0aW9ucygiZGVzY3JpcHRpb25zIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uczsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmNoYXB0ZXJzS2V5d29yZCgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2hh
cHRlcnMsICgiY2hhcHRlcnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2hhcHRlcnMo
ImNoYXB0ZXJzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIGNoYXB0ZXJzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6bWV0YWRh
dGFLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBtZXRhZGF0YSwgKCJtZXRhZGF0YSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBtZXRhZGF0YSgibWV0YWRhdGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gbWV0YWRhdGE7CiB9CiAgICAgCiBjb25zdCBBdG9taWNTdHJp
bmcmIFRleHRUcmFjazo6Zm9yY2VkS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9yY2VkLCAoImZvcmNlZCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBmb3JjZWQoImZvcmNlZCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBmb3JjZWQ7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgVGV4dFRyYWNrOjpkaXNhYmxlZEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG9wZW4sICgiZGlzYWJsZWQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gb3BlbigiZGlzYWJsZWQiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gb3BlbjsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmhpZGRlbktleXdvcmQoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNsb3NlZCwgKCJoaWRk
ZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2xvc2VkKCJoaWRkZW4iLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY2xvc2VkOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGVuZGVkLCAo
InNob3dpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZW5kZWQoInNob3dpbmciLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IDY0ZTZmZDIu
LjdlNTkyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBjdWVTaGFkb3dQc2V1ZG9JZCgpCiAgICAgewotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjdWUsICgiY3VlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjdWUoImN1ZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gY3VlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IDdhYzg2NjEuLjAyMzBmNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTcyLDMxICs3MiwzMSBAQCBDT01QSUxFX0FT
U0VSVChXVEZfQVJSQVlfTEVOR1RIKGRpc3BsYXlBbGlnbm1lbnRNYXApID09IFZUVEN1ZTo6TnVt
YmVyT2ZBbGlnbm1lbgogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiBzdGFydEtleXdvcmQoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0YXJ0LCAo
QVNDSUlMaXRlcmFsKCJzdGFydCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IFN0cmluZz4gc3RhcnQoQVNDSUlMaXRlcmFsKCJzdGFydCIpKTsKICAgICByZXR1cm4gc3RhcnQ7
CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIG1pZGRsZUtleXdvcmQoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIG1pZGRsZSwgKEFTQ0lJTGl0
ZXJhbCgibWlkZGxlIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5n
PiBtaWRkbGUoQVNDSUlMaXRlcmFsKCJtaWRkbGUiKSk7CiAgICAgcmV0dXJuIG1pZGRsZTsKIH0K
IAogc3RhdGljIGNvbnN0IFN0cmluZyYgZW5kS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZW5kLCAoQVNDSUlMaXRlcmFsKCJlbmQi
KSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGVuZChBU0NJSUxp
dGVyYWwoImVuZCIpKTsKICAgICByZXR1cm4gZW5kOwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5n
JiBsZWZ0S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgbGVmdCwgKCJsZWZ0IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IGxlZnQoImxlZnQiKTsKICAgICByZXR1cm4gbGVmdDsKIH0KIAogc3RhdGlj
IGNvbnN0IFN0cmluZyYgcmlnaHRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCByaWdodCwgKCJyaWdodCIpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiByaWdodCgicmlnaHQiKTsKICAgICByZXR1cm4g
cmlnaHQ7CiB9CiAKQEAgLTEwNywxMyArMTA3LDEzIEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGhv
cml6b250YWxLZXl3b3JkKCkKIAogc3RhdGljIGNvbnN0IFN0cmluZyYgdmVydGljYWxHcm93aW5n
TGVmdEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIHZlcnRpY2FscmwsIChBU0NJSUxpdGVyYWwoInJsIikpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2ZXJ0aWNhbHJsKEFTQ0lJTGl0ZXJhbCgicmwi
KSk7CiAgICAgcmV0dXJuIHZlcnRpY2Fscmw7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHZl
cnRpY2FsR3Jvd2luZ1JpZ2h0S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdmVydGljYWxsciwgKEFTQ0lJTGl0ZXJhbCgibHIiKSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZlcnRpY2FsbHIoQVND
SUlMaXRlcmFsKCJsciIpKTsKICAgICByZXR1cm4gdmVydGljYWxscjsKIH0KIApAQCAtMjI1LDcg
KzIyNSw3IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6
ZSYgdmlkZW9TaXplKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZUVEN1ZUJveDo6dnR0Q3VlQm94
U2hhZG93UHNldWRvSWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkLCAoIi13ZWJr
aXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2st
ZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZDsKIH0KIApAQCAtMjM4LDcgKzIzOCw3IEBA
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVlRUQ3VlOjpj
dWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkLCAo
Ii13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEt
dGV4dC10cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQ7CiB9CiAKQEAg
LTU5Nyw3ICs1OTcsNyBAQCBzdGF0aWMgYm9vbCBpc0N1ZVBhcmFncmFwaFNlcGFyYXRvcihVQ2hh
ciBjaGFyYWN0ZXIpCiAKIHZvaWQgVlRUQ3VlOjpkZXRlcm1pbmVUZXh0RGlyZWN0aW9uKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBydFRhZywg
KEFTQ0lJTGl0ZXJhbCgicnQiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBT
dHJpbmc+IHJ0VGFnKEFTQ0lJTGl0ZXJhbCgicnQiKSk7CiAgICAgY3JlYXRlV2ViVlRUTm9kZVRy
ZWUoKTsKICAgICBpZiAoIW1fd2ViVlRUTm9kZVRyZWUpCiAgICAgICAgIHJldHVybjsKQEAgLTc0
MSw3ICs3NDEsNyBAQCB2b2lkIFZUVEN1ZTo6Y2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKQog
ICAgIAogdm9pZCBWVFRDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMoQ29udGFpbmVyTm9kZSog
cm9vdCwgY29uc3QgTWVkaWFUaW1lJiBwcmV2aW91c1RpbWVzdGFtcCwgY29uc3QgTWVkaWFUaW1l
JiBtb3ZpZVRpbWUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IFN0cmluZywgdGltZXN0YW1wVGFnLCAoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHRpbWVzdGFtcFRhZyhBU0NJSUxp
dGVyYWwoInRpbWVzdGFtcCIpKTsKICAgICAKICAgICBib29sIGlzUGFzdE5vZGUgPSB0cnVlOwog
ICAgIE1lZGlhVGltZSBjdXJyZW50VGltZXN0YW1wID0gcHJldmlvdXNUaW1lc3RhbXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKaW5kZXggODU3OTg2OC4uOTQxMWY3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMTg4LDcgKzE4OCw3
IEBAIHZvaWQgVlRUUmVnaW9uOjpzZXRWaWV3cG9ydEFuY2hvclkoZG91YmxlIHZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKIAogY29uc3QgQXRvbWljU3RyaW5nIFZUVFJlZ2lvbjo6c2Nyb2xsKCkg
Y29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCB1cFNjcm9sbFZhbHVlS2V5d29yZCwgKCJ1cCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiB1cFNjcm9sbFZhbHVlS2V5d29yZCgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKIAogICAgIGlmIChtX3Njcm9sbCkKICAgICAgICAgcmV0dXJuIHVwU2Ny
b2xsVmFsdWVLZXl3b3JkOwpAQCAtMTk4LDcgKzE5OCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyBW
VFRSZWdpb246OnNjcm9sbCgpIGNvbnN0CiAKIHZvaWQgVlRUUmVnaW9uOjpzZXRTY3JvbGwoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdXBTY3JvbGxWYWx1
ZUtleXdvcmQsICgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdXBTY3JvbGxWYWx1
ZUtleXdvcmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAg
ICBpZiAodmFsdWUgIT0gZW1wdHlTdHJpbmcoKSAmJiB2YWx1ZSAhPSB1cFNjcm9sbFZhbHVlS2V5
d29yZCkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CkBAIC0yNjgsNyArMjY4LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIHBhcnNlZEVudGlyZVJ1bihjb25zdCBWVFRTY2FubmVyJiBpbnB1dCwg
Y29uc3QgVlRUU2Nhbm5lcjo6UnUKIAogdm9pZCBWVFRSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVl
KFJlZ2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2Nyb2xsVXBWYWx1
ZUtleXdvcmQsICgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc2Nyb2xsVXBWYWx1
ZUtleXdvcmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAg
ICBWVFRTY2FubmVyOjpSdW4gdmFsdWVSdW4gPSBpbnB1dC5jb2xsZWN0VW50aWw8aXNIVE1MU3Bh
Y2U8VUNoYXI+PigpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBWVFRSZWdpb246OnBhcnNl
U2V0dGluZ1ZhbHVlKFJlZ2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFNjcm9sbDoKLSAgICAgICAgaWYgKGlucHV0
LnNjYW5SdW4odmFsdWVSdW4sIHNjcm9sbFVwVmFsdWVLZXl3b3JkKSkKKyAgICAgICAgaWYgKGlu
cHV0LnNjYW5SdW4odmFsdWVSdW4sIHNjcm9sbFVwVmFsdWVLZXl3b3JkLmdldCgpKSkKICAgICAg
ICAgICAgIG1fc2Nyb2xsID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiVlRUUmVnaW9uOjpwYXJzZVNldHRpbmdWYWx1ZSwgaW52YWxpZCBTY3JvbGwiKTsKQEAg
LTMyNiw3ICszMjYsNyBAQCB2b2lkIFZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUoUmVnaW9u
U2V0dGluZyBzZXR0aW5nLCBWVFRTY2FubmVyJiBpbnB1dCkKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBWVFRSZWdpb246OnRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFj
a1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzLCAoInNjcm9sbGluZyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNz
KCJzY3JvbGxpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAg
IHJldHVybiB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKaW5kZXggOTc0ZTQ5Ny4uNzM0MDkzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBAIC00NywzNyArNDcs
MzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJh
Y2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx0ZXJuYXRpdmUoImFsdGVybmF0aXZlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGFsdGVybmF0aXZl
OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgY2FwdGlvbnMsICgiY2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2Fw
dGlvbnMoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIGNhcHRpb25zOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6
Om1haW5LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNT
dHJpbmc+IGNhcHRpb25zKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIGNhcHRpb25zOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVv
VHJhY2s6OnNpZ25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBzaWduLCAoInNpZ24iLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gc2lnbigic2lnbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBzaWduOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6
OnN1YnRpdGxlc0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc3VidGl0bGVzOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50YXJ5
LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY29tbWVudGFyeSgi
Y29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBjb21tZW50YXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRF
bGVtZW50LmNwcAppbmRleCBhM2MwMzY2Li4xZjYxMGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFnTmFt
ZShXZWJWVFROb2RlVHlwZSBub2RlVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgY1RhZywgKG51bGxBdG9tLCAiYyIsIG51bGxBdG9tKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZUYWcs
IChudWxsQXRvbSwgInYiLCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChRdWFsaWZpZWROYW1lLCBsYW5nVGFnLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0
b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwg
YlRhZywgKG51bGxBdG9tLCAiYiIsIG51bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHVUYWcsIChudWxsQXRvbSwgInUiLCBudWxsQXRv
bSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBp
VGFnLCAobnVsbEF0b20sICJpIiwgbnVsbEF0b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgcnVieVRhZywgKG51bGxBdG9tLCAicnVieSIsIG51
bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5h
bWUsIHJ0VGFnLCAobnVsbEF0b20sICJydCIsIG51bGxBdG9tKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGNUYWcobnVsbEF0b20sICJjIiwgbnVsbEF0b20pOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2VGFnKG51bGxBdG9tLCAi
diIsIG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4g
bGFuZ1RhZyhudWxsQXRvbSwgImxhbmciLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFF1YWxpZmllZE5hbWU+IGJUYWcobnVsbEF0b20sICJiIiwgbnVsbEF0b20pOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxBdG9tLCAidSIs
IG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gaVRh
ZyhudWxsQXRvbSwgImkiLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1
YWxpZmllZE5hbWU+IHJ1YnlUYWcobnVsbEF0b20sICJydWJ5IiwgbnVsbEF0b20pOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydFRhZyhudWxsQXRvbSwgInJ0Iiwg
bnVsbEF0b20pOwogICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKICAgICBjYXNlIFdlYlZUVE5vZGVU
eXBlQ2xhc3M6CiAgICAgICAgIHJldHVybiBjVGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVEVsZW1lbnQuaAppbmRleCA4OWQzZDJjLi41ZWZkYzE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsMTMgKzYz
LDEzIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUF0
dHJpYnV0ZU5hbWUoKQogICAgIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxBdG9tLCAidm9pY2UiLCBudWxsQXRv
bSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VB
dHRyKG51bGxBdG9tLCAidm9pY2UiLCBudWxsQXRvbSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0
dHI7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0
cmlidXRlTmFtZSgpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoUXVhbGlmaWVkTmFtZSwgdm9pY2VBdHRyLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20p
KTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZvaWNlQXR0
cihudWxsQXRvbSwgImxhbmciLCBudWxsQXRvbSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5k
ZXggMTkyMjAxMC4uOWViMTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpoYXNSZXF1
aXJlZEZpbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbGluZSkKIHZvaWQgV2ViVlRUUGFyc2Vy
Ojpjb2xsZWN0TWV0YWRhdGFIZWFkZXIoY29uc3QgU3RyaW5nJiBsaW5lKQogewogICAgIC8vIFdl
YlZUVCBoZWFkZXIgcGFyc2luZyAoV2ViVlRUIHBhcnNlciBhbGdvcml0aG0gc3RlcCAxMikKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCByZWdp
b25IZWFkZXJOYW1lLCAoIlJlZ2lvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiByZWdp
b25IZWFkZXJOYW1lKCJSZWdpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKIAogICAgIC8vIFN0ZXAgMTIuNCBJZiBsaW5lIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgIjoi
IChBIFUrMDAzQSBDT0xPTiksIHRoZW4gc2V0IG1ldGFkYXRhJ3MKICAgICAvLyBuYW1lIHRvIHRo
ZSBzdWJzdHJpbmcgb2YgbGluZSBiZWZvcmUgdGhlIGZpcnN0ICI6IiBjaGFyYWN0ZXIgYW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAx
MWU1MjQ5Li5lOWIzMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTc5LDEwICs3OSwxMCBAQCBlbnVtIEZvcmNlUHNldWRvQ2xhc3NG
bGFncyB7CiAKIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlUHNldWRvQ2xhc3NNYXNrKGNvbnN0IElu
c3BlY3RvckFycmF5JiBwc2V1ZG9DbGFzc0FycmF5KQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGFjdGl2ZSwgKEFTQ0lJTGl0ZXJhbCgiYWN0aXZlIikpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBob3ZlciwgKEFTQ0lJ
TGl0ZXJhbCgiaG92ZXIiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGZvY3VzLCAoQVNDSUlMaXRlcmFsKCJmb2N1cyIpKSk7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdmlzaXRlZCwgKEFTQ0lJTGl0ZXJhbCgidmlzaXRl
ZCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWN0aXZlKEFTQ0lJTGl0
ZXJhbCgiYWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGhvdmVy
KEFTQ0lJTGl0ZXJhbCgiaG92ZXIiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gZm9jdXMoQVNDSUlMaXRlcmFsKCJmb2N1cyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiB2aXNpdGVkKEFTQ0lJTGl0ZXJhbCgidmlzaXRlZCIpKTsKICAgICBpZiAoIXBz
ZXVkb0NsYXNzQXJyYXkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBQc2V1ZG9DbGFzc05vbmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
aW5kZXggNWNlOGMyNi4uZDY2MDIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTIzMCw4ICsyMzAsOCBAQCB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJh
bWUqIGZyYW1lLAogLy9zdGF0aWMKIFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1h
cFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIVFRQSGVhZGVy
LCAoQVNDSUlMaXRlcmFsKCJTb3VyY2VNYXAiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkLCAoQVNDSUlM
aXRlcmFsKCJYLVNvdXJjZU1hcCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc291cmNlTWFwSFRUUEhlYWRlcihBU0NJSUxpdGVyYWwoIlNvdXJjZU1hcCIpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRl
ZChBU0NJSUxpdGVyYWwoIlgtU291cmNlTWFwIikpOwogCiAgICAgaWYgKCFjYWNoZWRSZXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDQxODMzMzAuLjQ3NjFlNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTg4MCw3ICs4ODAsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
U2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIoYwogCiBzdGF0aWMgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2Vs
ZWN0b3I+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1bGVTb3VyY2VEYXRhKiBzb3Vy
Y2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBz
ZWxlY3Rvckxpc3QsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24sIGNvbW1lbnQsICgiL1xc
KlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJs
ZWQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVz
c2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6Ollh
cnI6Ok11bHRpbGluZUVuYWJsZWQpOwogCiAgICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3Jl
YXRlKCk7CiAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZp
cnN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCBmMWFkZjFkLi4yMDBlYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxpbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFja0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKQEAg
LTczLDggKzc0LDggQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVp
bmdEZXN0cm95ZWQpCiAKIFN0cmluZyBQYWdlRGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9y
U2NyaXB0KGNvbnN0IFNjcmlwdCYgc2NyaXB0KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXIsIChBU0NJSUxpdGVyYWwoIlNv
dXJjZU1hcCIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
c291cmNlTWFwSFRUUEhlYWRlckRlcHJlY2F0ZWQsIChBU0NJSUxpdGVyYWwoIlgtU291cmNlTWFw
IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVh
ZGVyKEFTQ0lJTGl0ZXJhbCgiU291cmNlTWFwIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkKEFTQ0lJTGl0ZXJhbCgiWC1T
b3VyY2VNYXAiKSk7CiAKICAgICBpZiAoIXNjcmlwdC51cmwuaXNFbXB0eSgpKSB7CiAgICAgICAg
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1fcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZSgm
bV9wYWdlLm1haW5GcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3JpcHQudXJsKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCBlZDE3ZmE5Li4yOGVmMDdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2
b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
CiAgICAgICAgIG1faGFzUGVuZGluZ0Vycm9yRXZlbnQgPSB0cnVlOwogICAgICAgICBlcnJvckV2
ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24oKnRoaXMpOwogCi0gICAgICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRl
cmFsKCJDcm9zcy1vcmlnaW4gaW1hZ2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291
cmNlIFNoYXJpbmcgcG9saWN5LiIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIGltYWdlIGxv
YWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAg
ICAgICAgIGVsZW1lbnQoKS5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7CiAKICAg
ICAgICAgQVNTRVJUKCFtX2hhc1BlbmRpbmdMb2FkRXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCA0MGU5YWQ1Li42ZGExMDgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZv
aWQgVGV4dFRyYWNrTG9hZGVyOjpkZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjCiAKIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5
UHJldmVudGVkTG9hZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiB0ZXh0IHRy
YWNrIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4i
KSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFT
Q0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHRleHQgdHJhY2sgbG9hZCBkZW5pZWQgYnkgQ3Jvc3Mt
T3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKTsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICBk
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICBtX3N0YXRlID0gRmFpbGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmNwcAppbmRleCA1YWQ1N2VjLi5hMDVkYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODcsNyArODgsNyBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIENhY2hlZFJlc291cmNlUmVxdWVzdDo6aW5pdGlhdG9yTmFtZSgpIGNvbnN0CiAg
ICAgaWYgKCFtX2luaXRpYXRvck5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9pbml0
aWF0b3JOYW1lOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgZGVmYXVsdE5hbWUsICgicmVzb3VyY2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZGVm
YXVsdE5hbWUoInJlc291cmNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIGRlZmF1bHROYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBmZWYzOGQ3Li4yYjY0M2I1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJTdWRkZW5UZXJtaW5hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBv
b2wuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogLy8gRm9yIG1ldGhv
ZHMgdGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9ydCBBUEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgLSBz
aG91bGQgbm90IGJlIGNhbGxlZCBpbnRlcm5hbGx5CkBAIC04NzksOCArODgwLDggQEAgU3RyaW5n
IEljb25EYXRhYmFzZTo6ZGF0YWJhc2VQYXRoKCkgY29uc3QKIAogU3RyaW5nIEljb25EYXRhYmFz
ZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lLCAoQVNDSUlMaXRlcmFs
KCJXZWJwYWdlSWNvbnMuZGIiKSkpOwotICAgIHJldHVybiBkZWZhdWx0RGF0YWJhc2VGaWxlbmFt
ZS5pc29sYXRlZENvcHkoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkZWZh
dWx0RGF0YWJhc2VGaWxlbmFtZShBU0NJSUxpdGVyYWwoIldlYnBhZ2VJY29ucy5kYiIpKTsKKyAg
ICByZXR1cm4gZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUuZ2V0KCkuaXNvbGF0ZWRDb3B5KCk7CiB9
CiAKIC8vIFVubGlrZSBnZXRPckNyZWF0ZVBhZ2VVUkxSZWNvcmQoKSwgZ2V0T3JDcmVhdGVJY29u
UmVjb3JkKCkgZG9lcyBub3QgbWFyayB0aGUgaWNvbiBhcyAiaW50ZXJlc3RlZCBpbiBpbXBvcnQi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAppbmRl
eCBhOTc0Y2Q4Li4xNjNlYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJVc2VyU3R5bGVT
aGVldFR5cGVzLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjg0LDcgKzI4NSw3IEBAIHZvaWQg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoY29u
c3QgU3RyaW5nJiBvdmVycmlkCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVwZGF0ZUNh
cHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpCiB7CiAgICAgLy8gSWRlbnRpZnkgb3VyIG92ZXJyaWRl
IHN0eWxlIHNoZWV0IHdpdGggYSB1bmlxdWUgVVJMIC0gYSBuZXcgc2NoZW1lIGFuZCBhIFVVSUQu
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTCwgY2FwdGlvbnNTdHlsZVNo
ZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYx
Mi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVSTD4gY2FwdGlvbnNTdHlsZVNoZWV0VVJMKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2Fw
dGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIik7CiAK
ICAgICBhdXRvJiBwYWdlcyA9IG1fcGFnZUdyb3VwLnBhZ2VzKCk7CiAgICAgZm9yIChhdXRvJiBw
YWdlIDogcGFnZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggNmExZTliNy4uNzJjYWIxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjaW5jbHVk
ZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgpAQCAtMjQ2LDcgKzI0Nyw3IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGRlZmF1
bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNwZWNpZmllZCBpbiBtZWRpYUNv
bnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXBhc3Qtbm9kZXMKICAgICAv
LyBhbmQgd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZnV0dXJlLW5vZGVzLgotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKENv
bG9yKDAsIDAsIDAsIDAuOCAqIDI1NSkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q29s
b3I+IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMCwgMC44ICogMjU1KTsKIAogICAgIE1B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKIApAQCAtMzQ5LDEwICszNTAsMTAg
QEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjb2xvclByb3BlcnR5Q1NT
KENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IEMKIAogU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRFZGdlQ1NTKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVSYWlzZWQsICgiIC0u
MDVlbSAtLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlRGVwcmVz
c2VkLCAoIiAuMDVlbSAuMDVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5
bGVEcm9wU2hhZG93LCAoIiAuMDc1ZW0gLjA3NWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGVkZ2VTdHlsZVVuaWZvcm0sICgiIC4wM2VtICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlZGdlU3R5
bGVSYWlzZWQoQVNDSUlMaXRlcmFsKCIgLS4wNWVtIC0uMDVlbSAwICIpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlZGdlU3R5bGVEZXByZXNzZWQoQVNDSUlMaXRl
cmFsKCIgLjA1ZW0gLjA1ZW0gMCAiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IFN0cmluZz4gZWRnZVN0eWxlRHJvcFNoYWRvdyhBU0NJSUxpdGVyYWwoIiAuMDc1ZW0gLjA3NWVt
IDAgIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGVkZ2VTdHls
ZVVuaWZvcm0oQVNDSUlMaXRlcmFsKCIgLjAzZW0gIikpOwogCiAgICAgYm9vbCB1bnVzZWQ7CiAg
ICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcih1bnVzZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGM0NjExOGQuLjA1OWJi
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwpAQCAtOTk0LDcgKzk5NSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2VB
bmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0CiAKIGJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRV
UkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFT
Q0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIEphdmFTY3JpcHQgVVJMIGJlY2F1c2UgaXQg
dmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6
ICIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2Uo
QVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBVUkwgYmVjYXVzZSBp
dCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZTogIikpOwogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja0lubGluZUFu
ZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBj
b25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIHRydWUpCiAgICAgICAgIDog
KG1fcmVwb3J0T25seSB8fCBjaGVja0lubGluZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRT
cmMuZ2V0KCkpKSk7CkBAIC0xMDAyLDcgKzEwMDMsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
OgogCiBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhjb25z
dCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExp
bmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1
cykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBj
b25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIGlubGluZSBl
dmVudCBoYW5kbGVyIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUg
aW5saW5lIGV2ZW50IGhhbmRsZXIgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENv
bnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpOwogICAgIHJldHVybiByZXBvcnRp
bmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRS
ZXBvcnQgPwogICAgICAgICBjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVE
aXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwg
Y29udGV4dExpbmUsIHRydWUpCiAgICAgICAgIDogKG1fcmVwb3J0T25seSB8fCBjaGVja0lubGlu
ZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpKSk7CkBAIC0xMDEwLDcgKzEw
MTEsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhj
b25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0CiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9y
ZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVz
ZWQgdG8gZXhlY3V0ZSBpbmxpbmUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxv
d2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1
c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xs
b3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7CiAgICAgcmV0dXJu
IHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
czo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKG9w
ZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVNZXNzYWdlLCBjb250
ZXh0VVJMLCBjb250ZXh0TGluZSwgdHJ1ZSkgOgogICAgICAgICAobV9yZXBvcnRPbmx5IHx8IGNo
ZWNrSW5saW5lKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSkpKTsKQEAgLTEw
MTgsNyArMTAxOSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHQo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yCiAKIGJvb2wgQ1NQRGlyZWN0
aXZlTGlzdDo6YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0
IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJh
bCgiUmVmdXNlZCB0byBhcHBseSBpbmxpbmUgc3R5bGUgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUg
Zm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwo
IlJlZnVzZWQgdG8gYXBwbHkgaW5saW5lIHN0eWxlIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZv
bGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKICAgICByZXR1
cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzOjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24o
b3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29u
dGV4dFVSTCwgY29udGV4dExpbmUsIGZhbHNlKSA6CiAgICAgICAgIChtX3JlcG9ydE9ubHkgfHwg
Y2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpKSk7CkBAIC0x
MDI2LDcgKzEwMjcsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZAogCiBib29sIENTUERpcmVj
dGl2ZUxpc3Q6OmFsbG93RXZhbChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFT
Q0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBldmFsdWF0ZSBzY3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRl
cyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxp
dGVyYWwoIlJlZnVzZWQgdG8gZXZhbHVhdGUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhl
IGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKICAgICBy
ZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzOjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tFdmFsQW5kUmVwb3J0VmlvbGF0aW9u
KG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVNZXNzYWdlLCBT
dHJpbmcoKSwgV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBzdGF0ZSkgOgogICAg
ICAgICAobV9yZXBvcnRPbmx5IHx8IGNoZWNrRXZhbChvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3Jp
cHRTcmMuZ2V0KCkpKSk7CkBAIC0xNjc2LDEyICsxNjc3LDEyIEBAIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBj
b25zdCBTCiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRVbnN1cHBvcnRlZERp
cmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgYWxsb3csIChBU0NJSUxpdGVyYWwoImFsbG93IikpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBvcHRpb25zLCAoQVND
SUlMaXRlcmFsKCJvcHRpb25zIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBwb2xpY3lVUkksIChBU0NJSUxpdGVyYWwoInBvbGljeS11cmkiKSkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFsbG93TWVzc2FnZSwgKEFT
Q0lJTGl0ZXJhbCgiVGhlICdhbGxvdycgZGlyZWN0aXZlIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGgg
J2RlZmF1bHQtc3JjJy4gUGxlYXNlIHVzZSB0aGF0IGRpcmVjdGl2ZSBpbnN0ZWFkLCBhcyAnYWxs
b3cnIGhhcyBubyBlZmZlY3QuIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBvcHRpb25zTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiVGhlICdvcHRpb25zJyBk
aXJlY3RpdmUgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCAndW5zYWZlLWlubGluZScgYW5kICd1bnNh
ZmUtZXZhbCcgc291cmNlIGV4cHJlc3Npb25zIGZvciB0aGUgJ3NjcmlwdC1zcmMnIGFuZCAnc3R5
bGUtc3JjJyBkaXJlY3RpdmVzLiBQbGVhc2UgdXNlIHRob3NlIGRpcmVjdGl2ZXMgaW5zdGVhZCwg
YXMgJ29wdGlvbnMnIGhhcyBubyBlZmZlY3QuIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBwb2xpY3lVUklNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJUaGUg
J3BvbGljeS11cmknIGRpcmVjdGl2ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHNwZWNpZmlj
YXRpb24uIFBsZWFzZSBzcGVjaWZ5IGEgY29tcGxldGUgcG9saWN5IHZpYSB0aGUgQ29udGVudC1T
ZWN1cml0eS1Qb2xpY3kgaGVhZGVyLiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gYWxsb3coQVNDSUlMaXRlcmFsKCJhbGxvdyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBvcHRpb25zKEFTQ0lJTGl0ZXJhbCgib3B0aW9ucyIpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwb2xpY3lVUkkoQVNDSUlMaXRlcmFsKCJwb2xpY3kt
dXJpIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFsbG93TWVzc2FnZShB
U0NJSUxpdGVyYWwoIlRoZSAnYWxsb3cnIGRpcmVjdGl2ZSBoYXMgYmVlbiByZXBsYWNlZCB3aXRo
ICdkZWZhdWx0LXNyYycuIFBsZWFzZSB1c2UgdGhhdCBkaXJlY3RpdmUgaW5zdGVhZCwgYXMgJ2Fs
bG93JyBoYXMgbm8gZWZmZWN0LiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiBvcHRpb25zTWVzc2FnZShBU0NJSUxpdGVyYWwoIlRoZSAnb3B0aW9ucycgZGlyZWN0aXZlIGhh
cyBiZWVuIHJlcGxhY2VkIHdpdGggJ3Vuc2FmZS1pbmxpbmUnIGFuZCAndW5zYWZlLWV2YWwnIHNv
dXJjZSBleHByZXNzaW9ucyBmb3IgdGhlICdzY3JpcHQtc3JjJyBhbmQgJ3N0eWxlLXNyYycgZGly
ZWN0aXZlcy4gUGxlYXNlIHVzZSB0aG9zZSBkaXJlY3RpdmVzIGluc3RlYWQsIGFzICdvcHRpb25z
JyBoYXMgbm8gZWZmZWN0LiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBw
b2xpY3lVUklNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiVGhlICdwb2xpY3ktdXJpJyBkaXJlY3RpdmUg
aGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uLiBQbGVhc2Ugc3BlY2lmeSBh
IGNvbXBsZXRlIHBvbGljeSB2aWEgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGhlYWRlci4i
KSk7CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgYWxsb3cpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDk5YTlmNWEuLjg2MmI5
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTExMCw2ICsxMTAsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xODUsMTMgKzE4NiwxMyBAQCB0eXBl
ZGVmIEhhc2hDb3VudGVkU2V0PERPTVdpbmRvdyo+IERPTVdpbmRvd1NldDsKIAogc3RhdGljIERP
TVdpbmRvd1NldCYgd2luZG93c1dpdGhVbmxvYWRFdmVudExpc3RlbmVycygpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKERPTVdpbmRvd1NldCwgd2luZG93c1dpdGhVbmxv
YWRFdmVudExpc3RlbmVycywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxET01XaW5k
b3dTZXQ+IHdpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnM7CiAgICAgcmV0dXJuIHdpbmRv
d3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnM7CiB9CiAKIHN0YXRpYyBET01XaW5kb3dTZXQmIHdp
bmRvd3NXaXRoQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChET01XaW5kb3dTZXQsIHdpbmRvd3NXaXRoQmVmb3JlVW5sb2Fk
RXZlbnRMaXN0ZW5lcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE9NV2luZG93
U2V0PiB3aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzOwogICAgIHJldHVybiB3
aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMWNlN2I1NC4uOTE4MmQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1ZGUgIldpbmRvd3NL
ZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00MDEsNyArNDAyLDcgQEAgRXZlbnRIYW5k
bGVyOjp+RXZlbnRIYW5kbGVyKCkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogRHJhZ1N0YXRl
JiBFdmVudEhhbmRsZXI6OmRyYWdTdGF0ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKERyYWdTdGF0ZSwgc3RhdGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RHJhZ1N0YXRlPiBzdGF0ZTsKICAgICByZXR1cm4gc3RhdGU7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKERSQUdfU1VQUE9SVCkKQEAgLTMwNzYsMTAgKzMwNzcsMTAgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50
KQogCiBzdGF0aWMgRm9jdXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb25Gb3JLZXkoY29uc3QgQXRv
bWljU3RyaW5nJiBrZXlJZGVudGlmaWVyKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIERvd24sICgiRG93biIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBVcCwgKCJVcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBMZWZ0
LCAoIkxlZnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgUmlnaHQsICgiUmlnaHQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gRG93bigiRG93biIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IFVwKCJVcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IExlZnQoIkxlZnQiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBSaWdodCgiUmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKIAogICAgIEZvY3VzRGlyZWN0aW9uIHJldFZhbCA9IEZvY3VzRGlyZWN0aW9uTm9uZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBiNzYzMzY4Li43NDBlOWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNz
aW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICAvLyBS
RVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBv
biB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAg
V2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uLCB3b3JkUmVnRXhwLCAoIlxcdyIsIFRleHRDYXNl
U2Vuc2l0aXZlKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIsIFRleHRDYXNlU2Vuc2l0aXZlKTsKICAgICBT
dHJpbmdCdWlsZGVyIHBhdHRlcm47CiAgICAgcGF0dGVybi5hcHBlbmQoJygnKTsKICAgICB1bnNp
Z25lZCBpbnQgbnVtTGFiZWxzID0gbGFiZWxzLnNpemUoKTsKQEAgLTMxNyw4ICszMTcsOCBAQCBz
dGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAgICAgIGJvb2wgc3RhcnRzV2l0aFdvcmRDaGFyID0g
ZmFsc2U7CiAgICAgICAgIGJvb2wgZW5kc1dpdGhXb3JkQ2hhciA9IGZhbHNlOwogICAgICAgICBp
ZiAobGFiZWwubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IHdv
cmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAwOwotICAgICAgICAgICAg
ZW5kc1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3RyaW5nKGxhYmVs
Lmxlbmd0aCgpIC0gMSwgMSkpID49IDA7CisgICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXIg
PSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKKyAg
ICAgICAgICAgIGVuZHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVs
LnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAppbmRleCAwZjVl
MmJlLi4wYmUyZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAKICNpbmNsdWRlICJOZXR3
b3JrU3RhdGVOb3RpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgT1MoTElOVVgpCkBAIC05Myw3ICs5
NCw3IEBAIFN0cmluZyBOYXZpZ2F0b3JCYXNlOjpwbGF0Zm9ybSgpIGNvbnN0CiAgICAgaWYgKCFT
dHJpbmcoV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0pLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNOwogICAgIHN0cnVjdCB1dHNuYW1lIG9zbmFt
ZTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBwbGF0Zm9ybU5h
bWUsICh1bmFtZSgmb3NuYW1lKSA+PSAwID8gU3RyaW5nKG9zbmFtZS5zeXNuYW1lKSArIFN0cmlu
ZygiICIpICsgU3RyaW5nKG9zbmFtZS5tYWNoaW5lKSA6IGVtcHR5U3RyaW5nKCkpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwbGF0Zm9ybU5hbWUodW5hbWUoJm9zbmFtZSkg
Pj0gMCA/IFN0cmluZyhvc25hbWUuc3lzbmFtZSkgKyBTdHJpbmcoIiAiKSArIFN0cmluZyhvc25h
bWUubWFjaGluZSkgOiBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gcGxhdGZvcm1OYW1lOwog
I2Vsc2UKICAgICByZXR1cm4gV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcAppbmRleCBmNmNjYzE0Li43NDUwYzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAKQEAgLTMx
LDE0ICszMSwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBhZ2VWaXNpYmls
aXR5U3RhdGUuaCIKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFN0cmluZyBwYWdlVmlzaWJpbGl0eVN0YXRlU3RyaW5nKFBhZ2VWaXNp
YmlsaXR5U3RhdGUgc3RhdGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgdmlzaWJsZSwgKEFTQ0lJTGl0ZXJhbCgidmlzaWJsZSIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgaGlkZGVuLCAoQVND
SUlMaXRlcmFsKCJoaWRkZW4iKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHByZXJlbmRlciwgKEFTQ0lJTGl0ZXJhbCgicHJlcmVuZGVyIikpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2aXNpYmxlKEFTQ0lJTGl0
ZXJhbCgidmlzaWJsZSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5n
PiBoaWRkZW4oQVNDSUlMaXRlcmFsKCJoaWRkZW4iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IFN0cmluZz4gcHJlcmVuZGVyKEFTQ0lJTGl0ZXJhbCgicHJlcmVuZGVyIikpOwog
CiAgICAgc3dpdGNoIChzdGF0ZSkgewogICAgIGNhc2UgUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2li
bGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGUzOTgxNGIuLjNi
ZDMyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlx
dWVfcHRyPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsKIAogc3RhdGlj
IE9yaWdpbkFjY2Vzc01hcCYgb3JpZ2luQWNjZXNzTWFwKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoT3JpZ2luQWNjZXNzTWFwLCBvcmlnaW5BY2Nlc3NNYXAsICgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3JpZ2luQWNjZXNzTWFwPiBvcmlnaW5BY2Nlc3NN
YXA7CiAgICAgcmV0dXJuIG9yaWdpbkFjY2Vzc01hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDJlYTE4ZWMuLjY1NjljZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAogI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIsNyArNjMsNyBA
QCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPgogCiBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6
cGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHNjaGVtZVNlcGFyYXRvciwgKEFTQ0lJTGl0ZXJhbCgi
Oi8vIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBzY2hlbWVT
ZXBhcmF0b3IoQVNDSUlMaXRlcmFsKCI6Ly8iKSk7CiAKICAgICBzaXplX3Qgc2NoZW1lRW5kUG9z
ID0gcGF0dGVybi5maW5kKHNjaGVtZVNlcGFyYXRvcik7CiAgICAgaWYgKHNjaGVtZUVuZFBvcyA9
PSBub3RGb3VuZCkKQEAgLTcwLDcgKzcxLDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46
OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKIAogICAgIG1fc2NoZW1lID0gcGF0dGVybi5s
ZWZ0KHNjaGVtZUVuZFBvcyk7CiAKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRQb3MgPSBzY2hlbWVF
bmRQb3MgKyBzY2hlbWVTZXBhcmF0b3IubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgaG9zdFN0YXJ0
UG9zID0gc2NoZW1lRW5kUG9zICsgc2NoZW1lU2VwYXJhdG9yLmdldCgpLmxlbmd0aCgpOwogICAg
IGlmIChob3N0U3RhcnRQb3MgPj0gcGF0dGVybi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggNzg3ZjBhMC4uNDc0NTFjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApA
QCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
ckNvbXBhcmlzb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNjQ1LDE5ICs2
NDYsMTggQEAgc3RhdGljIGlubGluZSBzaXplX3Qgc2hhZG93TGlzdExlbmd0aChjb25zdCBTaGFk
b3dEYXRhKiBzaGFkb3cpCiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgU2hhZG93RGF0YSogc2hhZG93
Rm9yQmxlbmRpbmcoY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93LCBjb25zdCBTaGFkb3dEYXRh
KiBvdGhlclNoYWRvdykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU2hh
ZG93RGF0YSwgZGVmYXVsdFNoYWRvd0RhdGEsIChJbnRQb2ludCgpLCAwLCAwLCBOb3JtYWwsIGZh
bHNlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdEluc2V0U2hhZG93RGF0YSwgKEludFBvaW50KCksIDAs
IDAsIEluc2V0LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7Ci0KLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdFdlYktpdEJveFNoYWRvd0Rh
dGEsIChJbnRQb2ludCgpLCAwLCAwLCBOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCkp
OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0
SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIHRydWUs
IENvbG9yOjp0cmFuc3BhcmVudCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dE
YXRhPiBkZWZhdWx0U2hhZG93RGF0YShJbnRQb2ludCgpLCAwLCAwLCBOb3JtYWwsIGZhbHNlLCBD
b2xvcjo6dHJhbnNwYXJlbnQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRh
PiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKEludFBvaW50KCksIDAsIDAsIEluc2V0LCBmYWxzZSwg
Q29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0
YT4gZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFsLCB0
cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFk
b3dEYXRhPiBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKEludFBvaW50KCksIDAsIDAs
IEluc2V0LCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnQpOwogCiAgICAgaWYgKHNyY1NoYWRvdykK
ICAgICAgICAgcmV0dXJuIHNyY1NoYWRvdzsKIAogICAgIGlmIChvdGhlclNoYWRvdy0+c3R5bGUo
KSA9PSBJbnNldCkKLSAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRv
dygpID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEgOiAmZGVmYXVsdEluc2V0U2hh
ZG93RGF0YTsKKyAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygp
ID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAmZGVmYXVsdEluc2V0
U2hhZG93RGF0YS5nZXQoKTsKIAotICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hT
aGFkb3coKSA/ICZkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YSA6ICZkZWZhdWx0U2hhZG93RGF0
YTsKKyAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVs
dFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiAmZGVmYXVsdFNoYWRvd0RhdGEuZ2V0KCk7CiB9
CiAKIGNsYXNzIFByb3BlcnR5V3JhcHBlclNoYWRvdyA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0
eVdyYXBwZXJCYXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
b21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IGI4MjIyNTYuLjY1NTFkNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTIyMSw3ICsyMjIsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBk
YXRlS2V5ZnJhbWVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBSZW5kZQogICAg
ICAgICAvLyBUb3NzIHRoZSBhbmltYXRpb24gb3JkZXIgbWFwLgogICAgICAgICBtX2tleWZyYW1l
QW5pbWF0aW9uT3JkZXJNYXAuY2xlYXIoKTsKIAotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBub25lLCAoIm5vbmUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5vdyBtYXJrIGFueSBzdGlsbCBh
Y3RpdmUgYW5pbWF0aW9ucyBhcyBhY3RpdmUgYW5kIGFkZCBhbnkgbmV3IGFuaW1hdGlvbnMuCiAg
ICAgICAgIGlmICh0YXJnZXRTdHlsZS0+YW5pbWF0aW9ucygpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Vyc29yLmNwcAppbmRleCA5MzU5M2FkLi42MGE2MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1
cnNvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4OSwyNTkgKzE5
MCwyNTkgQEAgUGxhdGZvcm1DdXJzb3IgQ3Vyc29yOjpwbGF0Zm9ybUN1cnNvcigpIGNvbnN0CiAK
IGNvbnN0IEN1cnNvciYgcG9pbnRlckN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6UG9pbnRlcikpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpQb2ludGVyKTsKICAgICByZXR1cm4gYzsK
IH0KIAogY29uc3QgQ3Vyc29yJiBjcm9zc0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Q3Jvc3MpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Q3Jvc3MpOwogICAgIHJldHVybiBjOwog
fQogCiBjb25zdCBDdXJzb3ImIGhhbmRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkhhbmQpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6SGFuZCk7CiAgICAgcmV0dXJuIGM7CiB9CiAK
IGNvbnN0IEN1cnNvciYgbW92ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6TW92ZSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpNb3ZlKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiB2ZXJ0aWNhbFRleHRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlZlcnRpY2FsVGV4dCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpWZXJ0aWNhbFRleHQpOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNlbGxDdXJzb3IoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkNlbGwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Q2VsbCk7CiAgICAgcmV0
dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY29udGV4dE1lbnVDdXJzb3IoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkNvbnRleHRN
ZW51KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkNvbnRl
eHRNZW51KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBhbGlhc0N1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6QWxpYXMpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
QWxpYXMpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHpvb21JbkN1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6Wm9vbUluKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6
Olpvb21Jbik7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgem9vbU91dEN1cnNv
cigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1
cnNvcjo6Wm9vbU91dCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vy
c29yOjpab29tT3V0KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBjb3B5Q3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpDb3B5KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OkNvcHkpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vbmVDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6Ok5vbmUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
Tm9uZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgcHJvZ3Jlc3NDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6OlByb2dyZXNzKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OlByb2dyZXNzKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub0Ryb3BD
dXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMs
IChDdXJzb3I6Ok5vRHJvcCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMo
Q3Vyc29yOjpOb0Ryb3ApOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vdEFs
bG93ZWRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJz
b3IsIGMsIChDdXJzb3I6Ok5vdEFsbG93ZWQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Q3Vyc29yPiBjKEN1cnNvcjo6Tm90QWxsb3dlZCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0
IEN1cnNvciYgaUJlYW1DdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OklCZWFtKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEN1cnNvcj4gYyhDdXJzb3I6OklCZWFtKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3Qg
Q3Vyc29yJiB3YWl0Q3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpXYWl0KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEN1cnNvcj4gYyhDdXJzb3I6OldhaXQpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJz
b3ImIGhlbHBDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChD
dXJzb3IsIGMsIChDdXJzb3I6OkhlbHApKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vy
c29yPiBjKEN1cnNvcjo6SGVscCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYg
ZWFzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEN1cnNvciwgYywgKEN1cnNvcjo6RWFzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpFYXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAog
Y29uc3QgQ3Vyc29yJiBub3J0aFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhSZXNpemUpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhSZXNpemUpOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vcnRoRWFzdFJlc2l6ZUN1cnNvcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6
Tm9ydGhFYXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhD
dXJzb3I6Ok5vcnRoRWFzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNv
ciYgbm9ydGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aFdlc3RSZXNpemUpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhXZXN0UmVzaXplKTsKICAg
ICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBzb3V0aFJlc2l6ZUN1cnNvcigpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6U291
dGhSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
U291dGhSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNvdXRoRWFz
dFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6U291dGhFYXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRoRWFzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7
CiB9CiAKIGNvbnN0IEN1cnNvciYgc291dGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpTb3V0aFdlc3RS
ZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6U291
dGhXZXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiB3ZXN0UmVz
aXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29y
LCBjLCAoQ3Vyc29yOjpXZXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1
cnNvcj4gYyhDdXJzb3I6Oldlc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIG5vcnRoU291dGhSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoU291dGhSZXNpemUpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhTb3V0aFJlc2l6
ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgZWFzdFdlc3RSZXNpemVDdXJz
b3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChD
dXJzb3I6OkVhc3RXZXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNv
cj4gYyhDdXJzb3I6OkVhc3RXZXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3Qg
Q3Vyc29yJiBub3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoRWFzdFNvdXRo
V2VzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29y
OjpOb3J0aEVhc3RTb3V0aFdlc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhXZXN0U291dGhF
YXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6
Ok5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgY29sdW1uUmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpDb2x1bW5SZXNpemUpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Q29sdW1uUmVzaXplKTsKICAgICByZXR1
cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiByb3dSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlJvd1Jlc2l6ZSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpSb3dSZXNpemUp
OwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG1pZGRsZVBhbm5pbmdDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6Ok1pZGRsZVBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBj
KEN1cnNvcjo6TWlkZGxlUGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBD
dXJzb3ImIGVhc3RQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpFYXN0UGFubmluZykpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpFYXN0UGFubmluZyk7CiAgICAgcmV0dXJu
IGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIG5vcnRoUGFubmluZ0N1cnNvcigpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhQ
YW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5v
cnRoUGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIG5vcnRo
RWFzdFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoRWFzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhFYXN0UGFubmluZyk7CiAgICAgcmV0
dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIG5vcnRoV2VzdFBhbm5pbmdDdXJzb3IoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6
Ok5vcnRoV2VzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBj
KEN1cnNvcjo6Tm9ydGhXZXN0UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25z
dCBDdXJzb3ImIHNvdXRoUGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6U291dGhQYW5uaW5nKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRoUGFubmluZyk7CiAgICAg
cmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIHNvdXRoRWFzdFBhbm5pbmdDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6OlNvdXRoRWFzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29y
PiBjKEN1cnNvcjo6U291dGhFYXN0UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBj
b25zdCBDdXJzb3ImIHNvdXRoV2VzdFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlNvdXRoV2VzdFBhbm5pbmcp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6U291dGhXZXN0
UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAgICAgCiBjb25zdCBDdXJzb3ImIHdlc3RQYW5u
aW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29y
LCBjLCAoQ3Vyc29yOjpXZXN0UGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxD
dXJzb3I+IGMoQ3Vyc29yOjpXZXN0UGFubmluZyk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0
IEN1cnNvciYgZ3JhYkN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEN1cnNvciwgYywgKEN1cnNvcjo6R3JhYikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDdXJzb3I+IGMoQ3Vyc29yOjpHcmFiKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vy
c29yJiBncmFiYmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEN1cnNvciwgYywgKEN1cnNvcjo6R3JhYmJpbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6R3JhYmJpbmcpOwogICAgIHJldHVybiBjOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKaW5kZXggNTg5MTdmZi4uNjU1NzhkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBTdHJpbmcg
ZGVmYXVsdExhbmd1YWdlKCkKIAogc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5n
dWFnZXNPdmVycmlkZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFZl
Y3RvcjxTdHJpbmc+LCBvdmVycmlkZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8U3RyaW5nPj4gb3ZlcnJpZGU7CiAgICAgcmV0dXJuIG92ZXJyaWRlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IDkzZDJlOTAu
Ljc5NTFmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0
cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3Mu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIAogI2lmIFVTRShDRikKQEAgLTc5LDExICs4MCwxMSBAQCBzdGF0aWMg
U3RyaW5nIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWwpCiAKICAgICAvLyBUcnVuY2F0ZSB0aGUgc3RyaW5nIGlmIGl0J3MgdG9vIGxvbmcuIFRo
aXMgaXMgaW4gY29uc2lzdGVuY3kgd2l0aCBBcHBLaXQuCiAgICAgdW5zaWduZWQgbWF4TnVtYmVy
T2ZHcmFwaGVtZUNsdXN0ZXJzSW5Mb29rdXBNZW51SXRlbSA9IDI0OwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGVsbGlwc2lzLCAoJmhvcml6b250YWxFbGxpcHNp
cywgMSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGVsbGlwc2lzKCZob3Jp
em9udGFsRWxsaXBzaXMsIDEpOwogCiAgICAgU3RyaW5nIHRyaW1tZWQgPSBvcmlnaW5hbC5zdHJp
cFdoaXRlU3BhY2UoKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYXJhY3RlcnMgPSBudW1DaGFy
YWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKHRyaW1tZWQsIG1heE51bWJlck9mR3JhcGhlbWVDbHVz
dGVyc0luTG9va3VwTWVudUl0ZW0pOwotICAgIHJldHVybiBudW1iZXJPZkNoYXJhY3RlcnMgPT0g
dHJpbW1lZC5sZW5ndGgoKSA/IHRyaW1tZWQgOiB0cmltbWVkLmxlZnQobnVtYmVyT2ZDaGFyYWN0
ZXJzKSArIGVsbGlwc2lzOworICAgIHJldHVybiBudW1iZXJPZkNoYXJhY3RlcnMgPT0gdHJpbW1l
ZC5sZW5ndGgoKSA/IHRyaW1tZWQgOiB0cmltbWVkLmxlZnQobnVtYmVyT2ZDaGFyYWN0ZXJzKSAr
IGVsbGlwc2lzLmdldCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggMTI3Y2M1YS4uNjIwZjFjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCkBAIC0zNTIsMTYgKzM1MywxNiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3Vw
cG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMoKQogCiBzdGF0aWMgTWVkaWFNSU1FVHlwZU1hcCYgbWVk
aWFNSU1FVHlwZU1hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE1l
ZGlhTUlNRVR5cGVNYXAsIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAsICgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFNSU1FVHlwZU1hcD4gbWVkaWFNSU1FVHlwZUZvckV4
dGVuc2lvbk1hcDsKIAotICAgIGlmICghbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5pc0Vt
cHR5KCkpCisgICAgaWYgKCFtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldCgpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXA7CiAKICAg
ICBjb25zdCB1bnNpZ25lZCBudW1QYWlycyA9IHNpemVvZihjb21tb25NZWRpYVR5cGVzKSAvIHNp
emVvZihjb21tb25NZWRpYVR5cGVzWzBdKTsKICAgICBmb3IgKHVuc2lnbmVkIG5keCA9IDA7IG5k
eCA8IG51bVBhaXJzOyArK25keCkgewogCi0gICAgICAgIGlmIChtZWRpYU1JTUVUeXBlRm9yRXh0
ZW5zaW9uTWFwLmNvbnRhaW5zKGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24pKQotICAg
ICAgICAgICAgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5nZXQoY29tbW9uTWVkaWFUeXBl
c1tuZHhdLmV4dGVuc2lvbiktPmFwcGVuZChjb21tb25NZWRpYVR5cGVzW25keF0udHlwZSk7Cisg
ICAgICAgIGlmIChtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldCgpLmNvbnRhaW5zKGNv
bW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24pKQorICAgICAgICAgICAgbWVkaWFNSU1FVHlw
ZUZvckV4dGVuc2lvbk1hcC5nZXQoKS5nZXQoY29tbW9uTWVkaWFUeXBlc1tuZHhdLmV4dGVuc2lv
biktPmFwcGVuZChjb21tb25NZWRpYVR5cGVzW25keF0udHlwZSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4qIHN5bm9ueW1zID0gbmV3IFZlY3RvcjxTdHJpbmc+
OwogCkBAIC0zNzEsNyArMzcyLDcgQEAgc3RhdGljIE1lZGlhTUlNRVR5cGVNYXAmIG1lZGlhTUlN
RVR5cGVNYXAoKQogICAgICAgICAgICAgaWYgKCFzeXN0ZW1UeXBlLmlzRW1wdHkoKSAmJiBjb21t
b25NZWRpYVR5cGVzW25keF0udHlwZSAhPSBzeXN0ZW1UeXBlKQogICAgICAgICAgICAgICAgIHN5
bm9ueW1zLT5hcHBlbmQoc3lzdGVtVHlwZSk7CiAgICAgICAgICAgICBzeW5vbnltcy0+YXBwZW5k
KGNvbW1vbk1lZGlhVHlwZXNbbmR4XS50eXBlKTsKLSAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVG
b3JFeHRlbnNpb25NYXAuYWRkKGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24sIHN5bm9u
eW1zKTsKKyAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuZ2V0KCkuYWRk
KGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24sIHN5bm9ueW1zKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtNjQyLDcgKzY0Myw3IEBAIEhhc2hTZXQ8U3RyaW5nPiYgTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0VW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKIAogY29uc3QgU3RyaW5nJiBkZWZh
dWx0TUlNRVR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIGRlZmF1bHRNSU1FVHlwZSwgKEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBk
ZWZhdWx0TUlNRVR5cGUoQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSk7
CiAgICAgcmV0dXJuIGRlZmF1bHRNSU1FVHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4IGE4YjBhMTEuLmI2NDY1MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKQEAgLTM2LDEyICszNiwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBsb2NhbFVSTFNjaGVt
ZXMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFw
LCBsb2NhbFNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1l
c01hcD4gbG9jYWxTY2hlbWVzOwogCi0gICAgaWYgKGxvY2FsU2NoZW1lcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgbG9jYWxTY2hlbWVzLmFkZCgiZmlsZSIpOworICAgIGlmIChsb2NhbFNjaGVtZXMu
Z2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGxvY2FsU2NoZW1lcy5nZXQoKS5hZGQoImZpbGUi
KTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbG9jYWxTY2hlbWVzLmFkZCgiYXBwbGV3
ZWJkYXRhIik7CisgICAgICAgIGxvY2FsU2NoZW1lcy5nZXQoKS5hZGQoImFwcGxld2ViZGF0YSIp
OwogI2VuZGlmCiAgICAgfQogCkBAIC01MCwyMSArNTAsMjEgQEAgc3RhdGljIFVSTFNjaGVtZXNN
YXAmIGxvY2FsVVJMU2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBkaXNwbGF5SXNv
bGF0ZWRVUkxTY2hlbWVzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
VVJMU2NoZW1lc01hcCwgZGlzcGxheUlzb2xhdGVkU2NoZW1lcywgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBkaXNwbGF5SXNvbGF0ZWRTY2hlbWVzOwogICAg
IHJldHVybiBkaXNwbGF5SXNvbGF0ZWRTY2hlbWVzOwogfQogCiBzdGF0aWMgVVJMU2NoZW1lc01h
cCYgc2VjdXJlU2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFVSTFNjaGVtZXNNYXAsIHNlY3VyZVNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2VjdXJlU2NoZW1lczsKIAotICAgIGlmIChzZWN1cmVTY2hl
bWVzLmlzRW1wdHkoKSkgewotICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZCgiaHR0cHMiKTsKLSAg
ICAgICAgc2VjdXJlU2NoZW1lcy5hZGQoImFib3V0Iik7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMu
YWRkKCJkYXRhIik7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuYWRkKCJ3c3MiKTsKKyAgICBpZiAo
c2VjdXJlU2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5n
ZXQoKS5hZGQoImh0dHBzIik7CisgICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJhYm91
dCIpOworICAgICAgICBzZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgiZGF0YSIpOworICAgICAgICBz
ZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgid3NzIik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAg
ICAgIHNlY3VyZVNjaGVtZXMuYWRkKFFMUHJldmlld1Byb3RvY29sKCkpOworICAgICAgICBzZWN1
cmVTY2hlbWVzLmdldCgpLmFkZChRTFByZXZpZXdQcm90b2NvbCgpKTsKICNlbmRpZgogICAgIH0K
IApAQCAtNzMsMTQgKzczLDE0IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzZWN1cmVTY2hlbWVz
KCkKIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIHNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxT
Y2hlbWVzTWFwPiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnM7CiAKLSAgICBpZiAoc2NoZW1lc1dp
dGhVbmlxdWVPcmlnaW5zLmlzRW1wdHkoKSkgewotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9y
aWdpbnMuYWRkKCJhYm91dCIpOwotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuYWRk
KCJqYXZhc2NyaXB0Iik7CisgICAgaWYgKHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgi
YWJvdXQiKTsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgiamF2
YXNjcmlwdCIpOwogICAgICAgICAvLyBUaGlzIGlzIGEgd2lsbGZ1bCB2aW9sYXRpb24gb2YgSFRN
TDUuCiAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE4ODUKLSAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZCgiZGF0YSIpOwor
ICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuZ2V0KCkuYWRkKCJkYXRhIik7CiAgICAg
fQogCiAgICAgcmV0dXJuIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2luczsKQEAgLTg4LDI2ICs4OCwy
NiBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKIAog
c3RhdGljIFVSTFNjaGVtZXNNYXAmIGVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgZW1wdHlEb2N1bWVudFNj
aGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gZW1w
dHlEb2N1bWVudFNjaGVtZXM7CiAKLSAgICBpZiAoZW1wdHlEb2N1bWVudFNjaGVtZXMuaXNFbXB0
eSgpKQotICAgICAgICBlbXB0eURvY3VtZW50U2NoZW1lcy5hZGQoImFib3V0Iik7CisgICAgaWYg
KGVtcHR5RG9jdW1lbnRTY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkKKyAgICAgICAgZW1wdHlEb2N1
bWVudFNjaGVtZXMuZ2V0KCkuYWRkKCJhYm91dCIpOwogCiAgICAgcmV0dXJuIGVtcHR5RG9jdW1l
bnRTY2hlbWVzOwogfQogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBzY2hlbWVzRm9yYmlkZGVu
RnJvbURvbWFpblJlbGF4YXRpb24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChIYXNoU2V0PFN0cmluZz4sIHNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBzY2hlbWVzOwogICAgIHJldHVybiBzY2hlbWVzOwogfQog
CiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVz
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwg
Y2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1l
czsKIAotICAgIGlmIChjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcy5hZGQoImJsb2Ii
KTsKKyAgICBpZiAoY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLmdldCgpLmlzRW1w
dHkoKSkgeworICAgICAgICBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMuZ2V0KCku
YWRkKCJibG9iIik7CiAgICAgfQogCiAgICAgcmV0dXJuIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0U2NoZW1lczsKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2Fu
RGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkKIAogc3RhdGljIFVSTFNjaGVtZXNNYXAm
IG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgbm90QWxsb3dpbmdKYXZhc2NyaXB0VVJM
c1NjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4g
bm90QWxsb3dpbmdKYXZhc2NyaXB0VVJMc1NjaGVtZXM7CiAgICAgcmV0dXJuIG5vdEFsbG93aW5n
SmF2YXNjcmlwdFVSTHNTY2hlbWVzOwogfQogCkBAIC0xNDIsMjQgKzE0MiwyNCBAQCBjb25zdCBV
UkxTY2hlbWVzTWFwJiBTY2hlbWVSZWdpc3RyeTo6bG9jYWxTY2hlbWVzKCkKIAogc3RhdGljIFVS
TFNjaGVtZXNNYXAmIHNjaGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJy
b3dzaW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1l
c01hcCwgc2NoZW1lc0FsbG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmcs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lc0Fs
bG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiAgICAgcmV0dXJuIHNj
aGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOwogfQogCiBz
dGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZh
dGVCcm93c2luZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNj
aGVtZXNNYXAsIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmcs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lc0Fs
bG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsKICAgICByZXR1cm4gc2NoZW1l
c0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsKIH0KIAogc3RhdGljIFVS
TFNjaGVtZXNNYXAmIENPUlNFbmFibGVkU2NoZW1lcygpCiB7CiAgICAgLy8gRklYTUU6IGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTYwCi0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIENPUlNFbmFibGVkU2NoZW1lcywgKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBDT1JTRW5hYmxlZFNj
aGVtZXM7CiAKLSAgICBpZiAoQ09SU0VuYWJsZWRTY2hlbWVzLmlzRW1wdHkoKSkgewotICAgICAg
ICBDT1JTRW5hYmxlZFNjaGVtZXMuYWRkKCJodHRwIik7Ci0gICAgICAgIENPUlNFbmFibGVkU2No
ZW1lcy5hZGQoImh0dHBzIik7CisgICAgaWYgKENPUlNFbmFibGVkU2NoZW1lcy5nZXQoKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmdldCgpLmFkZCgiaHR0cCIpOwor
ICAgICAgICBDT1JTRW5hYmxlZFNjaGVtZXMuZ2V0KCkuYWRkKCJodHRwcyIpOwogICAgIH0KIAog
ICAgIHJldHVybiBDT1JTRW5hYmxlZFNjaGVtZXM7CkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGlj
IFVSTFNjaGVtZXNNYXAmIENPUlNFbmFibGVkU2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVz
TWFwJiBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgc2NoZW1lcywgKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOwogICAgIHJl
dHVybiBzY2hlbWVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZS5jcHAKaW5kZXggZDczN2UyZC4uNDM4ZjM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lLmNwcApAQCAtMjgsMTMgKzI4LDE0IEBACiAKICNpbmNsdWRlICJTY3Jv
bGxiYXJUaGVtZU1vY2suaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9sbGJhclRoZW1l
JiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKQogewogICAgIGlmIChTZXR0aW5nczo6bW9ja1Njcm9s
bGJhcnNFbmFibGVkKCkpIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFNjcm9sbGJhclRoZW1lTW9jaywgbW9ja1RoZW1lLCAoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTY3JvbGxiYXJUaGVtZU1vY2s+IG1vY2tUaGVtZTsKICAgICAgICAgcmV0dXJu
IG1vY2tUaGVtZTsKICAgICB9CiAgICAgcmV0dXJuIG5hdGl2ZVRoZW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMLmNwcAppbmRleCA0ZDFjNzdhLi44ODliNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5j
cHAKQEAgLTE5ODEsNyArMTk4MSw3IEBAIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25z
dCBTdHJpbmcmIHVybCkKIAogY29uc3QgVVJMJiBibGFua1VSTCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTCwgc3RhdGljQmxhbmtVUkwsIChQYXJzZWRVUkxTdHJp
bmcsICJhYm91dDpibGFuayIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0
aWNCbGFua1VSTChQYXJzZWRVUkxTdHJpbmcsICJhYm91dDpibGFuayIpOwogICAgIHJldHVybiBz
dGF0aWNCbGFua1VSTDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRp
b24vQW5pbWF0aW9uLmNwcAppbmRleCBkNjc3MGE0Li4xMjA2MTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcApAQCAtMjIsNiArMjIsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgogCisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQW5pbWF0
aW9uOjpBbmltYXRpb24oKQpAQCAtMTYwLDcgKzE2Miw3IEBAIGJvb2wgQW5pbWF0aW9uOjphbmlt
YXRpb25zTWF0Y2goY29uc3QgQW5pbWF0aW9uJiBvdGhlciwgYm9vbCBtYXRjaFBsYXlTdGF0ZXMp
IGNvCiAKIGNvbnN0IFN0cmluZyYgQW5pbWF0aW9uOjppbml0aWFsTmFtZSgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaW5pdGlhbFZhbHVlLCAoQVNDSUlM
aXRlcmFsKCJub25lIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBpbml0
aWFsVmFsdWUoQVNDSUlMaXRlcmFsKCJub25lIikpOwogICAgIHJldHVybiBpbml0aWFsVmFsdWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3Bw
CmluZGV4IGFlOTU1MDIuLjNjMmRhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtMjksMTIgKzI5LDEzIEBACiAjaWYgVVNFKEFVRElP
X1NFU1NJT04pCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvU2Vzc2lvbiYg
QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXVkaW9TZXNzaW9uLCBzZXNzaW9uLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF1ZGlvU2Vzc2lvbj4gc2Vzc2lvbjsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBk
MWY1MjQ2Li4wYmI0ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uaApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDYg
KzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3Qp
OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxBdWRpb1Nlc3Np
b24+OwogICAgIEF1ZGlvU2Vzc2lvbigpOwogICAgIH5BdWRpb1Nlc3Npb24oKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBhZjk5
MmZiLi5lYTMzZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RWxldmF0aW9uLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY4LDE4ICs2OSwx
OCBAQCBjb25zdCBmbG9hdCBSZXNwb25zZVNhbXBsZVJhdGUgPSA0NDEwMDsKIHN0YXRpYyBBdWRp
b0J1cyogZ2V0Q29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlc0ZvclN1YmplY3QoY29uc3QgU3Ry
aW5nJiBzdWJqZWN0TmFtZSkKIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBdWRpb0J1
cyo+IEF1ZGlvQnVzTWFwOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdWRp
b0J1c01hcCwgYXVkaW9CdXNNYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXVk
aW9CdXNNYXA+IGF1ZGlvQnVzTWFwOwogCiAgICAgQXVkaW9CdXMqIGJ1czsKLSAgICBBdWRpb0J1
c01hcDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBhdWRpb0J1c01hcC5maW5kKHN1YmplY3ROYW1lKTsK
LSAgICBpZiAoaXRlcmF0b3IgPT0gYXVkaW9CdXNNYXAuZW5kKCkpIHsKKyAgICBBdWRpb0J1c01h
cDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBhdWRpb0J1c01hcC5nZXQoKS5maW5kKHN1YmplY3ROYW1l
KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gYXVkaW9CdXNNYXAuZ2V0KCkuZW5kKCkpIHsKICAgICAg
ICAgUmVmUHRyPEF1ZGlvQnVzPiBjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzID0gQXVkaW9C
dXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKHN1YmplY3ROYW1lLnV0ZjgoKS5kYXRhKCksIFJlc3Bv
bnNlU2FtcGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9u
c2VzKTsKICAgICAgICAgaWYgKCFjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3Bv
bnNlcy5yZWxlYXNlKCkubGVha1JlZigpOwotICAgICAgICBhdWRpb0J1c01hcC5zZXQoc3ViamVj
dE5hbWUsIGJ1cyk7CisgICAgICAgIGF1ZGlvQnVzTWFwLmdldCgpLnNldChzdWJqZWN0TmFtZSwg
YnVzKTsKICAgICB9IGVsc2UKICAgICAgICAgYnVzID0gaXRlcmF0b3ItPnZhbHVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHAKaW5kZXggOWQ4ZDFlMS4uYWRkYjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApA
QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb1NlcnZpY2VzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBT
T0ZUX0xJTktfRlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKIFNPRlRfTElOSyhBdWRpb1Rvb2xib3gs
IEF1ZGlvQ29tcG9uZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQg
aW5Db21wb25lbnQsIGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChp
bkNvbXBvbmVudCwgaW5EZXNjKSkKQEAgLTYyLDcgKzYzLDcgQEAgY29uc3QgaW50IGtQcmVmZXJy
ZWRCdWZmZXJTaXplID0gMjU2OwogdHlwZWRlZiBIYXNoU2V0PEF1ZGlvRGVzdGluYXRpb25JT1Mq
PiBBdWRpb0Rlc3RpbmF0aW9uU2V0Owogc3RhdGljIEF1ZGlvRGVzdGluYXRpb25TZXQmIGF1ZGlv
RGVzdGluYXRpb25zKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXVk
aW9EZXN0aW5hdGlvblNldCwgYXVkaW9EZXN0aW5hdGlvblNldCwgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdWRpb0Rlc3RpbmF0aW9uU2V0PiBhdWRpb0Rlc3RpbmF0aW9uU2V0Owog
ICAgIHJldHVybiBhdWRpb0Rlc3RpbmF0aW9uU2V0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGUzZWE4NmEuLmI3
YmNiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUm90YXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ3LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBWZWN0b3I8Rmxv
YXRSZWN0Pj4gUmVwYWludE1hcDsKIHN0YXRpYyBSZXBhaW50TWFwJiByZXBhaW50UmVjdE1hcCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFJlcGFpbnRNYXAsIG1hcCwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXBhaW50TWFwPiBtYXA7CiAgICAgcmV0
dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCmluZGV4IDgzNWRlYTAuLjJhY2U3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04OCw4ICs4OSw4IEBAIEZsb2F0U2l6ZSBJbWFn
ZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0aW9uU2l6ZShGbG9hdFNpemUgc2l6ZSkgY29uc3QKIAog
dm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9y
U3BhY2UsIENvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoVmVjdG9yPGludD4sIGRldmljZVJnYkxVVCwgKCkpOwotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8aW50PiwgbGluZWFyUmdiTFVULCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxpbnQ+PiBkZXZpY2VSZ2JMVVQ7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxpbnQ+PiBsaW5lYXJSZ2JMVVQ7CiAKICAg
ICBpZiAoc3JjQ29sb3JTcGFjZSA9PSBkc3RDb2xvclNwYWNlKQogICAgICAgICByZXR1cm47CkBA
IC0xMDAsMjcgKzEwMSwyNyBAQCB2b2lkIEltYWdlQnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNl
KENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSBkc3RDbwogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoZHN0Q29sb3JTcGFjZSA9PSBDb2xvclNwYWNlTGluZWFyUkdCKSB7Ci0g
ICAgICAgIGlmIChsaW5lYXJSZ2JMVVQuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChsaW5lYXJS
Z2JMVVQuZ2V0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvciA9IGkgIC8gMjU1
LjBmOwogICAgICAgICAgICAgICAgIGNvbG9yID0gKGNvbG9yIDw9IDAuMDQwNDVmID8gY29sb3Ig
LyAxMi45MmYgOiBwb3coKGNvbG9yICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZikpOwogICAgICAg
ICAgICAgICAgIGNvbG9yID0gc3RkOjptYXgoMC4wZiwgY29sb3IpOwogICAgICAgICAgICAgICAg
IGNvbG9yID0gc3RkOjptaW4oMS4wZiwgY29sb3IpOwotICAgICAgICAgICAgICAgIGxpbmVhclJn
YkxVVC5hcHBlbmQoc3RhdGljX2Nhc3Q8aW50Pihyb3VuZChjb2xvciAqIDI1NSkpKTsKKyAgICAg
ICAgICAgICAgICBsaW5lYXJSZ2JMVVQuZ2V0KCkuYXBwZW5kKHN0YXRpY19jYXN0PGludD4ocm91
bmQoY29sb3IgKiAyNTUpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcGxh
dGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGxpbmVhclJnYkxVVCk7CisgICAgICAgIHBsYXRmb3Jt
VHJhbnNmb3JtQ29sb3JTcGFjZShsaW5lYXJSZ2JMVVQuZ2V0KCkpOwogICAgIH0gZWxzZSBpZiAo
ZHN0Q29sb3JTcGFjZSA9PSBDb2xvclNwYWNlRGV2aWNlUkdCKSB7Ci0gICAgICAgIGlmIChkZXZp
Y2VSZ2JMVVQuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChkZXZpY2VSZ2JMVVQuZ2V0KCkuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKysp
IHsKICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvciA9IGkgLyAyNTUuMGY7CiAgICAgICAgICAg
ICAgICAgY29sb3IgPSAocG93Zihjb2xvciwgMS4wZiAvIDIuNGYpICogMS4wNTVmKSAtIDAuMDU1
ZjsKICAgICAgICAgICAgICAgICBjb2xvciA9IHN0ZDo6bWF4KDAuMGYsIGNvbG9yKTsKICAgICAg
ICAgICAgICAgICBjb2xvciA9IHN0ZDo6bWluKDEuMGYsIGNvbG9yKTsKLSAgICAgICAgICAgICAg
ICBkZXZpY2VSZ2JMVVQuYXBwZW5kKHN0YXRpY19jYXN0PGludD4ocm91bmQoY29sb3IgKiAyNTUp
KSk7CisgICAgICAgICAgICAgICAgZGV2aWNlUmdiTFVULmdldCgpLmFwcGVuZChzdGF0aWNfY2Fz
dDxpbnQ+KHJvdW5kKGNvbG9yICogMjU1KSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0g
ICAgICAgIHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShkZXZpY2VSZ2JMVVQpOworICAgICAg
ICBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoZGV2aWNlUmdiTFVULmdldCgpKTsKICAgICB9
CiB9CiAjZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDIxZDgwYWUuLmZiZjllMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTIzNSwx
OSArMjM1LDE5IEBAIHN0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5l
UGxheWVyIGNvbnN0cnVjdG9yLCBNZWRpYUVuZ2luZVN1cHBvCiAKIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFwcGxpY2F0aW9uT2N0ZXRTdHJl
YW0sICgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhcHBsaWNhdGlv
bk9jdGV0U3RyZWFtOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0UGxhaW4o
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIHRleHRQbGFpbiwgKCJ0ZXh0L3BsYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IHRleHRQbGFpbigidGV4dC9wbGFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiB0ZXh0UGxhaW47CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGNvZGVjcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgY29kZWNzLCAoImNvZGVjcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBjb2RlY3MoImNvZGVjcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBjb2RlY3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggN2MwYzA3MC4uODk4ZDY1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTU1LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAKIFNjcmF0Y2hCdWZmZXImIFNjcmF0Y2hCdWZm
ZXI6OnNpbmdsZXRvbigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFNj
cmF0Y2hCdWZmZXIsIHNjcmF0Y2hCdWZmZXIsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U2NyYXRjaEJ1ZmZlcj4gc2NyYXRjaEJ1ZmZlcjsKICAgICByZXR1cm4gc2NyYXRjaEJ1ZmZl
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMWZhYzcwNC4uM2Q2Y2U3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0zOTIsNyArMzkyLDcgQEAgc3RhdGljIGNvbnN0IGNo
YXIgKmJvb2xTdHJpbmcoYm9vbCB2YWwpCiB0eXBlZGVmIEhhc2hNYXA8TWVkaWFQbGF5ZXIqLCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKj4gUGxheWVyVG9Qcml2YXRlTWFwVHlw
ZTsKIHN0YXRpYyBQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlJiBwbGF5ZXJUb1ByaXZhdGVNYXAoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChQbGF5ZXJUb1ByaXZhdGVNYXBU
eXBlLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UGxheWVyVG9Qcml2YXRl
TWFwVHlwZT4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3Bw
CmluZGV4IDcyNDg5M2IuLjYxNDAyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCkBAIC0yNCw2ICsyNCw3
IEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIApAQCAtMzYsNyArMzcsNyBAQCBSZWY8U291cmNlQWxwaGE+IFNvdXJjZUFscGhhOjpj
cmVhdGUoRmlsdGVyRWZmZWN0JiBzb3VyY2VFZmZlY3QpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
U291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNfZWZmZWN0TmFtZSwgKCJTb3VyY2VBbHBoYSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzX2VmZmVjdE5hbWUoIlNvdXJjZUFscGhhIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfZWZmZWN0
TmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggNjFiYjFiOC4uMjMxM2IwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiRmlsdGVyLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzUsNyArMzYsNyBA
QCBSZWY8U291cmNlR3JhcGhpYz4gU291cmNlR3JhcGhpYzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVy
KQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNf
ZWZmZWN0TmFtZSwgKCJTb3VyY2VHcmFwaGljIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IHNfZWZmZWN0TmFtZSgiU291cmNlR3JhcGhpYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBzX2VmZmVjdE5hbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5tbQppbmRleCAwODBhOTEyLi4yMTAwZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0Lm1tCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCiAjaW1wb3J0IDxRVEtpdC9RVEtpdC5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09S
SyhRVEtpdCkKIApAQCAtMTI3MSw3ICsxMjcyLDcgQEAgc3RhdGljIHZvaWQgYWRkRmlsZVR5cGVz
VG9DYWNoZShOU0FycmF5ICogZmlsZVR5cGVzLCBIYXNoU2V0PFN0cmluZz4gJmNhY2hlKQogCiBz
dGF0aWMgSGFzaFNldDxTdHJpbmc+IG1pbWVDb21tb25UeXBlc0NhY2hlKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBjYWNoZSwgKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlOwogICAgIHN0
YXRpYyBib29sIHR5cGVMaXN0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAogICAgIGlmICghdHlwZUxp
c3RJbml0aWFsaXplZCkgewpAQCAtMTI4NSw3ICsxMjg2LDcgQEAgc3RhdGljIEhhc2hTZXQ8U3Ry
aW5nPiBtaW1lQ29tbW9uVHlwZXNDYWNoZSgpCiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gbWlt
ZU1vZGVyblR5cGVzQ2FjaGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChIYXNoU2V0PFN0cmluZz4sIGNhY2hlLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8U3RyaW5nPj4gY2FjaGU7CiAgICAgc3RhdGljIGJvb2wgdHlwZUxpc3RJbml0aWFs
aXplZCA9IGZhbHNlOwogICAgIAogICAgIGlmICghdHlwZUxpc3RJbml0aWFsaXplZCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ3Vyc29ySU9TLmNwcAppbmRleCBmOTZiZmFmLi5jOWYw
ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ3Vyc29ySU9TLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ3Vyc29ySU9TLmNwcApAQCAtMjYs
MTEgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgY29uc3QgQ3Vyc29yJiBjdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBDdXJzb3IsIGN1cnNvciwgKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBDdXJzb3I+IGN1cnNvcjsKICAgICByZXR1cm4gY3Vyc29yOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJN
ZW1vcnlIYW5kbGVySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwCmluZGV4IGRlN2I0ZTAuLjVjMzY2M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhh
bmRsZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29udHJv
bGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCIKICNpbmNsdWRlICJUaWxlQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTc5LDcgKzgwLDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXI6OnRyaW1VbnBh
cmVudGVkVGlsZXNUb1RhcmdldChpbnQgdGFyZ2V0KQogCiBUaWxlQ29udHJvbGxlck1lbW9yeUhh
bmRsZXImIHRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcigpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlciwgc3RhdGljVGls
ZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcj4gc3RhdGljVGlsZUNvbnRyb2xsZXJNZW1vcnlI
YW5kbGVyOwogICAgIHJldHVybiBzdGF0aWNUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxl
ck1lbW9yeUhhbmRsZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaAppbmRleCBkYTJmZWY4MC4uMTMyMzM5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFu
ZGxlcklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxl
ck1lbW9yeUhhbmRsZXJJT1MuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBUaWxlQ29udHJv
bGxlck1lbW9yeUhhbmRsZXJJT1NfaAogCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMzUsNiArMzYsNyBAQCBjbGFzcyBUaWxlQ29udHJvbGxlcjsKIGNsYXNzIFRpbGVDb250cm9s
bGVyTWVtb3J5SGFuZGxlciB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIFRpbGVDb250cm9sbGVyTWVt
b3J5SGFuZGxlciYgdGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKCk7CisgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcj47CiAKICAgICB2
b2lkIHJlbW92ZVRpbGVDb250cm9sbGVyKFRpbGVDb250cm9sbGVyKik7CiAgICAgdm9pZCB0aWxl
Q29udHJvbGxlckdhaW5lZFVucGFyZW50ZWRUaWxlcyhUaWxlQ29udHJvbGxlciopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCmlu
ZGV4IGJlMGRjMTUuLjM4NzU1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGNv
bnN0IGRvdWJsZSBrR3Jhdml0eSA9IDkuODA2NjU7CiAKICsgKFdlYkNvcmVNb3Rpb25NYW5hZ2Vy
ICopc2hhcmVkTWFuYWdlcgogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChS
ZXRhaW5QdHI8V2ViQ29yZU1vdGlvbk1hbmFnZXI+LCBzaGFyZWRNb3Rpb25NYW5hZ2VyLCAoW1tX
ZWJDb3JlTW90aW9uTWFuYWdlciBhbGxvY10gaW5pdF0pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPFdlYkNvcmVNb3Rpb25NYW5hZ2VyPj4gc2hhcmVkTW90aW9uTWFuYWdl
cihbW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIGFsbG9jXSBpbml0XSk7CiAgICAgcmV0dXJuIHNoYXJl
ZE1vdGlvbk1hbmFnZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5tbQppbmRleCAwOWZiODI5Li5lM2FkM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tCkBAIC0xNTYsOCArMTU2LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3QKICAg
ICAgICAgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWU7CiAKICAgICAgICAgaWYgKG1fdmlkZW9F
bGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpKSB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhaXJwbGF5LCAoQVNDSUlMaXRlcmFsKCJhaXJwbGF5
IikpKTsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IHR2b3V0LCAoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhaXJwbGF5KEFTQ0lJTGl0ZXJhbCgiYWlycGxheSIpKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHR2b3V0KEFTQ0lJTGl0ZXJh
bCgidHZvdXQiKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFN0cmluZyB0eXBlID0gbV92
aWRlb0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmV4dGVybmFsRGV2aWNlVHlwZSgpOwog
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gYWlycGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAKaW5kZXggMGZi
OGFlOS4uZDNhNmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGlj
IEhhc2hNYXA8dm9pZCAqLCB2b2lkICo+ICogV2ViVGhyZWFkR2V0T2JzZXJ2ZWRDb250ZW50TW9k
aWZpZXJzKCkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOwog
ICAgIHR5cGVkZWYgSGFzaE1hcDx2b2lkICosIHZvaWQgKj4gVm9pZFZvaWRNYXA7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFZvaWRWb2lkTWFwLCBvYnNlcnZlZENvbnRlbnRN
b2RpZmllcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Vm9pZFZvaWRNYXA+IG9i
c2VydmVkQ29udGVudE1vZGlmaWVyczsKICAgICByZXR1cm4gJm9ic2VydmVkQ29udGVudE1vZGlm
aWVyczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJ
bWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0K
aW5kZXggNDE2ZDVkZC4uZjZmY2NhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
RHJhZ0ltYWdlTWFjLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW1wb3J0ICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbXBvcnQgIlRleHRSdW4uaCIK
KyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTE2MCw3ICsxNjEsNyBAQCBjb25zdCBmbG9hdCBEcmFnTGlua1VybEZvbnRTaXplID0gMTA7
CiBzdGF0aWMgRm9udENhc2NhZGUmIGZvbnRGcm9tTlNGb250KE5TRm9udCAqZm9udCkKIHsKICAg
ICBzdGF0aWMgTlNGb250ICpjdXJyZW50Rm9udDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoRm9udENhc2NhZGUsIGN1cnJlbnRSZW5kZXJlciwgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZT4gY3VycmVudFJlbmRlcmVyOwogICAgIAogICAgIGlm
IChbZm9udCBpc0VxdWFsOmN1cnJlbnRGb250XSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRSZW5k
ZXJlcjsKQEAgLTE2OCw3ICsxNjksNyBAQCBzdGF0aWMgRm9udENhc2NhZGUmIGZvbnRGcm9tTlNG
b250KE5TRm9udCAqZm9udCkKICAgICAgICAgQ0ZSZWxlYXNlKGN1cnJlbnRGb250KTsKICAgICBj
dXJyZW50Rm9udCA9IGZvbnQ7CiAgICAgQ0ZSZXRhaW4oY3VycmVudEZvbnQpOwotICAgIGN1cnJl
bnRSZW5kZXJlciA9IEZvbnRDYXNjYWRlKEZvbnRQbGF0Zm9ybURhdGEodG9DVEZvbnQoZm9udCks
IFtmb250IHBvaW50U2l6ZV0pKTsKKyAgICBjdXJyZW50UmVuZGVyZXIuZ2V0KCkgPSBGb250Q2Fz
Y2FkZShGb250UGxhdGZvcm1EYXRhKHRvQ1RGb250KGZvbnQpLCBbZm9udCBwb2ludFNpemVdKSk7
CiAgICAgcmV0dXJuIGN1cnJlbnRSZW5kZXJlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCmluZGV4IGE4ZTZhMTEuLjhjZDk3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIlNjcm9s
bFZpZXcuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPENh
cmJvbi9DYXJib24uaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBzdGF0aWMgTlNSZWN0IGZvY3VzUmluZ0NsaXBSZWN0OwpA
QCAtMTMyLDggKzEzMyw4IEBAIGVudW0gewogCiBUaGVtZSogcGxhdGZvcm1UaGVtZSgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRoZW1lTWFjLCB0aGVtZU1hYywgKCkp
OwotICAgIHJldHVybiAmdGhlbWVNYWM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRoZW1l
TWFjPiB0aGVtZU1hYzsKKyAgICByZXR1cm4gJnRoZW1lTWFjLmdldCgpOwogfQogCiAvLyBIZWxw
ZXIgZnVuY3Rpb25zIHVzZWQgYnkgYSBidW5jaCBvZiBkaWZmZXJlbnQgY29udHJvbCBwYXJ0cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQppbmRleCAzNjg2NDUy
Li5jMjg0YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFk
Q2hlY2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1t
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgogCiAjaW1wb3J0IDx3
dGYvSGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBA
IC05OCwxMiArOTksMTIgQEAgdm9pZCBXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uLCBXZWJDb3JlOjpUaHJlYWRWaW9sYXRpb24KICAgICBpZiAocm91bmQg
Pj0gTWF4aW11bVRocmVhZFZpb2xhdGlvblJvdW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBsb2dnZWRGdW5j
dGlvbnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBs
b2dnZWRGdW5jdGlvbnM7CiAgICAgc3dpdGNoICh0aHJlYWRWaW9sYXRpb25CZWhhdmlvcltyb3Vu
ZF0pIHsKICAgICAgICAgY2FzZSBOb1RocmVhZENoZWNrOgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgTG9nT25GaXJzdFRocmVhZFZpb2xhdGlvbjoKLSAgICAgICAgICAgIGlmIChs
b2dnZWRGdW5jdGlvbnMuYWRkKGZ1bmN0aW9uKS5pc05ld0VudHJ5KSB7CisgICAgICAgICAgICBp
ZiAobG9nZ2VkRnVuY3Rpb25zLmdldCgpLmFkZChmdW5jdGlvbikuaXNOZXdFbnRyeSkgewogICAg
ICAgICAgICAgICAgIE5TTG9nKEAiV2ViS2l0IFRocmVhZGluZyBWaW9sYXRpb24gLSAlcyBjYWxs
ZWQgZnJvbSBzZWNvbmRhcnkgdGhyZWFkIiwgZnVuY3Rpb24pOwogICAgICAgICAgICAgICAgIE5T
TG9nKEAiQWRkaXRpb25hbCB0aHJlYWRpbmcgdmlvbGF0aW9ucyBmb3IgdGhpcyBmdW5jdGlvbiB3
aWxsIG5vdCBiZSBsb2dnZWQuIik7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaAppbmRleCBiOGU0NGNiLi43OTZjMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNr
U291cmNlc1JlcXVlc3RDbGllbnQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgi
CiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01Myw2ICs1NCw3IEBAIHBy
aXZhdGU6CiB9OwogCiBjbGFzcyBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyIGZpbmFsIDogcHVibGlj
IENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcj47CiBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8Q2Fw
dHVyZURldmljZUluZm8+JiBjYXB0dXJlRGV2aWNlTGlzdCgpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IDU3ZDIxNjAuLjczYzMxOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjppc0F2YWlsYWJsZSgpCiAKIEFWQ2FwdHVyZURldmljZU1hbmFn
ZXImIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEFWQ2FwdHVyZURldmljZU1hbmFnZXIsIG1hbmFnZXIsICgp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QVZDYXB0dXJlRGV2aWNlTWFuYWdlcj4gbWFu
YWdlcjsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IGI0OWQxZjYuLjYzYzhlZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6cGxhdGZvcm1DZW50ZXIoKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWMsIGNlbnRlciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjPiBjZW50ZXI7CiAgICAgcmV0dXJuIGNlbnRl
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja0JveC5jcHAKaW5kZXggYWVjMDQ1Yy4uMzEwMjgwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0ludDhBcnJheS5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzYsNyArNzcsNyBAQCBNb2NrVHJhY2tC
b3g6Ok1vY2tUcmFja0JveChBcnJheUJ1ZmZlciogZGF0YSkKIAogY29uc3QgU3RyaW5nJiBNb2Nr
VHJhY2tCb3g6OnR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIHRyYWssIChBU0NJSUxpdGVyYWwoInRyYWsiKSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IHRyYWsoQVNDSUlMaXRlcmFsKCJ0cmFrIikpOwogICAgIHJldHVybiB0
cmFrOwogfQogCkBAIC0xMDUsNyArMTA2LDcgQEAgTW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2Nr
SW5pdGlhbGl6YXRpb25Cb3goQXJyYXlCdWZmZXIqIGRhdGEpCiAKIGNvbnN0IFN0cmluZyYgTW9j
a0luaXRpYWxpemF0aW9uQm94Ojp0eXBlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBpbml0LCAoQVNDSUlMaXRlcmFsKCJpbml0IikpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBpbml0KEFTQ0lJTGl0ZXJhbCgiaW5pdCIpKTsKICAg
ICByZXR1cm4gaW5pdDsKIH0KIApAQCAtMTMzLDcgKzEzNCw3IEBAIE1vY2tTYW1wbGVCb3g6Ok1v
Y2tTYW1wbGVCb3goQXJyYXlCdWZmZXIqIGRhdGEpCiAKIGNvbnN0IFN0cmluZyYgTW9ja1NhbXBs
ZUJveDo6dHlwZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
Zywgc21wbCwgKEFTQ0lJTGl0ZXJhbCgic21wbCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gc21wbChBU0NJSUxpdGVyYWwoInNtcGwiKSk7CiAgICAgcmV0dXJuIHNtcGw7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBh
cnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHAKaW5kZXggNzdhNzFlMy4uNWQzMDBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUg
IkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC0zNjUsMTQgKzM2NiwxNCBAQCB2b2lkIGZpbmRDaGFyc2V0SW5N
ZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGludCYgY2hhcnNldFBv
cywgdQogCiBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uIHBh
cnNlWFNTUHJvdGVjdGlvbkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgU3RyaW5nJiBmYWls
dXJlUmVhc29uLCB1bnNpZ25lZCYgZmFpbHVyZVBvc2l0aW9uLCBTdHJpbmcmIHJlcG9ydFVSTCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVh
c29uSW52YWxpZFRvZ2dsZSwgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgMCBvciAxIikpKTsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52
YWxpZFNlcGFyYXRvciwgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgc2VtaWNvbG9uIikpKTsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52
YWxpZEVxdWFscywgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgZXF1YWxzIHNpZ24iKSkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZh
bGlkTW9kZSwgKEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBtb2RlIGRpcmVjdGl2ZSIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFs
aWRSZXBvcnQsIChBU0NJSUxpdGVyYWwoImludmFsaWQgcmVwb3J0IGRpcmVjdGl2ZSIpKSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkR1
cGxpY2F0ZU1vZGUsIChBU0NJSUxpdGVyYWwoImR1cGxpY2F0ZSBtb2RlIGRpcmVjdGl2ZSIpKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNv
bkR1cGxpY2F0ZVJlcG9ydCwgKEFTQ0lJTGl0ZXJhbCgiZHVwbGljYXRlIHJlcG9ydCBkaXJlY3Rp
dmUiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1
cmVSZWFzb25JbnZhbGlkRGlyZWN0aXZlLCAoQVNDSUlMaXRlcmFsKCJ1bnJlY29nbml6ZWQgZGly
ZWN0aXZlIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVh
c29uSW52YWxpZFRvZ2dsZShBU0NJSUxpdGVyYWwoImV4cGVjdGVkIDAgb3IgMSIpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZFNlcGFyYXRv
cihBU0NJSUxpdGVyYWwoImV4cGVjdGVkIHNlbWljb2xvbiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZEVxdWFscyhBU0NJSUxpdGVyYWwo
ImV4cGVjdGVkIGVxdWFscyBzaWduIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkTW9kZShBU0NJSUxpdGVyYWwoImludmFsaWQgbW9kZSBk
aXJlY3RpdmUiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJl
YXNvbkludmFsaWRSZXBvcnQoQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHJlcG9ydCBkaXJlY3RpdmUi
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNvbkR1cGxp
Y2F0ZU1vZGUoQVNDSUlMaXRlcmFsKCJkdXBsaWNhdGUgbW9kZSBkaXJlY3RpdmUiKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNvbkR1cGxpY2F0ZVJlcG9y
dChBU0NJSUxpdGVyYWwoImR1cGxpY2F0ZSByZXBvcnQgZGlyZWN0aXZlIikpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkRGlyZWN0aXZlKEFT
Q0lJTGl0ZXJhbCgidW5yZWNvZ25pemVkIGRpcmVjdGl2ZSIpKTsKIAogICAgIHVuc2lnbmVkIHBv
cyA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5jcHAKaW5kZXggNWEzZGQzOC4uMGEwYTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsNyAr
NDksNyBAQCBzdGF0aWMgQnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAmIGJ1aWx0
aW5SZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwKAogI2Vsc2UKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogI2VuZGlmCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEJ1
aWx0aW5SZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXA+IG1hcDsK
ICAgICByZXR1cm4gbWFwOwogfQogCkBAIC02MSw3ICs2Miw3IEBAIHR5cGVkZWYgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFJlc291cmNlSGFuZGxlOjpCdWlsdGluU3luY2hyb25vdXNMb2FkZXI+IEJ1
aWx0aW5SCiBzdGF0aWMgQnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXAm
IGJ1aWx0aW5SZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVyTWFwKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChC
dWlsdGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCwgbWFwLCAoKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEJ1aWx0aW5SZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9h
ZGVyTWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5k
ZXggZWM3NWVkZS4uOTRlZDA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC04MywxNCArODMs
MTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBhbGxv
d3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4sIGhvc3RzLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gaG9zdHM7CiAgICAgcmV0dXJuIGhvc3RzOwogfQog
CiBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxDRkRhdGFSZWY+PiYgY2xpZW50Q2Vy
dHMoKQogewogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxDRkRhdGFSZWY+
PiBDZXJ0c01hcDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ2VydHNNYXAs
IGNlcnRzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENlcnRzTWFwPiBjZXJ0czsK
ICAgICByZXR1cm4gY2VydHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9BdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmgKaW5kZXggOWE1M2NhNi4uZDg5
MmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJp
bmdLZXllZE1SVUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9t
aWNTdHJpbmdLZXllZE1SVUNhY2hlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQXRvbWlj
U3RyaW5nS2V5ZWRNUlVDYWNoZV9oCiAjZGVmaW5lIEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGVf
aAogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDcgKzM3LDcgQEAg
cHVibGljOgogICAgIFQgZ2V0KGNvbnN0IEF0b21pY1N0cmluZyYga2V5KQogICAgIHsKICAgICAg
ICAgaWYgKGtleS5pc051bGwoKSkgewotICAgICAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFQsIHZhbHVlRm9yTnVsbCwgKGNyZWF0ZVZhbHVlRm9yTnVsbEtleSgpKSk7Cisg
ICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VD4gdmFsdWVGb3JOdWxsKGNyZWF0ZVZh
bHVlRm9yTnVsbEtleSgpKTsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvck51bGw7CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBo
ZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRp
b25DRi5jcHAKaW5kZXggNDBiOGJlOS4uNjBiMmU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFJl
dGFpblB0cjxDRkxvY2FsZVJlZj4gQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8
Q0ZMb2NhbGVSZWY+Pjo6Y3JlYXRlCiAKIHN0YXRpYyBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hl
PFJldGFpblB0cjxDRkxvY2FsZVJlZj4+JiBjZkxvY2FsZUNhY2hlKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5Q
dHI8Q0ZMb2NhbGVSZWY+PiwgY2FjaGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+Pj4gY2FjaGU7
CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCA3NGUwNTcyLi5iMjhhMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKQEAgLTE2NjAsOCArMTY2MCw4IEBAIFJlbmRlckJsb2NrKiBSZW5k
ZXJCbG9jazo6YmxvY2tFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3QKICAgICAKIHN0YXRpYyBD
b250aW51YXRpb25PdXRsaW5lVGFibGVNYXAqIGNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENvbnRpbnVhdGlvbk91dGxpbmVU
YWJsZU1hcCwgdGFibGUsICgpKTsKLSAgICByZXR1cm4gJnRhYmxlOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxDb250aW51YXRpb25PdXRsaW5lVGFibGVNYXA+IHRhYmxlOworICAgIHJldHVy
biAmdGFibGUuZ2V0KCk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmFkZENvbnRpbnVhdGlvbldp
dGhPdXRsaW5lKFJlbmRlcklubGluZSogZmxvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb3VudGVyLmNwcAppbmRleCBjNzQ1NjM5Li40MDNjYTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBD
b3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBBdG9taWNT
dHJpbmcmIGlkZW50aWZpCiAKIHN0YXRpYyBDb3VudGVyTWFwcyYgY291bnRlck1hcHMoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDb3VudGVyTWFwcywgc3RhdGljQ291
bnRlck1hcHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q291bnRlck1hcHM+IHN0
YXRpY0NvdW50ZXJNYXBzOwogICAgIHJldHVybiBzdGF0aWNDb3VudGVyTWFwczsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcAppbmRleCBkOTNiM2VkLi5hZmNkYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAt
OTg3LDggKzk4Nyw4IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUxp
bmVDbGFtcChGbGV4Qm94SXRlcmF0b3ImIGl0ZXJhdG9yLCBib29sCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBjb25zdCBVQ2hhciBlbGxpcHNpc0FuZFNwYWNlWzJdID0geyBob3Jp
em9udGFsRWxsaXBzaXMsICcgJyB9OwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBlbGxpcHNpc0FuZFNwYWNlU3RyLCAoZWxsaXBzaXNBbmRTcGFj
ZSwgMikpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBlbGxpcHNpc1N0ciwgKCZob3Jpem9udGFsRWxsaXBzaXMsIDEpKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZWxsaXBzaXNBbmRTcGFjZVN0cihlbGxp
cHNpc0FuZFNwYWNlLCAyKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gZWxsaXBzaXNTdHIoJmhvcml6b250YWxFbGxpcHNpcywgMSk7CiAgICAgICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSBudW1WaXNpYmxlTGluZXMgPT0gMSA/IGZpcnN0TGlu
ZVN0eWxlKCkgOiBzdHlsZSgpOwogICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IGxp
bmVTdHlsZS5mb250Q2FzY2FkZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAppbmRleCAyNTFiMGVlLi5lYTM3OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTM2MzMsMTIgKzM2MzMsMTIgQEAgdm9pZCBSZW5kZXJMYXll
cjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgTGF5b3UKICAgICBSZWZQdHI8SW1hZ2U+IHJlc2l6ZUNvcm5lckltYWdlOwogICAgIEZsb2F0
U2l6ZSBjb3JuZXJSZXNpemVyU2l6ZTsKICAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCkgPj0gMikgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoSW1hZ2UqLCByZXNpemVDb3JuZXJJbWFnZUhpUmVzLCAoSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSkpOworICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUhpUmVz
KEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXJAMngiKS5s
ZWFrUmVmKCkpOwogICAgICAgICByZXNpemVDb3JuZXJJbWFnZSA9IHJlc2l6ZUNvcm5lckltYWdl
SGlSZXM7CiAgICAgICAgIGNvcm5lclJlc2l6ZXJTaXplID0gcmVzaXplQ29ybmVySW1hZ2UtPnNp
emUoKTsKICAgICAgICAgY29ybmVyUmVzaXplclNpemUuc2NhbGUoMC41Zik7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEltYWdlKiwgcmVzaXpl
Q29ybmVySW1hZ2VMb1JlcywgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFS
ZXNpemVDb3JuZXIiKS5sZWFrUmVmKCkpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEltYWdlKj4gcmVzaXplQ29ybmVySW1hZ2VMb1JlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3Vy
Y2UoInRleHRBcmVhUmVzaXplQ29ybmVyIikubGVha1JlZigpKTsKICAgICAgICAgcmVzaXplQ29y
bmVySW1hZ2UgPSByZXNpemVDb3JuZXJJbWFnZUxvUmVzOwogICAgICAgICBjb3JuZXJSZXNpemVy
U2l6ZSA9IHJlc2l6ZUNvcm5lckltYWdlLT5zaXplKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKaW5kZXggNTRmZWEwYy4u
MTY5MmRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyVGhlbWUuY3BwCkBAIC0yNiwxNCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJSZW5kZXJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJh
ci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJTY3JvbGxiYXJUaGVt
ZSogUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJlbmRlclNjcm9sbGJhclRoZW1lKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUmVuZGVyU2Nyb2xsYmFyVGhlbWUsIHRoZW1l
LCAoKSk7Ci0gICAgcmV0dXJuICZ0aGVtZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVu
ZGVyU2Nyb2xsYmFyVGhlbWU+IHRoZW1lOworICAgIHJldHVybiAmdGhlbWUuZ2V0KCk7CiB9CiAK
IHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6ZSwgaW50JiBhZnRlclNpemUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBjNjhiYzhjLi4zYWI5YWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTY4LDcgKzY4
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIENvbG9yJiBjdXN0b21G
b2N1c1JpbmdDb2xvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENv
bG9yLCBjb2xvciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb2xvcj4gY29sb3I7
CiAgICAgcmV0dXJuIGNvbG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwCmluZGV4IGU0OTQ3MTMuLjkyNGVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHVuc2lnbmVkIFdpZGdldEhp
ZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3Vz
cGVuZENvCiAKIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OldpZGdldFRv
UGFyZW50TWFwJiBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjp3aWRnZXRO
ZXdQYXJlbnRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChXaWRn
ZXRUb1BhcmVudE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdpZGdl
dFRvUGFyZW50TWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAppbmRleCA5MTJhYTVj
Li4zOTU2NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlT3V0c2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlT3V0c2lkZUluZm8uaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkxheW91dFNpemUu
aCIKICNpbmNsdWRlICJTaGFwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMw
LDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJv
eCosIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZU91dHNpZGVJbmZvPj4gSW5mb01hcDsKICAgICBzdGF0
aWMgSW5mb01hcCYgaW5mb01hcCgpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoSW5mb01hcCwgc3RhdGljSW5mb01hcCwgKCkpOworICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SW5mb01hcD4gc3RhdGljSW5mb01hcDsKICAgICAgICAgcmV0dXJuIHN0
YXRpY0luZm9NYXA7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAppbmRleCA2NThkZWQ1Li4wYmQ5YTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTEyNDgsOCArMTI0OCw4
IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5bGU6Omh5cGhlblN0cmluZygpIGNvbnN0
CiAgICAgICAgIHJldHVybiBoeXBoZW5hdGlvblN0cmluZzsKIAogICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBkZXBlbmQgb24gbG9jYWxlLgotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIGh5cGhlbk1pbnVzU3RyaW5nLCAoJmh5cGhlbk1pbnVzLCAxKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaHlwaGVu
U3RyaW5nLCAoJmh5cGhlbiwgMSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IGh5cGhlbk1pbnVzU3RyaW5nKCZoeXBoZW5NaW51cywgMSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaHlwaGVuU3RyaW5nKCZoeXBoZW4sIDEpOwogICAg
IHJldHVybiBmb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2x5cGhGb3JDaGFyYWN0ZXIoaHlw
aGVuKSA/IGh5cGhlblN0cmluZyA6IGh5cGhlbk1pbnVzU3RyaW5nOwogfQogCkBAIC0xMjYxLDI4
ICsxMjYxLDI4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNp
c01hcmtTdHJpbmcoKSBjb25zdAogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0N1c3RvbToKICAg
ICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKTsKICAgICBjYXNlIFRleHRFbXBo
YXNpc01hcmtEb3Q6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgZmlsbGVkRG90U3RyaW5nLCAoJmJ1bGxldCwgMSkpOwotICAgICAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvcGVuRG90U3RyaW5nLCAo
JndoaXRlQnVsbGV0LCAxKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IGZpbGxlZERvdFN0cmluZygmYnVsbGV0LCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlbkRvdFN0cmluZygmd2hpdGVCdWxsZXQsIDEpOwog
ICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxs
ZWQgPyBmaWxsZWREb3RTdHJpbmcgOiBvcGVuRG90U3RyaW5nOwogICAgIH0KICAgICBjYXNlIFRl
eHRFbXBoYXNpc01hcmtDaXJjbGU6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVkQ2lyY2xlU3RyaW5nLCAoJmJsYWNrQ2lyY2xlLCAx
KSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IG9wZW5DaXJjbGVTdHJpbmcsICgmd2hpdGVDaXJjbGUsIDEpKTsKKyAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkQ2lyY2xlU3RyaW5nKCZibGFja0NpcmNs
ZSwgMSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wZW5D
aXJjbGVTdHJpbmcoJndoaXRlQ2lyY2xlLCAxKTsKICAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNp
c0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8gZmlsbGVkQ2lyY2xlU3RyaW5nIDog
b3BlbkNpcmNsZVN0cmluZzsKICAgICB9CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrRG91Ymxl
Q2lyY2xlOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGZpbGxlZERvdWJsZUNpcmNsZVN0cmluZywgKCZmaXNoZXllLCAxKSk7Ci0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9wZW5Eb3VibGVD
aXJjbGVTdHJpbmcsICgmYnVsbHNleWUsIDEpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gZmlsbGVkRG91YmxlQ2lyY2xlU3RyaW5nKCZmaXNoZXllLCAxKTsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlbkRvdWJsZUNp
cmNsZVN0cmluZygmYnVsbHNleWUsIDEpOwogICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmls
bCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWREb3VibGVDaXJjbGVTdHJpbmcg
OiBvcGVuRG91YmxlQ2lyY2xlU3RyaW5nOwogICAgIH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtUcmlhbmdsZTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBmaWxsZWRUcmlhbmdsZVN0cmluZywgKCZibGFja1VwUG9pbnRpbmdUcmlhbmds
ZSwgMSkpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBvcGVuVHJpYW5nbGVTdHJpbmcsICgmd2hpdGVVcFBvaW50aW5nVHJpYW5nbGUsIDEpKTsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkVHJpYW5n
bGVTdHJpbmcoJmJsYWNrVXBQb2ludGluZ1RyaWFuZ2xlLCAxKTsKKyAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlblRyaWFuZ2xlU3RyaW5nKCZ3aGl0ZVVwUG9p
bnRpbmdUcmlhbmdsZSwgMSk7CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0g
VGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZFRyaWFuZ2xlU3RyaW5nIDogb3BlblRyaWFu
Z2xlU3RyaW5nOwogICAgIH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtTZXNhbWU6IHsKLSAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVk
U2VzYW1lU3RyaW5nLCAoJnNlc2FtZURvdCwgMSkpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvcGVuU2VzYW1lU3RyaW5nLCAoJndoaXRlU2Vz
YW1lRG90LCAxKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGZpbGxlZFNlc2FtZVN0cmluZygmc2VzYW1lRG90LCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlblNlc2FtZVN0cmluZygmd2hpdGVTZXNhbWVEb3Qs
IDEpOwogICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0Zp
bGxGaWxsZWQgPyBmaWxsZWRTZXNhbWVTdHJpbmcgOiBvcGVuU2VzYW1lU3RyaW5nOwogICAgIH0K
ICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtBdXRvOgpAQCAtMTI5NywxMyArMTI5NywxMyBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkg
Y29uc3QKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiBjb25zdCBWZWN0b3I8U3R5bGVE
YXNoYm9hcmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6aW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8U3R5bGVEYXNoYm9h
cmRSZWdpb24+LCBlbXB0eUxpc3QsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVj
dG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPj4gZW1wdHlMaXN0OwogICAgIHJldHVybiBlbXB0eUxp
c3Q7CiB9CiAKIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIFJlbmRlclN0eWxl
Ojpub25lRGFzaGJvYXJkUmVnaW9ucygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4sIG5vbmVMaXN0LCAoKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4+IG5vbmVM
aXN0OwogICAgIHN0YXRpYyBib29sIG5vbmVMaXN0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAogICAg
IGlmICghbm9uZUxpc3RJbml0aWFsaXplZCkgewpAQCAtMTMxNCw3ICsxMzE0LDcgQEAgY29uc3Qg
VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRS
ZWdpb25zKCkKICAgICAgICAgcmVnaW9uLm9mZnNldC5ib3R0b20oKSA9IExlbmd0aCgpOwogICAg
ICAgICByZWdpb24ub2Zmc2V0LmxlZnQoKSA9IExlbmd0aCgpOwogICAgICAgICByZWdpb24udHlw
ZSA9IFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpOb25lOwotICAgICAgICBub25lTGlzdC5hcHBlbmQo
cmVnaW9uKTsKKyAgICAgICAgbm9uZUxpc3QuZ2V0KCkuYXBwZW5kKHJlZ2lvbik7CiAgICAgICAg
IG5vbmVMaXN0SW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0KICAgICByZXR1cm4gbm9uZUxpc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDY1
ODVjNmUuLmVkNDlhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiVW5pY29kZUJpZGkuaCIKICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yMDA4LDcg
KzIwMDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IGluaXRpYWxDb2x1
bW5Db3VudCgpIHsgcmV0dXJuIDE7IH0KICAgICBzdGF0aWMgQ29sdW1uRmlsbCBpbml0aWFsQ29s
dW1uRmlsbCgpIHsgcmV0dXJuIENvbHVtbkZpbGxCYWxhbmNlOyB9CiAgICAgc3RhdGljIENvbHVt
blNwYW4gaW5pdGlhbENvbHVtblNwYW4oKSB7IHJldHVybiBDb2x1bW5TcGFuTm9uZTsgfQotICAg
IHN0YXRpYyBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBpbml0aWFsVHJhbnNmb3JtKCkgeyBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVHJhbnNmb3JtT3BlcmF0aW9ucywgb3BzLCAo
KSk7IHJldHVybiBvcHM7IH0KKyAgICBzdGF0aWMgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
aW5pdGlhbFRyYW5zZm9ybSgpIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRyYW5zZm9ybU9wZXJh
dGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5z
Zm9ybU9yaWdpblgoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpOyB9CiAgICAgc3Rh
dGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4w
ZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgRVBvaW50ZXJFdmVudHMgaW5pdGlhbFBvaW50ZXJF
dmVudHMoKSB7IHJldHVybiBQRV9BVVRPOyB9CkBAIC0yMTE0LDkgKzIxMTUsOSBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIGluaXRpYWxE
YXNoYm9hcmRSZWdpb25zKCk7CiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2Fy
ZFJlZ2lvbj4mIG5vbmVEYXNoYm9hcmRSZWdpb25zKCk7CiAjZW5kaWYKLSAgICBzdGF0aWMgY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgaW5pdGlhbEZpbHRlcigpIHsgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEZpbHRlck9wZXJhdGlvbnMsIG9wcywgKCkpOyByZXR1cm4gb3BzOyB9Cisg
ICAgc3RhdGljIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGluaXRpYWxGaWx0ZXIoKSB7IHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGaWx0ZXJPcGVyYXRpb25zPiBvcHM7IHJldHVybiBvcHM7IH0KICNp
ZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBpbml0aWFsQmFja2Ryb3BGaWx0ZXIoKSB7IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChGaWx0ZXJPcGVyYXRpb25zLCBvcHMsICgpKTsgcmV0dXJuIG9wczsgfQorICAgIHN0YXRp
YyBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBpbml0aWFsQmFja2Ryb3BGaWx0ZXIoKSB7IHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGaWx0ZXJPcGVyYXRpb25zPiBvcHM7IHJldHVybiBvcHM7IH0KICNl
bmRpZgogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgc3RhdGljIEJsZW5kTW9kZSBp
bml0aWFsQmxlbmRNb2RlKCkgeyByZXR1cm4gQmxlbmRNb2RlTm9ybWFsOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAppbmRleCAzYmUxZDdiLi5l
YzJlMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0
aC5jcHAKQEAgLTEzMSwxNSArMTMxLDE1IEBAIGJvb2wgUmVuZGVyU1ZHUGF0aDo6c2hvdWxkU3Ry
b2tlWmVyb0xlbmd0aFN1YnBhdGgoKSBjb25zdAogCiBQYXRoKiBSZW5kZXJTVkdQYXRoOjp6ZXJv
TGVuZ3RoTGluZWNhcFBhdGgoY29uc3QgRmxvYXRQb2ludCYgbGluZWNhcFBvc2l0aW9uKSBjb25z
dAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChQYXRoLCB0ZW1wUGF0aCwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYXRoPiB0ZW1wUGF0aDsKIAotICAgIHRl
bXBQYXRoLmNsZWFyKCk7CisgICAgdGVtcFBhdGguZ2V0KCkuY2xlYXIoKTsKICAgICBpZiAoc3R5
bGUoKS5zdmdTdHlsZSgpLmNhcFN0eWxlKCkgPT0gU3F1YXJlQ2FwKQotICAgICAgICB0ZW1wUGF0
aC5hZGRSZWN0KHplcm9MZW5ndGhTdWJwYXRoUmVjdChsaW5lY2FwUG9zaXRpb24sIHRoaXMtPnN0
cm9rZVdpZHRoKCkpKTsKKyAgICAgICAgdGVtcFBhdGguZ2V0KCkuYWRkUmVjdCh6ZXJvTGVuZ3Ro
U3VicGF0aFJlY3QobGluZWNhcFBvc2l0aW9uLCB0aGlzLT5zdHJva2VXaWR0aCgpKSk7CiAgICAg
ZWxzZQotICAgICAgICB0ZW1wUGF0aC5hZGRFbGxpcHNlKHplcm9MZW5ndGhTdWJwYXRoUmVjdChs
aW5lY2FwUG9zaXRpb24sIHRoaXMtPnN0cm9rZVdpZHRoKCkpKTsKKyAgICAgICAgdGVtcFBhdGgu
Z2V0KCkuYWRkRWxsaXBzZSh6ZXJvTGVuZ3RoU3VicGF0aFJlY3QobGluZWNhcFBvc2l0aW9uLCB0
aGlzLT5zdHJva2VXaWR0aCgpKSk7CiAKLSAgICByZXR1cm4gJnRlbXBQYXRoOworICAgIHJldHVy
biAmdGVtcFBhdGguZ2V0KCk7CiB9CiAKIEZsb2F0UmVjdCBSZW5kZXJTVkdQYXRoOjp6ZXJvTGVu
Z3RoU3VicGF0aFJlY3QoY29uc3QgRmxvYXRQb2ludCYgbGluZWNhcFBvc2l0aW9uLCBmbG9hdCBz
dHJva2VXaWR0aCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5jcHAKaW5kZXggODIyODU4My4uOGExZmY1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTE4NywxMiArMTg3LDEy
IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmxheW91dCgpCiAKIFBhdGgqIFJlbmRlclNWR1NoYXBl
Ojpub25TY2FsaW5nU3Ryb2tlUGF0aChjb25zdCBQYXRoKiBwYXRoLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHN0cm9rZVRyYW5zZm9ybSkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUGF0aCwgdGVtcFBhdGgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UGF0aD4gdGVtcFBhdGg7CiAKLSAgICB0ZW1wUGF0aCA9ICpwYXRoOwotICAgIHRlbXBQYXRo
LnRyYW5zZm9ybShzdHJva2VUcmFuc2Zvcm0pOworICAgIHRlbXBQYXRoLmdldCgpID0gKnBhdGg7
CisgICAgdGVtcFBhdGguZ2V0KCkudHJhbnNmb3JtKHN0cm9rZVRyYW5zZm9ybSk7CiAKLSAgICBy
ZXR1cm4gJnRlbXBQYXRoOworICAgIHJldHVybiAmdGVtcFBhdGguZ2V0KCk7CiB9CiAKIGJvb2wg
UmVuZGVyU1ZHU2hhcGU6OnNldHVwTm9uU2NhbGluZ1N0cm9rZUNvbnRleHQoQWZmaW5lVHJhbnNm
b3JtJiBzdHJva2VUcmFuc2Zvcm0sIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCA4YmMwYTk5Li41MzdmZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIwNiw3ICsy
MDYsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRl
bnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaQogCiBzdGF0aWMgQWZmaW5lVHJhbnNmb3Jt
JiBjdXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQWZmaW5lVHJhbnNmb3JtLCBzX2N1cnJlbnRDb250ZW50VHJhbnNmb3Jt
YXRpb24sICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QWZmaW5lVHJhbnNmb3JtPiBz
X2N1cnJlbnRDb250ZW50VHJhbnNmb3JtYXRpb247CiAgICAgcmV0dXJuIHNfY3VycmVudENvbnRl
bnRUcmFuc2Zvcm1hdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXMuY3BwCmluZGV4IGU2OGNlMzguLjJlMWYyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAgLTQ1LDQ0ICs0NSw0NCBAQCBT
VkdSZXNvdXJjZXM6OlNWR1Jlc291cmNlcygpCiAKIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmlu
Zz4mIGNsaXBwZXJGaWx0ZXJNYXNrZXJUYWdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBzX3RhZ0xpc3QsICgpKTsKLSAgICBp
ZiAoc190YWdMaXN0LmlzRW1wdHkoKSkgeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
U2V0PEF0b21pY1N0cmluZz4+IHNfdGFnTGlzdDsKKyAgICBpZiAoc190YWdMaXN0LmdldCgpLmlz
RW1wdHkoKSkgewogICAgICAgICAvLyAiY29udGFpbmVyIGVsZW1lbnRzIjogaHR0cDovL3d3dy53
My5vcmcvVFIvU1ZHMTEvaW50cm8uaHRtbCNUZXJtQ29udGFpbmVyRWxlbWVudAogICAgICAgICAv
LyAiZ3JhcGhpY3MgZWxlbWVudHMiIDogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvaW50cm8u
aHRtbCNUZXJtR3JhcGhpY3NFbGVtZW50Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6
OmFUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpjaXJj
bGVUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjplbGxp
cHNlVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Z2x5
cGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpnVGFn
LmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6aW1hZ2VUYWcu
bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxv
Y2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bWFya2VyVGFnLmxv
Y2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bWFza1RhZy5sb2Nh
bE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6Om1pc3NpbmdfZ2x5cGhU
YWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwYXRoVGFn
LmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWdvblRh
Zy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5l
VGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cmVjdFRh
Zy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnN2Z1RhZy5s
b2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRleHRUYWcubG9j
YWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp1c2VUYWcubG9jYWxO
YW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjphVGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6Y2lyY2xlVGFn
LmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6ZWxs
aXBzZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFt
ZXM6OmdseXBoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChT
VkdOYW1lczo6Z1RhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6OmltYWdlVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgp
LmFkZChTVkdOYW1lczo6bGluZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6Om1hcmtlclRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFn
TGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6Om1hc2tUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBz
X3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjptaXNzaW5nX2dseXBoVGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cGF0aFRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcu
bG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5
bGluZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFt
ZXM6OnJlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNW
R05hbWVzOjpzdmdUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRk
KFNWR05hbWVzOjp0ZXh0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgp
LmFkZChTVkdOYW1lczo6dXNlVGFnLmxvY2FsTmFtZSgpKTsKIAogICAgICAgICAvLyBOb3QgbGlz
dGVkIGluIHRoZSBkZWZpbml0aW9ucyBpcyB0aGUgY2xpcFBhdGggZWxlbWVudCwgdGhlIFNWRyBz
cGVjIHNheXMgdGhvdWdoOgogICAgICAgICAvLyBUaGUgImNsaXBQYXRoIiBlbGVtZW50IG9yIGFu
eSBvZiBpdHMgY2hpbGRyZW4gY2FuIHNwZWNpZnkgcHJvcGVydHkgImNsaXAtcGF0aCIuCiAgICAg
ICAgIC8vIFNvIHdlIGhhdmUgdG8gYWRkIGNsaXBQYXRoVGFnIGhlcmUsIG90aGVyd2hpc2UgY2xp
cC1wYXRoIG9uIGNsaXBQYXRoIHdpbGwgZmFpbC4KICAgICAgICAgLy8gKEFscmVhZHkgbWFpbGVk
IFNWRyBXRywgd2FpdGluZyBmb3IgYSBzb2x1dGlvbikKLSAgICAgICAgc190YWdMaXN0LmFkZChT
VkdOYW1lczo6Y2xpcFBhdGhUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0
KCkuYWRkKFNWR05hbWVzOjpjbGlwUGF0aFRhZy5sb2NhbE5hbWUoKSk7CiAKICAgICAgICAgLy8g
Tm90IGxpc3RlZCBpbiB0aGUgZGVmaW5pdGlvbnMgYXJlIHRoZSB0ZXh0IGNvbnRlbnQgZWxlbWVu
dHMsIHRob3VnaCBmaWx0ZXIvY2xpcHBlci9tYXNrZXIgb24gdHNwYW4vdGV4dC8uLiBpcyBhbGxv
d2VkLgogICAgICAgICAvLyAoQWxyZWFkeSBtYWlsZWQgU1ZHIFdHLCB3YWl0aW5nIGZvciBhIHNv
bHV0aW9uKQotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjphbHRHbHlwaFRhZy5sb2Nh
bE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRleHRQYXRoVGFnLmxv
Y2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6dHJlZlRhZy5sb2Nh
bE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRzcGFuVGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6YWx0R2x5cGhU
YWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0
ZXh0UGF0aFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZH
TmFtZXM6OnRyZWZUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRk
KFNWR05hbWVzOjp0c3BhblRhZy5sb2NhbE5hbWUoKSk7CiAKICAgICAgICAgLy8gTm90IGxpc3Rl
ZCBpbiB0aGUgZGVmaW5pdGlvbnMgaXMgdGhlIGZvcmVpZ25PYmplY3QgZWxlbWVudCwgYnV0IGNs
aXAtcGF0aAogICAgICAgICAvLyBpcyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGUuCi0gICAgICAgIHNf
dGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcubG9jYWxOYW1lKCkpOworICAg
ICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnLmxvY2Fs
TmFtZSgpKTsKIAogICAgICAgICAvLyBFbGVtZW50cyB0aGF0IHdlIGlnbm9yZSwgYXMgaXQgZG9l
c24ndCBtYWtlIGFueSBzZW5zZS4KICAgICAgICAgLy8gZGVmcywgcGF0dGVybiwgc3dpdGNoIChG
SVhNRTogTWFpbCBTVkcgV0cgYWJvdXQgdGhlc2UpCkBAIC05NCwxMiArOTQsMTIgQEAgc3RhdGlj
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgY2xpcHBlckZpbHRlck1hc2tlclRhZ3MoKQogCiBzdGF0
aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBtYXJrZXJUYWdzKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBzX3RhZ0xpc3QsICgp
KTsKLSAgICBpZiAoc190YWdMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICBzX3RhZ0xpc3QuYWRk
KFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChT
VkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZH
TmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNW
R05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4gc190YWdMaXN0OworICAgIGlmIChzX3RhZ0xpc3Qu
Z2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6
OmxpbmVUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05h
bWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChT
VkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQo
KS5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gc190YWdMaXN0OwpAQCAtMTA3LDIwICsxMDcsMjAgQEAgc3RhdGljIEhhc2hTZXQ8QXRv
bWljU3RyaW5nPiYgbWFya2VyVGFncygpCiAKIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4m
IGZpbGxBbmRTdHJva2VUYWdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBzX3RhZ0xpc3QsICgpKTsKLSAgICBpZiAoc190YWdM
aXN0LmlzRW1wdHkoKSkgewotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjphbHRHbHlw
aFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmNpcmNs
ZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmVsbGlw
c2VUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpsaW5l
VGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cGF0aFRh
Zy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlnb25U
YWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5bGlu
ZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnJlY3RU
YWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0ZXh0VGFn
LmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFBhdGhU
YWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0cmVmVGFn
LmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6dHNwYW5UYWcu
bG9jYWxOYW1lKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0
cmluZz4+IHNfdGFnTGlzdDsKKyAgICBpZiAoc190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgewor
ICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjphbHRHbHlwaFRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmNpcmNsZVRhZy5s
b2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmVsbGlw
c2VUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVz
OjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdO
YW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0
KCkuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFn
TGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBz
X3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0ZXh0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAg
ICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dGV4dFBhdGhUYWcubG9jYWxOYW1lKCkp
OworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0cmVmVGFnLmxvY2FsTmFt
ZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dHNwYW5UYWcubG9j
YWxOYW1lKCkpOwogICAgIH0KIAogICAgIHJldHVybiBzX3RhZ0xpc3Q7CkBAIC0xMjgsMTIgKzEy
OCwxMiBAQCBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBmaWxsQW5kU3Ryb2tlVGFncygp
CiAKIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGNoYWluYWJsZVJlc291cmNlVGFncygp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiwgc190YWdMaXN0LCAoKSk7Ci0gICAgaWYgKHNfdGFnTGlzdC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpmaWx0ZXJUYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwYXR0ZXJuVGFnLmxvY2FsTmFt
ZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcu
bG9jYWxOYW1lKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0
cmluZz4+IHNfdGFnTGlzdDsKKyAgICBpZiAoc190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgewor
ICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZy5s
b2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmZpbHRl
clRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6
OnBhdHRlcm5UYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNW
R05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHNfdGFnTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuY3BwCmluZGV4IDU4OGYyNzcuLjlhNjk0
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTEyLDE2ICsxMTMsMTYgQEAgU3RyaW5nIFNWR0FuZ2xlOjp2YWx1ZUFzU3RyaW5nKCkgY29u
c3QKIHsKICAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKICAgICBjYXNlIFNWR19BTkdMRVRZUEVf
REVHOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRl
Z1N0cmluZywgKEFTQ0lJTGl0ZXJhbCgiZGVnIikpKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6
bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIGRlZ1N0cmluZzsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZGVnU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZGVnIikp
OworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMp
ICsgZGVnU3RyaW5nLmdldCgpOwogICAgIH0KICAgICBjYXNlIFNWR19BTkdMRVRZUEVfUkFEOiB7
Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHJhZFN0cmlu
ZywgKEFTQ0lJTGl0ZXJhbCgicmFkIikpKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIHJhZFN0cmluZzsKKyAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gcmFkU3RyaW5nKEFTQ0lJTGl0ZXJhbCgicmFkIikpOworICAg
ICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgcmFk
U3RyaW5nLmdldCgpOwogICAgIH0KICAgICBjYXNlIFNWR19BTkdMRVRZUEVfR1JBRDogewotICAg
ICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBncmFkU3RyaW5nLCAo
QVNDSUlMaXRlcmFsKCJncmFkIikpKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzKSArIGdyYWRTdHJpbmc7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGdyYWRTdHJpbmcoQVNDSUlMaXRlcmFsKCJncmFkIikpOworICAg
ICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgZ3Jh
ZFN0cmluZy5nZXQoKTsKICAgICB9CiAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVE
OgogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9VTktOT1dOOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwCmluZGV4IGQ0NDkyYWQuLjBmYjZkMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAgUmVmPFNWR0FuaW1hdGVDb2xvckVsZW1lbnQ+IFNWR0FuaW1hdGVDb2xvckVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogCiBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVW
YWx1ZUlzQ3VycmVudENvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY3VycmVudENvbG9yLCAo
ImN1cnJlbnRDb2xvciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjdXJyZW50Q29sb3Io
ImN1cnJlbnRDb2xvciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiB2YWx1ZSA9PSBjdXJyZW50Q29sb3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IDQ5NmMyZjMuLjc5YzA0ZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAt
MTA4LDggKzEwOCw4IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0CiAgICAgCiBTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6Um90YXRlTW9kZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cm90YXRl
TW9kZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgYXV0b1ZhbCwgKCJhdXRvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIGF1dG9SZXZlcnNlLCAoImF1dG8tcmV2ZXJzZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiBhdXRvVmFsKCJhdXRvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4g
YXV0b1JldmVyc2UoImF1dG8tcmV2ZXJzZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcm90YXRlID0gZ2V0QXR0cmlidXRlKFNW
R05hbWVzOjpyb3RhdGVBdHRyKTsKICAgICBpZiAocm90YXRlID09IGF1dG9WYWwpCiAgICAgICAg
IHJldHVybiBSb3RhdGVBdXRvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1l
bnQuY3BwCmluZGV4IDM0NjI4YWQuLmViMTI0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTI4NiwxMCArMjg2LDEwIEBAIHZvaWQgU1ZHQW5pbWF0
aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0aW9uTW9kZSgpCiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxl
bWVudDo6c2V0Q2FsY01vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBjYWxjTW9kZSkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkaXNjcmV0
ZSwgKCJkaXNjcmV0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBsaW5l
YXIsICgibGluZWFyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHBhY2Vk
LCAoInBhY2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNwbGluZSwg
KCJzcGxpbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZGlzY3JldGUoImRpc2NyZXRl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbGluZWFyKCJsaW5lYXIiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiBwYWNlZCgicGFjZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBzcGxpbmUoInNwbGluZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIGlmIChjYWxjTW9kZSA9PSBkaXNjcmV0ZSkKICAgICAgICAgc2V0Q2FsY01vZGUoQ2FsY01v
ZGVEaXNjcmV0ZSk7CiAgICAgZWxzZSBpZiAoY2FsY01vZGUgPT0gbGluZWFyKQpAQCAtMzA0LDgg
KzMwNCw4IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0Q2FsY01vZGUoY29uc3QgQXRv
bWljU3RyaW5nJiBjYWxjTW9kZSkKIAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzZXRBdHRy
aWJ1dGVUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVHlwZSkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjc3MsICgiQ1NT
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHhtbCwgKCJYTUwiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY3NzKCJDU1MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiB4bWwoIlhNTCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IGlmIChhdHRyaWJ1dGVUeXBlID09IGNzcykKICAgICAgICAgbV9hdHRyaWJ1dGVUeXBlID0gQXR0
cmlidXRlVHlwZUNTUzsKICAgICBlbHNlIGlmIChhdHRyaWJ1dGVUeXBlID09IHhtbCkKQEAgLTMz
MiwxNCArMzMyLDE0IEBAIFN0cmluZyBTVkdBbmltYXRpb25FbGVtZW50Ojpmcm9tVmFsdWUoKSBj
b25zdAogCiBib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUoKSBjb25zdAogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1
bSwgKCJzdW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VtKCJzdW0iLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlID0gZmFzdEdldEF0dHJpYnV0ZShTVkdOYW1lczo6YWRkaXRpdmVBdHRyKTsKICAgICByZXR1
cm4gdmFsdWUgPT0gc3VtIHx8IGFuaW1hdGlvbk1vZGUoKSA9PSBCeUFuaW1hdGlvbjsKIH0KIAog
Ym9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc0FjY3VtdWxhdGVkKCkgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdW0sICgi
c3VtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHN1bSgic3VtIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9
IGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmFjY3VtdWxhdGVBdHRyKTsKICAgICByZXR1cm4g
dmFsdWUgPT0gc3VtICYmIGFuaW1hdGlvbk1vZGUoKSAhPSBUb0FuaW1hdGlvbjsKIH0KQEAgLTY1
Niw3ICs2NTYsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFkanVzdEZvckluaGVyaXRh
bmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0CiAKIHN0YXRpYyBib29sIGluaGVy
aXRzRnJvbVByb3BlcnR5KFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGluaGVyaXQsICgiaW5oZXJpdCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBpbmhlcml0KCJpbmhlcml0IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSB8fCB2
YWx1ZSAhPSBpbmhlcml0KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCAxZmFlYTUzLi5k
ZGY5MjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5jcHAKQEAgLTc1LDI1ICs3NSwyNSBAQCBSZWY8U1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQ+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxV
bml0TGVuZ3RoWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhY
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRl
bnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudDo6a2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHS2VybmVs
VW5pdExlbmd0aFkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJu
ZWxVbml0TGVuZ3RoWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQ6Om9yZGVyWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdPcmRl
clgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdPcmRlclgiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVy
OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Ojpv
cmRlcllJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHT3JkZXJZIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHT3JkZXJZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBiYTJh
M2Q0Li4xMmZhMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcApAQCAtNjMsMTMgKzYzLDEzIEBAIFJlZjxTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQ+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0
TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVu
aXRMZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAo
IlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmll
cigiU1ZHS2VybmVsVW5pdExlbmd0aFkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggYWVlMDhkZC4uZjkzZGFjZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKQEAgLTYy
LDEzICs2MiwxMyBAQCBSZWY8U1ZHRkVEcm9wU2hhZG93RWxlbWVudD4gU1ZHRkVEcm9wU2hhZG93
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRp
ZmllciwgKCJTVkdTdGREZXZpYXRpb25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRp
ZmllcigiU1ZHU3RkRGV2aWF0aW9uWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmll
ciwgKCJTVkdTdGREZXZpYXRpb25ZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmll
cigiU1ZHU3RkRGV2aWF0aW9uWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggMjJjMTc4Yi4uN2IyMWRlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAg
LTU3LDEzICs1NywxMyBAQCBSZWY8U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50PiBTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNf
aWRlbnRpZmllciwgKCJTVkdTdGREZXZpYXRpb25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNf
aWRlbnRpZmllcigiU1ZHU3RkRGV2aWF0aW9uWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRpb25ZSWRlbnRpZmllcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19p
ZGVudGlmaWVyLCAoIlNWR1N0ZERldmlhdGlvblkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19p
ZGVudGlmaWVyKCJTVkdTdGREZXZpYXRpb25ZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IDU5ZjA3ZDIuLjMzNzBlMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAg
LTU2LDEzICs1NiwxMyBAQCBSZWY8U1ZHRkVNb3JwaG9sb2d5RWxlbWVudD4gU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cmFkaXVzWElkZW50aWZpZXIoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmll
ciwgKCJTVkdSYWRpdXNYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZH
UmFkaXVzWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudDo6cmFkaXVzWUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdSYWRpdXNZIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHUmFkaXVzWSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmNwcAppbmRleCBmZWY3ZWVkLi4xOWY1ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC02NywxMyArNjcsMTMgQEAg
UmVmPFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWEKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmll
ciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50
aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWUlkZW50
aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCmluZGV4IDg2
ZGNhZjEuLmI4MDhiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5jcHAKQEAgLTYxLDEzICs2MSwxMyBAQCBSZWY8U1ZHRkVUdXJidWxlbmNlRWxlbWVu
dD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5j
eVhJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHQmFzZUZyZXF1ZW5jeVgiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdCYXNlRnJlcXVlbmN5WCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5j
eVlJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHQmFzZUZyZXF1ZW5jeVkiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdCYXNlRnJlcXVlbmN5WSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAppbmRleCBmMzJjMzJmLi4wYTc1
ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCkBAIC04MiwxMyAr
ODIsMTMgQEAgUmVmPFNWR0ZpbHRlckVsZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKIAogY29uc3QgQXRvbWljU3RyaW5nJiBT
VkdGaWx0ZXJFbGVtZW50OjpmaWx0ZXJSZXNYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0Zp
bHRlclJlc1giLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdGaWx0ZXJS
ZXNYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNf
aWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGaWx0ZXJFbGVtZW50Ojpm
aWx0ZXJSZXNZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0ZpbHRlclJlc1kiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdGaWx0ZXJSZXNZIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR2x5cGhNYXAuaAppbmRleCBiNzQ3YzZkLi5jZTBiNjViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR2x5cGhNYXAuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
VkdHbHlwaCYgc3ZnR2x5cGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmICghZ2x5cGggfHwgZ2x5cGggPiBtX2dseXBoVGFibGUuc2l6ZSgpKSB7Ci0gICAgICAg
ICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU1ZHR2x5cGgsIGRlZmF1bHRHbHlw
aCwgKCkpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNWR0dseXBoPiBkZWZh
dWx0R2x5cGg7CiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdEdseXBoOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBtX2dseXBoVGFibGVbZ2x5cGggLSAxXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xh
bmdTcGFjZS5jcHAKaW5kZXggNDhiZTBkYy4uYjY1MTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xh
bmdTcGFjZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBTVkdMYW5nU3BhY2U6OnNldFhtbGxh
bmcoY29uc3QgQXRvbWljU3RyaW5nJiB4bWxMYW5nKQogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdM
YW5nU3BhY2U6OnhtbHNwYWNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc3BhY2UpIHsKLSAgICAg
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGVm
YXVsdFN0cmluZywgKCJkZWZhdWx0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBk
ZWZhdWx0U3RyaW5nKCJkZWZhdWx0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgICAgIHJldHVybiBkZWZhdWx0U3RyaW5nOwogICAgIH0KIApAQCAtNjIsNyArNjIs
NyBAQCBib29sIFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKICAgICAKIHZvaWQgU1ZHTGFuZ1NwYWNlOjphZGRTdXBwb3J0ZWRBdHRy
aWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4mIHN1cHBvcnRlZEF0dHJpYnV0ZXMpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgeG1sUHJlZml4
LCAoInhtbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB4bWxQcmVmaXgoInhtbCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgUXVhbGlmaWVkTmFtZSBsYW5nV2l0
aFByZWZpeCA9IFhNTE5hbWVzOjpsYW5nQXR0cjsKICAgICBsYW5nV2l0aFByZWZpeC5zZXRQcmVm
aXgoeG1sUHJlZml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAppbmRl
eCAwNjY4N2YyLi5kZjk2ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFy
a2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
Y3BwCkBAIC05MCwxMyArOTAsMTMgQEAgUmVmPFNWR01hcmtlckVsZW1lbnQ+IFNWR01hcmtlckVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBlSWRlbnRpZmllcigpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVu
dGlmaWVyLCAoIlNWR09yaWVudFR5cGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlm
aWVyKCJTVkdPcmllbnRUeXBlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdN
YXJrZXJFbGVtZW50OjpvcmllbnRBbmdsZUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdPcmll
bnRBbmdsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR09yaWVudEFu
Z2xlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNf
aWRlbnRpZmllcjsKIH0KIApAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVu
dDo6c3luY2hyb25pemVPcmllbnRUeXBlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAg
IGlmIChvd25lclR5cGUubV9vcmllbnRUeXBlLnZhbHVlICE9IFNWR01hcmtlck9yaWVudEF1dG8p
CiAgICAgICAgIHJldHVybjsKIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGF1dG9TdHJpbmcsICgiYXV0byIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBh
dXRvU3RyaW5nKCJhdXRvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgb3duZXJUeXBlLm1fb3JpZW50VHlwZS5zeW5jaHJvbml6ZSgmb3duZXJUeXBlLCBvcmllbnRU
eXBlUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIGF1dG9TdHJpbmcpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCmluZGV4IDhhYzI4ZGEuLjA0NWFlNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCkBAIC02Miw5ICs2Miw5IEBAIHZv
aWQgU1ZHU3R5bGVFbGVtZW50OjpzZXREaXNhYmxlZChib29sIHNldERpc2FibGVkKQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGVmYXVsdFZh
bHVlLCAoInRleHQvY3NzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRlZmF1bHRWYWx1
ZSgidGV4dC9jc3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIG4gPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnR5cGVBdHRyKTsK
LSAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZSA6IG47CisgICAgcmV0dXJuIG4u
aXNOdWxsKCkgPyBkZWZhdWx0VmFsdWUuZ2V0KCkgOiBuOwogfQogCiB2b2lkIFNWR1N0eWxlRWxl
bWVudDo6c2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmKQpA
QCAtNzQsOSArNzQsOSBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0VHlwZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNW
R1N0eWxlRWxlbWVudDo6bWVkaWEoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRlZmF1bHRWYWx1ZSwgKCJhbGwiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZGVmYXVsdFZhbHVlKCJhbGwiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBmYXN0
R2V0QXR0cmlidXRlKFNWR05hbWVzOjptZWRpYUF0dHIpOwotICAgIHJldHVybiBuLmlzTnVsbCgp
ID8gZGVmYXVsdFZhbHVlIDogbjsKKyAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1
ZS5nZXQoKSA6IG47CiB9CiAKIHZvaWQgU1ZHU3R5bGVFbGVtZW50OjpzZXRNZWRpYShjb25zdCBB
dG9taWNTdHJpbmcmIG1lZGlhLCBFeGNlcHRpb25Db2RlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5z
Zm9ybS5jcHAKaW5kZXggZThhM2YxMi4uMjExYWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5z
Zm9ybS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNs
dWRlICJTVkdBbmdsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xMzQsMjcgKzEzNSwyNyBA
QCBjb25zdCBTdHJpbmcmIFNWR1RyYW5zZm9ybTo6dHJhbnNmb3JtVHlwZVByZWZpeEZvclBhcnNp
bmcoU1ZHVHJhbnNmb3JtVHlwZSB0eXBlKQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9VTktOT1dO
OgogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBjYXNlIFNWR19UUkFOU0ZPUk1f
TUFUUklYOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IG1hdHJpeFN0cmluZywgKEFTQ0lJTGl0ZXJhbCgibWF0cml4KCIpKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IG1hdHJpeFN0cmluZyhBU0NJSUxpdGVyYWwoIm1hdHJp
eCgiKSk7CiAgICAgICAgIHJldHVybiBtYXRyaXhTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgU1ZH
X1RSQU5TRk9STV9UUkFOU0xBVEU6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgdHJhbnNsYXRlU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ0cmFuc2xhdGUo
IikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHJhbnNsYXRlU3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgidHJhbnNsYXRlKCIpKTsKICAgICAgICAgcmV0dXJuIHRyYW5zbGF0
ZVN0cmluZzsKICAgICB9CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NDQUxFOiB7Ci0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjYWxlU3RyaW5nLCAoQVND
SUlMaXRlcmFsKCJzY2FsZSgiKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBzY2FsZVN0cmluZyhBU0NJSUxpdGVyYWwoInNjYWxlKCIpKTsKICAgICAgICAgcmV0dXJu
IHNjYWxlU3RyaW5nOwogICAgIH0KICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fUk9UQVRFOiB7Ci0g
ICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHJvdGF0ZVN0cmlu
ZywgKEFTQ0lJTGl0ZXJhbCgicm90YXRlKCIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IHJvdGF0ZVN0cmluZyhBU0NJSUxpdGVyYWwoInJvdGF0ZSgiKSk7CiAgICAg
ICAgIHJldHVybiByb3RhdGVTdHJpbmc7CiAgICAgfSAgICAKICAgICBjYXNlIFNWR19UUkFOU0ZP
Uk1fU0tFV1g6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
Zywgc2tld1hTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNrZXdYKCIpKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNrZXdYU3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2tld1go
IikpOwogICAgICAgICByZXR1cm4gc2tld1hTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgU1ZHX1RS
QU5TRk9STV9TS0VXWTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBza2V3WVN0cmluZywgKEFTQ0lJTGl0ZXJhbCgic2tld1koIikpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2tld1lTdHJpbmcoQVNDSUlMaXRlcmFsKCJz
a2V3WSgiKSk7CiAgICAgICAgIHJldHVybiBza2V3WVN0cmluZzsKICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKaW5kZXggYWM4NmVlMy4uMDA5OGNhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVmlld1NwZWMuY3BwCkBAIC04NCwxOSArODQsMTkgQEAgU1ZHVmlld1NwZWM6OlNW
R1ZpZXdTcGVjKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogCiBjb25zdCBBdG9taWNTdHJp
bmcmIFNWR1ZpZXdTcGVjOjp2aWV3Qm94SWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1ZpZXdT
cGVjVmlld0JveEF0dHJpYnV0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIo
IlNWR1ZpZXdTcGVjVmlld0JveEF0dHJpYnV0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgU1ZHVmlld1NwZWM6OnByZXNlcnZlQXNwZWN0UmF0aW9JZGVudGlmaWVyKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZp
ZXIsICgiU1ZHVmlld1NwZWNQcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cmlidXRlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHVmlld1NwZWNQcmVzZXJ2ZUFzcGVjdFJhdGlv
QXR0cmlidXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdWaWV3U3BlYzo6
dHJhbnNmb3JtSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1ZpZXdTcGVjVHJhbnNmb3JtQXR0
cmlidXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHVmlld1NwZWNU
cmFuc2Zvcm1BdHRyaWJ1dGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDM1NjhiZTQuLjQ0MTBiNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0z
MjksNyArMzI5LDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShj
b25zdCBTdHJpbmcmIGRhdGEpCiAgICAgCiAgICAgU3RyaW5nIHBhcnNlID0gZGF0YS5zdHJpcFdo
aXRlU3BhY2UoKTsKIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIGluZGVmaW5pdGVWYWx1ZSwgKCJpbmRlZmluaXRlIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IGluZGVmaW5pdGVWYWx1ZSgiaW5kZWZpbml0ZSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChwYXJzZSA9PSBpbmRlZmluaXRlVmFs
dWUpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6aW5kZWZpbml0ZSgpOwogCkBAIC00NTIsMTkg
KzQ1MiwxOSBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpwYXJzZUJlZ2luT3JFbmQoY29uc3QgU3Ry
aW5nJiBwYXJzZVN0cmluZywgQmVnaW5PckVuZCBiZWdpbgogCiBib29sIFNWR1NNSUxFbGVtZW50
Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxRdWFsaWZpZWROYW1l
Piwgc3VwcG9ydGVkQXR0cmlidXRlcywgKCkpOwotICAgIGlmIChzdXBwb3J0ZWRBdHRyaWJ1dGVz
LmlzRW1wdHkoKSkgewotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6
YmVnaW5BdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6OmVu
ZEF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6ZHVyQXR0
cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjpyZXBlYXREdXJB
dHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6OnJlcGVhdENv
dW50QXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjptaW5B
dHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6Om1heEF0dHIp
OwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6YXR0cmlidXRlTmFt
ZUF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChYTGlua05hbWVzOjpocmVm
QXR0cik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4+
IHN1cHBvcnRlZEF0dHJpYnV0ZXM7CisgICAgaWYgKHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCku
aXNFbXB0eSgpKSB7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05h
bWVzOjpiZWdpbkF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChT
VkdOYW1lczo6ZW5kQXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRk
KFNWR05hbWVzOjpkdXJBdHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5h
ZGQoU1ZHTmFtZXM6OnJlcGVhdER1ckF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVz
LmdldCgpLmFkZChTVkdOYW1lczo6cmVwZWF0Q291bnRBdHRyKTsKKyAgICAgICAgc3VwcG9ydGVk
QXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6Om1pbkF0dHIpOworICAgICAgICBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6bWF4QXR0cik7CisgICAgICAgIHN1cHBv
cnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjphdHRyaWJ1dGVOYW1lQXR0cik7Cisg
ICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFhMaW5rTmFtZXM6OmhyZWZBdHRy
KTsKICAgICB9Ci0gICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8U1ZHQXR0
cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkQXR0
cmlidXRlcy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5h
bWUpOwogfQogCiB2b2lkIFNWR1NNSUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtNjQzLDggKzY0
Myw4IEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OmlzRnJvemVuKCkgY29uc3QKICAgICAKIFNWR1NN
SUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NNSUxFbGVtZW50OjpyZXN0YXJ0KCkgY29uc3QKIHsgICAg
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
bmV2ZXIsICgibmV2ZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgd2hl
bk5vdEFjdGl2ZSwgKCJ3aGVuTm90QWN0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IG5ldmVyKCJuZXZlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHdoZW5Ob3RBY3RpdmUo
IndoZW5Ob3RBY3RpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShTVkdOYW1lczo6
cmVzdGFydEF0dHIpOwogICAgIGlmICh2YWx1ZSA9PSBuZXZlcikKICAgICAgICAgcmV0dXJuIFJl
c3RhcnROZXZlcjsKQEAgLTY1NSw3ICs2NTUsNyBAQCBTVkdTTUlMRWxlbWVudDo6UmVzdGFydCBT
VkdTTUlMRWxlbWVudDo6cmVzdGFydCgpIGNvbnN0CiAgICAgCiBTVkdTTUlMRWxlbWVudDo6Rmls
bE1vZGUgU1ZHU01JTEVsZW1lbnQ6OmZpbGwoKSBjb25zdAogeyAgIAotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZyZWV6ZSwgKCJmcmVlemUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZnJlZXplKCJmcmVlemUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
ID0gZmFzdEdldEF0dHJpYnV0ZShTVkdOYW1lczo6ZmlsbEF0dHIpOwogICAgIHJldHVybiB2YWx1
ZSA9PSBmcmVlemUgPyBGaWxsRnJlZXplIDogRmlsbFJlbW92ZTsKIH0KQEAgLTY4OCw3ICs2ODgs
NyBAQCBTTUlMVGltZSBTVkdTTUlMRWxlbWVudDo6cmVwZWF0Q291bnQoKSBjb25zdAogICAgIGlm
ICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7
CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBpbmRlZmluaXRlVmFsdWUsICgiaW5kZWZpbml0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBpbmRlZmluaXRlVmFsdWUoImluZGVmaW5pdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICBpZiAodmFsdWUgPT0gaW5kZWZpbml0ZVZhbHVlKQogICAgICAg
ICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5pdGUoKTsKICAgICBib29sIG9rOwpAQCAtMTE0Mywx
NiArMTE0MywxNiBAQCBib29sIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcyhTTUlMVGltZSBlbGFw
c2VkLCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCwgYgogdm9pZCBTVkdTTUlMRWxlbWVu
dDo6bm90aWZ5RGVwZW5kZW50c0ludGVydmFsQ2hhbmdlZChOZXdPckV4aXN0aW5nSW50ZXJ2YWwg
bmV3T3JFeGlzdGluZykKIHsKICAgICBBU1NFUlQobV9pbnRlcnZhbEJlZ2luLmlzRmluaXRlKCkp
OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFNWR1NNSUxFbGVt
ZW50Kj4sIGxvb3BCcmVha2VyLCAoKSk7Ci0gICAgaWYgKGxvb3BCcmVha2VyLmNvbnRhaW5zKHRo
aXMpKQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNWR1NNSUxFbGVtZW50Kj4+
IGxvb3BCcmVha2VyOworICAgIGlmIChsb29wQnJlYWtlci5nZXQoKS5jb250YWlucyh0aGlzKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGxvb3BCcmVha2VyLmFkZCh0aGlzKTsKKyAgICBsb29wQnJl
YWtlci5nZXQoKS5hZGQodGhpcyk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBkZXBlbmRlbnQgOiBt
X3RpbWVEZXBlbmRlbnRzKSB7CiAgICAgICAgIGRlcGVuZGVudC0+Y3JlYXRlSW5zdGFuY2VUaW1l
c0Zyb21TeW5jYmFzZSh0aGlzLCBuZXdPckV4aXN0aW5nKTsKICAgICB9CiAKLSAgICBsb29wQnJl
YWtlci5yZW1vdmUodGhpcyk7CisgICAgbG9vcEJyZWFrZXIuZ2V0KCkucmVtb3ZlKHRoaXMpOwog
fQogICAgIAogdm9pZCBTVkdTTUlMRWxlbWVudDo6Y3JlYXRlSW5zdGFuY2VUaW1lc0Zyb21TeW5j
YmFzZShTVkdTTUlMRWxlbWVudCogc3luY2Jhc2UsIE5ld09yRXhpc3RpbmdJbnRlcnZhbCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268576</attachid>
            <date>2016-01-08 13:23:55 -0800</date>
            <delta_ts>2016-01-08 13:50:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152902-6.diff</filename>
            <type>text/plain</type>
            <size>265477</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KaW5k
ZXggZWY1NDYwMi4uNzIzNjg3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSVdyYXBwZXJPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSVdyYXBwZXJPYmplY3QubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NhbGxi
YWNrT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCkBAIC00MSw4ICs0Miw4IEBAIHB1YmxpYzoKIAogc3Rh
dGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmplY3RIYW5k
bGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEpTQVBJV3Jh
cHBlck9iamVjdEhhbmRsZU93bmVyLCBqc1dyYXBwZXJPYmplY3RIYW5kbGVPd25lciwgKCkpOwot
ICAgIHJldHVybiAmanNXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyPiBqc1dyYXBwZXJPYmplY3RI
YW5kbGVPd25lcjsKKyAgICByZXR1cm4gJmpzV3JhcHBlck9iamVjdEhhbmRsZU93bmVyLmdldCgp
OwogfQogCiB2b2lkIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRleCBhNzJkMTliLi4xYzFmN2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgIldlYWtIYW5kbGVPd25lci5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRy
YXMuaCIKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9OU01hcFRhYmxlU1BJLmg+CiAKIGNsYXNzIEpT
TWFuYWdlZFZhbHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpA
QCAtNDcsOCArNDgsOCBAQCBwdWJsaWM6CiAKIHN0YXRpYyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyKiBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIsIGpzTWFuYWdlZFZhbHVlSGFu
ZGxlT3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI+IGpzTWFu
YWdlZFZhbHVlSGFuZGxlT3duZXI7CisgICAgcmV0dXJuICZqc01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyLmdldCgpOwogfQogCiBjbGFzcyBXZWFrVmFsdWVSZWYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggYTFlMDlhOC4uYmQ5ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTYtMDEtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTAorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyOTAyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3RseSBt
ZWNoYW5pY2FsIGNvbnZlcnNpb24gdG8gTmV2ZXJEZXN0cm95ZWQgdGhyb3VnaG91dC4KKworICAg
ICAgICAqIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QubW06CisgICAgICAgIChqc0FQSVdyYXBwZXJP
YmplY3RIYW5kbGVPd25lcik6CisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLm1tOgorICAg
ICAgICAobWFuYWdlZFZhbHVlSGFuZGxlT3duZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om9iamVj
dEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbik6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yOjphbGxv
Y2F0b3JzKToKKwogMjAxNi0wMS0wNiAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIERhdGUucHJvdG90eXBlIHNob3VsZCBiZSBhIHBs
YWluIG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlYzc3YTc0
Li44M2Q3ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUyLDggKzUzLDggQEAgY29uc3QgY2hhciogSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXAgPSAiYmFja3RyYWNlIjsKIC8vIGNy
ZWF0ZSBvYmplY3RzIGluIHRoZSBzYW1lIGdyb3VwLgogc3RhdGljIFN0cmluZyBvYmplY3RHcm91
cEZvckJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW9u
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIG9iamVjdEdyb3VwLCAoImJyZWFrcG9pbnQtYWN0aW9uLSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cCwg
U3RyaW5nOjpudW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBvYmplY3RHcm91cChBU0NJSUxpdGVyYWwoImJyZWFrcG9pbnQtYWN0aW9u
LSIpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cC5nZXQoKSwgU3RyaW5nOjpu
dW1iZXIoYWN0aW9uLmlkZW50aWZpZXIpKTsKIH0KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBkMjkx
MWEzLi43YWJhZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAKQEAgLTEzNCw4ICsxMzQsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxQYWdlUmVzZXJ2YXRpb24sIDE2PiByZXNlcnZhdGlvbnM7CiAgICAgc3RhdGljIEhhc2hTZXQ8
RGVtYW5kRXhlY3V0YWJsZUFsbG9jYXRvcio+JiBhbGxvY2F0b3JzKCkKICAgICB7Ci0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PERlbWFuZEV4ZWN1dGFibGVB
bGxvY2F0b3IqPiwgc0FsbG9jYXRvcnMsICgpKTsKLSAgICAgICAgcmV0dXJuIHNBbGxvY2F0b3Jz
OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxEZW1hbmRFeGVjdXRhYmxl
QWxsb2NhdG9yKj4+IHNldDsKKyAgICAgICAgcmV0dXJuIHNldDsKICAgICB9CiAKICAgICBzdGF0
aWMgU3RhdGljTG9jayYgYWxsb2NhdG9yc011dGV4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMjY4MjQyZi4uNzM0MzQzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMS0wOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
NTI5MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW9zdGx5IG1lY2hhbmljYWwgY29udmVyc2lvbiB0byBOZXZlckRlc3Ryb3llZCB0aHJvdWdob3V0
LgorCisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpj
dXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAo
V1RGOjp0aHJlYWRNYXBNdXRleCk6CisgICAgICAgIChXVEY6OnRocmVhZE1hcCk6CisKIDIwMTYt
MDEtMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEFsbG93IHRvIHNhdmUgYW5kIHJlc3RvcmUgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApp
bmRleCBlMzUyOTBkLi43MDFjMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29w
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KIApAQCAtNTYsOCArNTcsOCBAQCB2b2lkIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpCiAKIFJ1bkxvb3AmIFJ1bkxvb3A6OmN1cnJlbnQo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlRocmVhZFNwZWNp
ZmljPFJ1bkxvb3A6OkhvbGRlcj4sIHJ1bkxvb3BIb2xkZXIsICgpKTsKLSAgICByZXR1cm4gcnVu
TG9vcEhvbGRlci0+cnVuTG9vcCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaHJlYWRT
cGVjaWZpYzxIb2xkZXI+PiBydW5Mb29wSG9sZGVyOworICAgIHJldHVybiBydW5Mb29wSG9sZGVy
LmdldCgpLT5ydW5Mb29wKCk7CiB9CiAKIFJ1bkxvb3AmIFJ1bkxvb3A6Om1haW4oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IGE5N2NmMzIuLjcwNWYzNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJU
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3BlY2lmaWMu
aCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SYXdQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVh
ZERhdGEuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtOTksNyArMTAwLDcgQEAgdm9pZCB0aHJl
YWRXYXNKb2luZWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIHN0YXRpYyBNdXRleCYgdGhyZWFkTWFw
TXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0
ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0ZXg+IG11dGV4OwogICAgIHJl
dHVybiBtdXRleDsKIH0KIApAQCAtMTI1LDcgKzEyNiw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpCiAKIHN0YXRpYyBUaHJlYWRNYXAmIHRocmVhZE1hcCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRocmVhZE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFRocmVhZE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkYzdlMmNmLi45MGY5NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTI0IEBACisy
MDE2LTAxLTA4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCBvZiBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0bHkgbWVjaGFuaWNhbCBjb252
ZXJzaW9uIHRvIE5ldmVyRGVzdHJveWVkIHRocm91Z2hvdXQuCisKKyAgICAgICAgKiBNb2R1bGVz
L2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmRpcmVjdGlvbk5leHRVbmlxdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJl
Y3Rpb25QcmV2KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVu
aXF1ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5UmVxdWVzdDo6cmVhZHlTdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om9wZW5L
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjplbmRlZEtleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKToKKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChX
ZWJDb3JlOjpxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNNaW1lVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNGaWxlRXh0
ZW5zaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUpOgor
ICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKToKKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFJlc29sdXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZSk6
CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldCk6CisgICAgICAgICog
ZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjdW11
bGF0b3JNYXApOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc1N1cHBvcnRlZFNWRzEwRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpp
c1N1cHBvcnRlZFNWRzExRmVhdHVyZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWFkeVN0YXRlKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0
KToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayk6CisgICAgICAgICogZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ1NT
Q29udGVudFR5cGUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OnN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNv
cmQuY3BwOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBzZXVkb0VsZW1lbnRUYWdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1l
bnQ6OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVk
TmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdWFsaWZpZWROYW1lQ2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6bnVsbFFOYW1lKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0xlZ2FjeVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dHlsZVNwYW5DbGFzc1N0cmluZyk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFt
ZXNwYWNlRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0ludGVyY2hhbmdlTmV3bGluZU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5nZUNvbnZlcnRlZFNwYWNlU3Bhbik6CisgICAgICAg
ICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub25CcmVha2lu
Z1NwYWNlU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c3R5bGVOb2RlQ2xvc2VUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwSW50ZXJuYWwpOgorICAgICAgICAqIGZpbGVhcGkv
QmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KToK
KyAgICAgICAgKiBodG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpj
cmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAg
ICAgKiBodG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVU
aW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVM
b2NhbElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRU
eXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAqIGh0bWwvRW1haWxJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEVtYWlsQWRkcmVzcyk6CisgICAgICAgICogaHRt
bC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtS2V5R2VuZXJhdG9y
Ojpmb3JtS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1TdGF0ZVNpZ25hdHVyZSk6CisgICAg
ICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyb290
RWRpdGFibGVFbGVtZW50TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxv
YWRpbmdEaXNhYmxlcjo6ZGlzYWJsZWRTdWJ0cmVlUm9vdHMpOgorICAgICAgICAqIGh0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6
OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bGlua0xvYWRFdmVudFNlbmRlcik6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50VG9FbGVtZW50
U2V0TWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzUmVjb2duaXplZFRhZ05hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpm
b3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGl0bGVUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OnN1YnRpdGxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkpOgorICAgICAgICAqIGh0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmZv
cm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6Zm9ybUNvbnRyb2xUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpcmVjdGlvblN0cmluZyk6CisgICAg
ICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlu
cHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlTmFtZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmJ1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6Y2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6
SW5wdXRUeXBlTmFtZXM6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVz
OjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpkYXRldGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OmZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Omhp
ZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6aW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6Om1vbnRoKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZU5hbWVzOjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6
OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpyYWRpbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6cmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlTmFtZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5h
bWVzOjpzZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZU5hbWVzOjp0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OndlZWspOgorICAgICAgICAqIGh0
bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHBsYXliYWNrU3RhdGVXYWl0aW5nKToK
KyAgICAgICAgKHBsYXliYWNrU3RhdGVQbGF5aW5nKToKKyAgICAgICAgKHBsYXliYWNrU3RhdGVF
bmRlZCk6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb250aElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL051
bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNy
ZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAg
KiBodG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFjY2Vw
dGFibGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JT
dGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3RlcE1pc21hdGNoKToKKyAgICAg
ICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJbWFnZURhdGEpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNT
QXVkaXRvcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRD
YXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50U2hhZG93UHNldWRv
SWQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRv
d0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6Ok1ldGVy
SW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1ldGVyVmFsdWVFbGVtZW50Ojp2YWx1
ZVBzZXVkb0lkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpt
ZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpjaGFwdGVyc0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjptZXRhZGF0YUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Ojpmb3JjZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6ZGlzYWJsZWRL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6aGlkZGVuS2V5d29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
OjpjdWVTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhcnRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Om1pZGRs
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpyaWdodEtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6dmVydGljYWxHcm93aW5nTGVmdEtleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6dmVydGljYWxHcm93aW5nUmlnaHRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1
ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6Om1h
cmtGdXR1cmVBbmRQYXN0Tm9kZXMpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUUmVnaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNv
cmU6OlZUVFJlZ2lvbjo6c2V0U2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6
cGFyc2VTZXR0aW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjp0ZXh0VHJh
Y2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcyk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRl
b1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6bWFpbktleXdvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2lnbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6c3VidGl0bGVzS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpj
b21tZW50YXJ5S2V5d29yZCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVUeXBlVG9UYWdOYW1lKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNvbGxlY3RNZXRhZGF0YUhl
YWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVQc2V1ZG9DbGFzc01hc2spOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgor
ICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJl
dmVudGVkTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmluaXRpYXRv
ck5hbWUpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKToKKyAgICAg
ICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKToK
KyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tn
cm91bmRDU1MpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MpOgorICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2
YVNjcmlwdFVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJ
bmxpbmVFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93SW5saW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6d2luZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyk6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpkcmFnU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9jdXNEaXJlY3Rpb25Gb3JL
ZXkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmFzZTo6cGxhdGZvcm0pOgorICAgICAgICAqIHBhZ2Uv
UGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlVmlzaWJpbGl0
eVN0YXRlU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om9yaWdpbkFjY2Vzc01hcCk6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjpwYXJzZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93Rm9yQmxlbmRpbmcpOgorICAgICAgICAqIHBh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50ZXJDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZEN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptb3ZlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnZlcnRpY2FsVGV4dEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpjZWxsQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmFs
aWFzQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Onpvb21JbkN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjp6b29tT3V0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6bm9uZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpwcm9ncmVz
c0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub0Ryb3BDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6bm90QWxsb3dlZEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjppQmVhbUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjp3YWl0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmhlbHBD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpub3J0aFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aEVhc3RS
ZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9ydGhXZXN0UmVzaXplQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNvdXRoRWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpzb3V0aFdlc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6d2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpub3J0aFNvdXRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVh
c3RXZXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoRWFzdFNvdXRoV2Vz
dFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aFdlc3RTb3V0aEVhc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29sdW1uUmVzaXplQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJvd1Jlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjptaWRkbGVQ
YW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVhc3RQYW5uaW5nQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6Om5vcnRoUGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpu
b3J0aEVhc3RQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoV2VzdFBhbm5p
bmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6c291dGhQYW5uaW5nQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNvdXRoRWFzdFBhbm5pbmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
c291dGhXZXN0UGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjp3ZXN0UGFubmluZ0N1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpncmFiQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OmdyYWJiaW5nQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZWRT
dHJpbmdGb3JMb29rdXBNZW51SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZWRpYU1JTUVUeXBlTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxVUkxTY2hlbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OmRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2VjdXJlU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMpOgorICAgICAgICAoV2ViQ29yZTo6ZW1wdHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6c2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0
ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNPUlNFbmFibGVkU2NoZW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpibGFua1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxOYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25z
ZXNGb3JTdWJqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdWRpb0Rlc3RpbmF0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZXBhaW50UmVjdE1hcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9y
U3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFBsYWluKToKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNo
QnVmZmVyOjpzaW5nbGV0b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpwbGF5ZXJUb1ByaXZhdGVNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxw
aGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjplZmZlY3RO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjptaW1lQ29tbW9uVHlwZXNDYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjptaW1lTW9kZXJuVHlwZXNDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0N1cnNvcklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJzb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAgICAgICgrW1dlYkNvcmVNb3Rp
b25NYW5hZ2VyIHNoYXJlZE1hbmFnZXJdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYlRo
cmVhZEdldE9ic2VydmVkQ29udGVudE1vZGlmaWVycyk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRGcm9tTlNGb250KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybVRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW06CisgICAg
ICAgIChXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpwbGF0Zm9ybUNl
bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUcmFja0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Nh
bXBsZUJveDo6dHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXApOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xpZW50Q2VydHMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5
ZWRNUlVDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNo
ZTo6Z2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2ZMb2NhbGVDYWNoZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJs
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y291bnRlck1hcHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVy
SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhl
bWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVu
c2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQ
YXRoOjp6ZXJvTGVuZ3RoTGluZWNhcFBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vblNj
YWxpbmdTdHJva2VQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2xpcHBlckZpbHRlck1hc2tlclRhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6bWFy
a2VyVGFncyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsQW5kU3Ryb2tlVGFncyk6CisgICAgICAg
IChXZWJDb3JlOjpjaGFpbmFibGVSZXNvdXJjZVRhZ3MpOgorICAgICAgICAqIHN2Zy9TVkdBbmds
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6dmFsdWVBc1N0cmluZyk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50Ojpyb3RhdGVNb2RlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzZXRBdHRyaWJ1dGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBY2N1bXVsYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjppbmhlcml0c0Zyb21Qcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
b3JkZXJYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudDo6b3JkZXJZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmll
cik6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9u
WUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRp
b25YSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVyKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50
OjpyYWRpdXNYSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpyYWRpdXNZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRp
Zmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVx
dWVuY3lZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWUlkZW50aWZp
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaE1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R2x5cGhNYXA6OnN2Z0dseXBoRm9yR2x5cGgpOgorICAgICAgICAqIHN2Zy9TVkdMYW5nU3BhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGFuZ1NwYWNlOjp4bWxzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtl
ckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01h
cmtlckVsZW1lbnQ6Om9yaWVudEFuZ2xlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUpOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6bWVkaWEpOgorICAgICAg
ICAqIHN2Zy9TVkdUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3Jt
Ojp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdT
cGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjp2aWV3Qm94SWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cHJlc2VydmVBc3BlY3RSYXRpb0lk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OnRyYW5zZm9ybUlkZW50
aWZpZXIpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU01JTEVsZW1lbnQ6OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6
OnJlcGVhdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpub3RpZnlE
ZXBlbmRlbnRzSW50ZXJ2YWxDaGFuZ2VkKToKKwogMjAxNi0wMS0wNSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIHNob3dSZW5kZXJUcmVlOiBhZGQgaW5saW5lLWJs
b2NrL2lubGluZS9ibG9jayBjb2x1bW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5jcHAKaW5kZXggNGFlNDI3ZC4uOGRjMDgzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcApAQCAtMjYsMTQgKzI2LDE2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudC5oIgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5KGJvb2wgYXZhaWxhYmxlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGF2YWlsYWJsZVN0cmluZywgKCJhdmFpbGFibGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgbm90QXZhaWxhYmxlU3RyaW5nLCAoIm5vdC1hdmFpbGFibGUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXZhaWxhYmxlU3RyaW5nKCJhdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBub3RBdmFpbGFibGVTdHJpbmcoIm5vdC1hdmFpbGFibGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIHJldHVybiBhdmFpbGFibGUg
PyBhdmFpbGFibGVTdHJpbmcgOiBub3RBdmFpbGFibGVTdHJpbmc7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA4NjM4MGUxLi4wMzY2
MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwyNSArMzksMjUgQEAgSURCQ3Vyc29yOjpJ
REJDdXJzb3IoKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4
dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bmV4dCwgKCJuZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5leHQoIm5leHQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmV4dDsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5leHR1bmlxdWUs
ICgibmV4dHVuaXF1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuZXh0dW5pcXVlKCJuZXh0dW5p
cXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5l
eHR1bmlxdWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25Q
cmV2KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBwcmV2LCAoInByZXYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcHJldigicHJldiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBwcmV2OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHJldnVuaXF1
ZSwgKCJwcmV2dW5pcXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHByZXZ1bmlxdWUoInByZXZ1
bmlxdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4g
cHJldnVuaXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDUxNzA3NzcuLjI1OWZiZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwzMSArNDAsMzEgQEAgSURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgicmVhZG9u
bHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZG9ubHkoInJlYWRvbmx5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWRvbmx5OwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByZWFkd3JpdGUs
ICgicmVhZHdyaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJlYWR3cml0ZSgicmVhZHdyaXRl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3
cml0ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNp
b25DaGFuZ2UoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHZlcnNpb25jaGFuZ2UsICgidmVyc2lvbmNoYW5nZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiB2ZXJzaW9uY2hhbmdlKCJ2ZXJzaW9uY2hhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHZlcnNpb25jaGFuZ2U7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgi
MCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiByZWFkb25seSgiMCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiByZWFkb25seTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZHdyaXRlLCAo
IjEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmVhZHdyaXRlKCIxIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3cml0ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJl
cXVlc3QuY3BwCmluZGV4IDhiMmYyMGQuLmJmY2RkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5UmVxdWVzdC5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNSwxMyAr
MTM2LDEzIEBAIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gTGVnYWN5UmVxdWVzdDo6dHJhbnNhY3Rp
b24oKSBjb25zdAogY29uc3QgU3RyaW5nJiBMZWdhY3lSZXF1ZXN0OjpyZWFkeVN0YXRlKCkgY29u
c3QKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IElEQlJlcXVlc3RSZWFkeVN0YXRlOjpQ
ZW5kaW5nIHx8IG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6RG9uZSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGVuZGluZywg
KCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRvbmUsICgiZG9uZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBwZW5kaW5nKCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gZG9uZSgiZG9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6UGVuZGluZykK
LSAgICAgICAgcmV0dXJuIHBlbmRpbmc7CisgICAgICAgIHJldHVybiBwZW5kaW5nLmdldCgpOwog
Ci0gICAgcmV0dXJuIGRvbmU7CisgICAgcmV0dXJuIGRvbmUuZ2V0KCk7CiB9CiAKIHZvaWQgTGVn
YWN5UmVxdWVzdDo6bWFya0Vhcmx5RGVhdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggODdi
YzM4Mi4uZjhmM2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCkBAIC00NSwxOSArNDUsMTkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbHNI
b3N0OjphdXRvbWF0aWNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhdXRvbWF0aWMsICgiYXV0b21hdGljIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IGF1dG9tYXRpYygiYXV0b21hdGljIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGF1dG9tYXRpYzsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IGZvcmNlZE9uLCAoImZvcmNlZC1vbmx5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZv
cmNlZE9uKCJmb3JjZWQtb25seSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBmb3JjZWRPbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHdheXNPbiwgKCJhbHdheXMtb24iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx3YXlzT24oImFsd2F5cy1vbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHdheXNPbjsKIH0KIApA
QCAtMjMwLDEyICsyMzAsMTIgQEAgU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERl
dmljZURpc3BsYXlOYW1lKCkgY29uc3QKIAogU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRl
cm5hbERldmljZVR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIG5vbmUsIChBU0NJSUxpdGVyYWwoIm5vbmUiKSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5vbmUoQVNDSUlMaXRlcmFsKCJub25lIikpOwogICAgIFN0
cmluZyB0eXBlID0gbm9uZTsKICAgICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFpcnBsYXks
IChBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHR2b3V0LCAoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXki
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFs
KCJ0dm91dCIpKTsKICAgICAKICAgICBNZWRpYVBsYXllciogcGxheWVyID0gbV9tZWRpYUVsZW1l
bnQtPnBsYXllcigpOwogICAgIGlmICghcGxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDRlMTI1NDMuLjgyOWQx
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCkBAIC05NSwxOSArOTUsMTkgQEAgTWVkaWFTb3VyY2U6On5NZWRpYVNvdXJjZSgp
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcGVu
LCAoIm9wZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gb3Blbigib3BlbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBvcGVuOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjbG9zZWQs
ICgiY2xvc2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNsb3NlZCgiY2xvc2VkIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNsb3NlZDsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZTo6ZW5kZWRLZXl3b3JkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBl
bmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7
CiB9CiAKQEAgLTQ0MCw4ICs0NDAsOCBAQCB2b2lkIE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShj
b25zdCBBdG9taWNTdHJpbmcmIGVycm9yLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBNZWRp
YVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3IoY29uc3QgQXRvbWljU3RyaW5nJiBlcnJvciwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgbmV0d29yaywgKCJuZXR3b3JrIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGRlY29kZSwgKCJkZWNvZGUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gbmV0d29yaygibmV0d29yayIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IGRlY29kZSgiZGVjb2RlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICBMT0coTWVkaWFTb3VyY2UsICJNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3Io
JXApIDogJXMiLCB0aGlzLCBlcnJvci5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbQppbmRleCBhYThiMDUyLi41ZTE0NjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50Lm1tCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFW
TWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqLCBKU0NvbnRlCiAKIHN0
YXRpYyBTdHJpbmcgcXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjcmlwdCwgKFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCwgc2l6ZW9mKFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50SmF2YVNjcmlwdCkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3Jp
cHQoUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0LCBzaXplb2YoUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0KSk7CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApA
QCAtODksMTMgKzg5LDEzIEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBv
cnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICAgICAgImF1ZGlvL3gtbTRy
IiwgImF1ZGlvL3gtbXAzIiwgImF1ZGlvL3gtbXBlZyIsICJhdWRpby94LW1wZWczIiwgImF1ZGlv
L3gtbXBlZ3VybCIsICJhdWRpby94LXNjcGxzIiwgImF1ZGlvL3gtd2F2IiwKICAgICAgICAgInZp
ZGVvLzNncHAiLCAidmlkZW8vM2dwcDIiLCAidmlkZW8vbXA0IiwgInZpZGVvL3F1aWNrdGltZSIs
ICJ2aWRlby94LW00diIKICAgICB9OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChIYXNoU2V0PFN0cmluZz4sIHR5cGVIYXNoLCAoKSk7Ci0gICAgaWYgKCF0eXBlSGFzaC5zaXpl
KCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB0eXBlSGFz
aDsKKyAgICBpZiAoIXR5cGVIYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodHlwZXMpOyArK2kpCi0gICAgICAgICAgICB0
eXBlSGFzaC5hZGQodHlwZXNbaV0pOworICAgICAgICAgICAgdHlwZUhhc2guZ2V0KCkuYWRkKHR5
cGVzW2ldKTsKICAgICB9CiAKLSAgICByZXR1cm4gdHlwZUhhc2guY29udGFpbnMobWltZVR5cGUp
OworICAgIHJldHVybiB0eXBlSGFzaC5nZXQoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJv
b2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTEwNSwxMyArMTA1LDEzIEBAIGJvb2wgUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikKICAgICAgICAgIm0zdTgiLCAibTRhIiwgIm00YiIsICJtNHAiLCAibTRyIiwgIm00
diIsICJtb3YiLCAibXAzIiwgIm1wMyIsICJtcDQiLCAibXBlZyIsICJtcGciLCAibXF2IiwgInBs
cyIsICJxdCIsCiAgICAgICAgICJzbmQiLCAic3dhIiwgInRzIiwgInVsdyIsICJ3YXYiCiAgICAg
fTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBl
eHRlbnNpb25IYXNoLCAoKSk7Ci0gICAgaWYgKCFleHRlbnNpb25IYXNoLnNpemUoKSkgeworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGV4dGVuc2lvbkhhc2g7Cisg
ICAgaWYgKCFleHRlbnNpb25IYXNoLmdldCgpLnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZXh0ZW5zaW9ucyk7ICsraSkKLSAgICAgICAg
ICAgIGV4dGVuc2lvbkhhc2guYWRkKGV4dGVuc2lvbnNbaV0pOworICAgICAgICAgICAgZXh0ZW5z
aW9uSGFzaC5nZXQoKS5hZGQoZXh0ZW5zaW9uc1tpXSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGV4
dGVuc2lvbkhhc2guY29udGFpbnMoZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9uSGFz
aC5nZXQoKS5jb250YWlucyhleHRlbnNpb24pOwogfQogCiBRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdp
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXMuY3BwCmluZGV4IDdmYjEzZTguLjdmMTc1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc0V2ZW50LmgiCiAjaW5jbHVkZSAiU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
QEAgLTE5Miw4ICsxOTMsOCBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6aGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuYwogICAgIAogdm9pZCBT
cGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5k
YXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgd29yZEJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ3
b3JkIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzZW50ZW5jZSIpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gd29yZEJvdW5kYXJ5U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgid29yZCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2VudGVuY2UiKSk7
CiAKICAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7CiAgICAgY2FzZSBTcGVlY2hXb3JkQm91bmRhcnk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA5MWJhMzEyLi41NGFjYjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKQEAgLTE4NCw4ICsxODQsOCBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAg
ICAgU3RyaW5nIHN0cmluZ0ZvckNhY2hlID0gU3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZyk7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ1NTUHJvcGVydHlJbmZvPiBDU1NQcm9wZXJ0eUlu
Zm9NYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5SW5m
b01hcCwgcHJvcGVydHlJbmZvQ2FjaGUsICgpKTsKLSAgICBwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0
eUluZm9DYWNoZS5nZXQoc3RyaW5nRm9yQ2FjaGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDU1NQcm9wZXJ0eUluZm9NYXA+IHByb3BlcnR5SW5mb0NhY2hlOworICAgIHByb3BlcnR5SW5m
byA9IHByb3BlcnR5SW5mb0NhY2hlLmdldCgpLmdldChzdHJpbmdGb3JDYWNoZSk7CiAgICAgaWYg
KHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwog
CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlE
Rm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICBpZiAocHJv
cGVydHlJRCkgewogICAgICAgICBwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGhh
ZFBpeGVsT3JQb3NQcmVmaXg7CiAgICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCk7Ci0gICAgICAgIHByb3BlcnR5SW5m
b0NhY2hlLmFkZChzdHJpbmdGb3JDYWNoZSwgcHJvcGVydHlJbmZvKTsKKyAgICAgICAgcHJvcGVy
dHlJbmZvQ2FjaGUuZ2V0KCkuYWRkKHN0cmluZ0ZvckNhY2hlLCBwcm9wZXJ0eUluZm8pOwogICAg
IH0KICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmNwcAppbmRleCA0NGY2NGI2Li5mYWE4OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX2luc3RhbmNlLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01Niw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBCaW5k
aW5ncyB7CiAKIHN0YXRpYyBTdHJpbmcmIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZXhjZXB0aW9uU3RyOwogICAgIHJl
dHVybiBleGNlcHRpb25TdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggYzU1
NzdiNy4uMjgzNGY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgog
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMjg4LDExICsyODksMTEgQEAgc3RhdGljIHZvaWQgYWRkUmVz
b2x1dGlvbldhcm5pbmdNZXNzYWdlVG9Db25zb2xlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
U3RyaW4KICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVCh2YWx1ZSk7CiAKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBtZWRpYVF1ZXJ5TWVzc2FnZSwg
KEFTQ0lJTGl0ZXJhbCgiQ29uc2lkZXIgdXNpbmcgJ2RwcHgnIHVuaXRzIGluc3RlYWQgb2YgJyVy
ZXBsYWNlbWVudFVuaXRzJScsIGFzIGluIENTUyAnJXJlcGxhY2VtZW50VW5pdHMlJyBtZWFucyBk
b3RzLXBlci1DU1MtJWxlbmd0aFVuaXQlLCBub3QgZG90cy1wZXItcGh5c2ljYWwtJWxlbmd0aFVu
aXQlLCBzbyBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIHRoZSBhY3R1YWwgJyVyZXBsYWNlbWVudFVu
aXRzJScgb2YgYSBzY3JlZW4uIEluIG1lZGlhIHF1ZXJ5IGV4cHJlc3Npb246ICIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbWVkaWFWYWx1ZURQSSwgKEFT
Q0lJTGl0ZXJhbCgiZHBpIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBtZWRpYVZhbHVlRFBDTSwgKEFTQ0lJTGl0ZXJhbCgiZHBjbSIpKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbGVuZ3RoVW5pdEluY2gsIChBU0NJ
SUxpdGVyYWwoImluY2giKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGxlbmd0aFVuaXRDZW50aW1ldGVyLCAoQVNDSUlMaXRlcmFsKCJjZW50aW1ldGVyIikp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRpYVF1ZXJ5TWVzc2FnZShB
U0NJSUxpdGVyYWwoIkNvbnNpZGVyIHVzaW5nICdkcHB4JyB1bml0cyBpbnN0ZWFkIG9mICclcmVw
bGFjZW1lbnRVbml0cyUnLCBhcyBpbiBDU1MgJyVyZXBsYWNlbWVudFVuaXRzJScgbWVhbnMgZG90
cy1wZXItQ1NTLSVsZW5ndGhVbml0JSwgbm90IGRvdHMtcGVyLXBoeXNpY2FsLSVsZW5ndGhVbml0
JSwgc28gZG9lcyBub3QgY29ycmVzcG9uZCB0byB0aGUgYWN0dWFsICclcmVwbGFjZW1lbnRVbml0
cyUnIG9mIGEgc2NyZWVuLiBJbiBtZWRpYSBxdWVyeSBleHByZXNzaW9uOiAiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbWVkaWFWYWx1ZURQSShBU0NJSUxpdGVyYWwoImRw
aSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRpYVZhbHVlRFBDTShB
U0NJSUxpdGVyYWwoImRwY20iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
bGVuZ3RoVW5pdEluY2goQVNDSUlMaXRlcmFsKCJpbmNoIikpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGxlbmd0aFVuaXRDZW50aW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY2VudGlt
ZXRlciIpKTsKIAogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGlmICh2YWx1ZS0+aXNEb3RzUGVy
SW5jaCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCA2
MGM1ZDM5Li4zZTMwMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUg
IlN0eWxlUnVsZUltcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzE2LDExICszMTcsMTEgQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBh
cnNlQXV0aG9yU3R5bGVTaGVldChjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWQKIAog
ICAgIGlmIChtX3BhcnNlckNvbnRleHQubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgJiYgaXNTdHJp
Y3RQYXJzZXJNb2RlKG1fcGFyc2VyQ29udGV4dC5tb2RlKSkgewogICAgICAgICAvLyBXb3JrIGFy
b3VuZCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MzUwPi4KLSAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbWVkaWFX
aWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQsIChBU0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHls
ZXNoZWV0ICovXG4vKiB3b3JrIGFyb3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4j
Y29sdW1uLWNvbnRlbnQgeyBtYXJnaW4tbGVmdDogMDsgfVxuXG4iKSkpOworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVT
aGVldChBU0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHlsZXNoZWV0ICovXG4vKiB3b3JrIGFy
b3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4jY29sdW1uLWNvbnRlbnQgeyBtYXJn
aW4tbGVmdDogMDsgfVxuXG4iKSk7CiAgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gdmFyaWFudHMg
b2YgS0hUTUxGaXhlcy5jc3MuIE9uZSBpcyBlcXVhbCB0byBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5
bGVTaGVldCwKICAgICAgICAgLy8gd2hpbGUgdGhlIG90aGVyIGxhY2tzIHRoZSBzZWNvbmQgdHJh
aWxpbmcgbmV3bGluZS4KLSAgICAgICAgaWYgKGJhc2VVUkwoKS5zdHJpbmcoKS5lbmRzV2l0aCgi
L0tIVE1MRml4ZXMuY3NzIikgJiYgIXNoZWV0VGV4dC5pc051bGwoKSAmJiBtZWRpYVdpa2lLSFRN
TEZpeGVzU3R5bGVTaGVldC5zdGFydHNXaXRoKHNoZWV0VGV4dCkKLSAgICAgICAgICAgICYmIHNo
ZWV0VGV4dC5sZW5ndGgoKSA+PSBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVTaGVldC5sZW5ndGgo
KSAtIDEpCisgICAgICAgIGlmIChiYXNlVVJMKCkuc3RyaW5nKCkuZW5kc1dpdGgoIi9LSFRNTEZp
eGVzLmNzcyIpICYmICFzaGVldFRleHQuaXNOdWxsKCkgJiYgbWVkaWFXaWtpS0hUTUxGaXhlc1N0
eWxlU2hlZXQuZ2V0KCkuc3RhcnRzV2l0aChzaGVldFRleHQpCisgICAgICAgICAgICAmJiBzaGVl
dFRleHQubGVuZ3RoKCkgPj0gbWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQuZ2V0KCkubGVu
Z3RoKCkgLSAxKQogICAgICAgICAgICAgY2xlYXJSdWxlcygpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCAzMWU1ZjMxLi5m
NmRlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuaCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlN0YXRpY05v
ZGVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYgSGFzaE1hcDxDb250YWluZXJOb2RlKiwgQ2hp
bGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcio+IEFjY3VtdWxhdG9yTWFwOwogc3RhdGljIEFjY3Vt
dWxhdG9yTWFwJiBhY2N1bXVsYXRvck1hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEFjY3VtdWxhdG9yTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QWNjdW11bGF0b3JNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCBmZTBiY2MxLi5mYWYyZGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTUzLDYgKzUzLDcg
QEAKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHREb2N1bWVudC5o
IgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC04OCw3ICs4OSw3IEBAIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkU1ZHMTBGZWF0dXJlKGNvbnN0
IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZlYXR1cmVTZXQsIHN2Z0ZlYXR1cmVzLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTZXQ+IHN2Z0ZlYXR1cmVzOwogICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICBhZGRTdHJp
bmcoc3ZnRmVhdHVyZXMsICJzdmciKTsKQEAgLTEwOCw3ICsxMDksNyBAQCBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZFNWRzEwRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbgogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmZWF0dXJlLnN0YXJ0c1dpdGgoIm9yZy53M2MuIiwgZmFsc2UpCi0gICAgICAgICYmIHN2Z0Zl
YXR1cmVzLmNvbnRhaW5zKGZlYXR1cmUucmlnaHQoZmVhdHVyZS5sZW5ndGgoKSAtIDgpKTsKKyAg
ICAgICAgJiYgc3ZnRmVhdHVyZXMuZ2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJl
Lmxlbmd0aCgpIC0gOCkpOwogfQogCiBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVy
ZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKQEAgLTExNyw3
ICsxMTgsNyBAQCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVyZShjb25zdCBTdHJp
bmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChGZWF0dXJlU2V0LCBzdmdGZWF0dXJlcywgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxGZWF0dXJlU2V0PiBzdmdGZWF0dXJlczsKICAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CiAgICAgICAgIC8vIFNhZGx5LCB3ZSBjYW5ub3QgY2xhaW0gdG8gaW1wbGVt
ZW50IGFueSBvZiB0aGUgU1ZHIDEuMSBnZW5lcmljIGZlYXR1cmUgc2V0cwogICAgICAgICAvLyBs
YWNrIG9mIEZvbnQgYW5kIEZpbHRlciBzdXBwb3J0LgpAQCAtMTc1LDcgKzE3Niw3IEBAIHN0YXRp
YyBib29sIGlzU3VwcG9ydGVkU1ZHMTFGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZlYXR1cmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy53My5vcmcvdHIvc3ZnMTEv
ZmVhdHVyZSMiLCBmYWxzZSkKLSAgICAgICAgJiYgc3ZnRmVhdHVyZXMuY29udGFpbnMoZmVhdHVy
ZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKKyAgICAgICAgJiYgc3ZnRmVhdHVyZXMu
Z2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKIH0K
IAogRE9NSW1wbGVtZW50YXRpb246OkRPTUltcGxlbWVudGF0aW9uKERvY3VtZW50JiBkb2N1bWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDI4NGU4NzcuLmQwNTYyZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTc3LDYgKzE3Nyw3IEBACiAjaW5jbHVkZSA8Y3RpbWU+CiAj
aW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4K
ICNpbmNsdWRlIDx5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmg+CkBAIC0xMTE4LDkgKzExMTksOSBA
QCBSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaQogCiBTdHJpbmcgRG9jdW1lbnQ6OnJlYWR5U3RhdGUo
KSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGxvYWRpbmcsIChBU0NJSUxpdGVyYWwoImxvYWRpbmciKSkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGludGVyYWN0aXZlLCAoQVNDSUlMaXRl
cmFsKCJpbnRlcmFjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgY29tcGxldGUsIChBU0NJSUxpdGVyYWwoImNvbXBsZXRlIikpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBsb2FkaW5nKEFTQ0lJTGl0ZXJh
bCgibG9hZGluZyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBp
bnRlcmFjdGl2ZShBU0NJSUxpdGVyYWwoImludGVyYWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNvbXBsZXRlKEFTQ0lJTGl0ZXJhbCgiY29tcGxldGUi
KSk7CiAKICAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0ZSkgewogICAgIGNhc2UgTG9hZGluZzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCA5ODllMTRlLi5lOGNiYzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8
d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjkyOCwyMSArMjkyOSwyMSBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIEVsZW1lbnQ6OndlYmtpdFJlZ2lvbk92ZXJzZXQoKSBjb25zdAogewogICAgIGRvY3Vt
ZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB1bmRlZmluZWRTdGF0ZSwg
KCJ1bmRlZmluZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdW5kZWZpbmVkU3RhdGUoInVuZGVm
aW5lZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICghZG9j
dW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpIHx8ICFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgp
KQogICAgICAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7CiAKICAgICBzd2l0Y2ggKHJlZ2lvbk92
ZXJzZXRTdGF0ZSgpKSB7CiAgICAgY2FzZSBSZWdpb25GaXQ6IHsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZml0U3RhdGUsICgiZml0IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaXRTdGF0ZSgiZml0IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiBmaXRTdGF0ZTsKICAgICB9CiAgICAg
Y2FzZSBSZWdpb25FbXB0eTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBlbXB0eVN0YXRlLCAoImVtcHR5IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBlbXB0eVN0YXRlKCJlbXB0eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgICAgICByZXR1cm4gZW1wdHlTdGF0ZTsKICAgICB9CiAgICAgY2FzZSBSZWdp
b25PdmVyc2V0OiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG92ZXJmbG93U3RhdGUsICgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gb3ZlcmZsb3dTdGF0ZSgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gb3ZlcmZsb3dTdGF0ZTsKICAgICB9CiAgICAgY2Fz
ZSBSZWdpb25VbmRlZmluZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmlu
ZGV4IDM0MTg0N2YuLmQ1NGM2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIu
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJT
VkdVc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxMyw4ICsyMTQs
OCBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFbGVtZW50
KiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZwogICAgIGlmIChlbGVtZW50LT5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEhhc2hTZXQ8RWxlbWVudCo+LCBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxh
dGVkQ2xpY2tzLCAoKSk7Ci0gICAgaWYgKCFlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xp
Y2tzLmFkZChlbGVtZW50KS5pc05ld0VudHJ5KQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PEVsZW1lbnQqPj4gZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrczsKKyAg
ICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MuZ2V0KCkuYWRkKGVsZW1l
bnQpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtb3VzZUV2ZW50T3B0
aW9ucyA9PSBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzKQpAQCAtMjMwLDcgKzIzMSw3IEBAIHZv
aWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKEVsZW1lbnQqIGVsZW1l
bnQsIEV2ZW50KiB1bmRlcmx5aW5nCiAgICAgLy8gYWx3YXlzIHNlbmQgY2xpY2sKICAgICBkaXNw
YXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY2xpY2tFdmVudCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5
aW5nRXZlbnQsIGVsZW1lbnQpKTsKIAotICAgIGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRD
bGlja3MucmVtb3ZlKGVsZW1lbnQpOworICAgIGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRD
bGlja3MuZ2V0KCkucmVtb3ZlKGVsZW1lbnQpOwogfQogCiBzdGF0aWMgdm9pZCBjYWxsRGVmYXVs
dEV2ZW50SGFuZGxlcnNJblRoZUJ1YmJsaW5nT3JkZXIoRXZlbnQmIGV2ZW50LCBjb25zdCBFdmVu
dFBhdGgmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIu
Y3BwCmluZGV4IDRjYWY2MmYuLjQxYTIwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRO
b2RlVHJhdmVyc2FsLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MTMsNyArMTE0LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNsZWFyU2hlZXQoKQog
CiBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29udGVudFR5cGUoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNzc0NvbnRlbnRUeXBlLCAoInRleHQvY3NzIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNzc0NvbnRlbnRUeXBlKCJ0ZXh0L2NzcyIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICh0eXBlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGVsZW1lbnQuaXNIVE1MRWxlbWVudCgp
ID8gZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgY3NzQ29udGVudFR5cGUpIDogdHlwZSA9PSBjc3ND
b250ZW50VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBm
YzE3MDhjLi44N2ZiYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CkBAIC0xNDUsMTMgKzE0NSwxMyBAQCB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPE11dGF0aW9uT2Jz
ZXJ2ZXI+PiBNdXRhdGlvbk9ic2VydmVyU2V0OwogCiBzdGF0aWMgTXV0YXRpb25PYnNlcnZlclNl
dCYgYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChNdXRhdGlvbk9ic2VydmVyU2V0LCBhY3RpdmVPYnNlcnZlcnMsICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0YXRpb25PYnNlcnZlclNldD4gYWN0aXZlT2JzZXJ2
ZXJzOwogICAgIHJldHVybiBhY3RpdmVPYnNlcnZlcnM7CiB9CiAKIHN0YXRpYyBNdXRhdGlvbk9i
c2VydmVyU2V0JiBzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycygpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGF0aW9uT2JzZXJ2ZXJTZXQsIHN1c3BlbmRlZE9ic2Vy
dmVycywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNdXRhdGlvbk9ic2VydmVyU2V0
PiBzdXNwZW5kZWRPYnNlcnZlcnM7CiAgICAgcmV0dXJuIHN1c3BlbmRlZE9ic2VydmVyczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKaW5kZXggOTVmY2VjMi4uY2U0MWEx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAKICNpbmNsdWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3Qu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0NSwxOSArMTQ2LDE5IEBAIHBy
aXZhdGU6CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQ2hpbGRMaXN0UmVjb3JkOjp0eXBlKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGlsZExp
c3QsICgiY2hpbGRMaXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGNoaWxkTGlzdCgiY2hpbGRM
aXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNo
aWxkTGlzdDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdHRyaWJ1dGVzUmVjb3JkOjp0eXBl
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBh
dHRyaWJ1dGVzLCAoImF0dHJpYnV0ZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXR0cmlidXRl
cygiYXR0cmlidXRlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBhdHRyaWJ1dGVzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIENoYXJhY3RlckRh
dGFSZWNvcmQ6OnR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGNoYXJhY3RlckRhdGEsICgiY2hhcmFjdGVyRGF0YSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBjaGFyYWN0ZXJEYXRhKCJjaGFyYWN0ZXJEYXRhIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNoYXJhY3RlckRhdGE7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCBiMjQ5MjQxLi5jZjllYWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjb25zdCBRdWFsaWZpZWROYW1lJiBwc2V1ZG9FbGVtZW50VGFnTmFt
ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUs
IG5hbWUsIChudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVsbEF0b20pKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVs
bEF0b20pOwogICAgIHJldHVybiBuYW1lOwogfQogCiBTdHJpbmcgUHNldWRvRWxlbWVudDo6cHNl
dWRvRWxlbWVudE5hbWVGb3JFdmVudHMoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgYWZ0ZXIsIChBU0NJSUxpdGVy
YWwoIjo6YWZ0ZXIiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIGJlZm9yZSwgKEFTQ0lJTGl0ZXJhbCgiOjpiZWZvcmUiKSkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGFmdGVyKEFTQ0lJTGl0ZXJhbCgiOjphZnRl
ciIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBiZWZvcmUoQVND
SUlMaXRlcmFsKCI6OmJlZm9yZSIpKTsKICAgICBzd2l0Y2ggKHBzZXVkb0lkKSB7CiAgICAgY2Fz
ZSBBRlRFUjoKICAgICAgICAgcmV0dXJuIGFmdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwCmluZGV4IGZkNzliZGEuLjU2ZTRmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RhdGljQ29uc3RydWN0b3Jz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC03NCw3ICs3NSw3
IEBAIHN0cnVjdCBRTmFtZUNvbXBvbmVudHNUcmFuc2xhdG9yIHsKIAogc3RhdGljIGlubGluZSBR
TmFtZVNldCYgcXVhbGlmaWVkTmFtZUNhY2hlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUU5hbWVTZXQsIG5hbWVDYWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxRTmFtZVNldD4gbmFtZUNhY2hlOwogICAgIHJldHVybiBuYW1lQ2FjaGU7CiB9CiAK
QEAgLTExNSw3ICsxMTYsNyBAQCB2b2lkIFF1YWxpZmllZE5hbWU6OmluaXQoKQogCiBjb25zdCBR
dWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChRdWFsaWZpZWROYW1lLCBudWxsTmFtZSwgKG51bGxBdG9tLCBudWxsQXRvbSwgbnVs
bEF0b20pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbnVsbE5h
bWUobnVsbEF0b20sIG51bGxBdG9tLCBudWxsQXRvbSk7CiAgICAgcmV0dXJuIG51bGxOYW1lOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNjNmNTkzZi4uMTg3OTFm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMTE5LDI0ICsxMTksMjQg
QEAgc3RhdGljIGJvb2wgaXNMZWdhY3lTdXBwb3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoY29uc3Qg
U3RyaW5nJiBsYW5ndWFnZSkKIAogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBI
VE1MNSBjb21wbGlhbnQuIFRoZXNlIGJlbG9uZyBpbiB0aGUgTUlNRSByZWdpc3RyeSBhcyAidGV4
dC9qYXZhc2NyaXB0PHZlcnNpb24+IiBlbnRyaWVzLgogICAgIHR5cGVkZWYgSGFzaFNldDxTdHJp
bmcsIENhc2VGb2xkaW5nSGFzaD4gTGFuZ3VhZ2VTZXQ7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKExhbmd1YWdlU2V0LCBsYW5ndWFnZXMsICgpKTsKLSAgICBpZiAobGFuZ3Vh
Z2VzLmlzRW1wdHkoKSkgewotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7Ci0g
ICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFk
ZCgiamF2YXNjcmlwdDEuMCIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS4x
Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjIiKTsKLSAgICAgICAgbGFu
Z3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMyIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZh
c2NyaXB0MS40Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjUiKTsKLSAg
ICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuNiIpOwotICAgICAgICBsYW5ndWFnZXMu
YWRkKCJqYXZhc2NyaXB0MS43Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImxpdmVzY3JpcHQi
KTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiZWNtYXNjcmlwdCIpOwotICAgICAgICBsYW5ndWFn
ZXMuYWRkKCJqc2NyaXB0Iik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExhbmd1YWdlU2V0
PiBsYW5ndWFnZXM7CisgICAgaWYgKGxhbmd1YWdlcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdCIpOworICAgICAgICBsYW5ndWFnZXMu
Z2V0KCkuYWRkKCJqYXZhc2NyaXB0Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImph
dmFzY3JpcHQxLjAiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEu
MSIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0MS4yIik7CisgICAg
ICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFzY3JpcHQxLjMiKTsKKyAgICAgICAgbGFuZ3Vh
Z2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNCIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCku
YWRkKCJqYXZhc2NyaXB0MS41Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFz
Y3JpcHQxLjYiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNyIp
OworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJsaXZlc2NyaXB0Iik7CisgICAgICAgIGxh
bmd1YWdlcy5nZXQoKS5hZGQoImVjbWFzY3JpcHQiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgp
LmFkZCgianNjcmlwdCIpOwogICAgIH0KIAotICAgIHJldHVybiBsYW5ndWFnZXMuY29udGFpbnMo
bGFuZ3VhZ2UpOworICAgIHJldHVybiBsYW5ndWFnZXMuZ2V0KCkuY29udGFpbnMobGFuZ3VhZ2Up
OwogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVudCgpCkBAIC0zNDcs
NyArMzQ3LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpCiAKICAgICBpZiAobV9yZXF1ZXN0VXNlc0FjY2Vzc0NvbnRyb2wgJiYg
IW1fY2FjaGVkU2NyaXB0LT5wYXNzZXNTYW1lT3JpZ2luUG9saWN5Q2hlY2soKm1fZWxlbWVudC5k
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVu
dCgpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25z
b2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlwdCBsb2FkIGRlbmll
ZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFs
KCJDcm9zcy1vcmlnaW4gc2NyaXB0IGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJj
ZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAgICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25z
b2xlTWVzc2FnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDcyZTNhZDQuLjdiODllMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJWaXNpYmxl
VW5pdHMuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTYyLDcgKzYzLDcgQEAgc3RhdGljIGludCB0b0lk
ZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUpCiAKIHN0YXRpYyBTdHJpbmcmIHN0
eWxlU3BhbkNsYXNzU3RyaW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBzdHlsZVNwYW5DbGFzc1N0cmluZywgKChBcHBsZVN0eWxlU3BhbkNsYXNzKSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0eWxlU3BhbkNsYXNzU3RyaW5n
KEFwcGxlU3R5bGVTcGFuQ2xhc3MpOwogICAgIHJldHVybiBzdHlsZVNwYW5DbGFzc1N0cmluZzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRl
eCBmOTY4MmE0Li5jMTM0MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIK
ICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJO
YW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTksOCArMjYwLDggQEAgYm9vbCBN
YXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlRWxlbWVudChjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogICAgIGlmIChwcmVmaXguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIWVs
ZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zQXRvbSk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCB4bWxuc1dpdGhDb2xvbiwgKEFTQ0lJTGl0ZXJhbCgieG1sbnM6
IikpKTsKLSAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zV2l0aENvbG9uICsg
cHJlZml4KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB4bWxuc1dpdGhDb2xv
bihBU0NJSUxpdGVyYWwoInhtbG5zOiIpKTsKKyAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmli
dXRlKHhtbG5zV2l0aENvbG9uLmdldCgpICsgcHJlZml4KTsKIH0KIAogYm9vbCBNYXJrdXBBY2N1
bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlLCBOYW1lc3BhY2VzJiBuYW1lc3BhY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA3ODk3MmM3Li5lYjQxMGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcApAQCAtMTA0LDE0ICsxMDQsMTQgQEAgcHJpdmF0ZToKIAogc3RhdGljIGJvb2wgaXNJ
bnRlcmNoYW5nZU5ld2xpbmVOb2RlKGNvbnN0IE5vZGUgKm5vZGUpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJp
bmcsIChBcHBsZUludGVyY2hhbmdlTmV3bGluZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nKEFwcGxlSW50ZXJjaGFuZ2VO
ZXdsaW5lKTsKICAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSAmJiAK
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmli
dXRlKGNsYXNzQXR0cikgPT0gaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmc7CiB9CiAKIHN0
YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9kZSAqbm9k
ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb252ZXJ0
ZWRTcGFjZVNwYW5DbGFzc1N0cmluZywgKEFwcGxlQ29udmVydGVkU3BhY2UpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZyhB
cHBsZUNvbnZlcnRlZFNwYWNlKTsKICAgICByZXR1cm4gbm9kZS0+aXNIVE1MRWxlbWVudCgpICYm
IAogICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCAqPihub2RlKS0+Z2V0
QXR0cmlidXRlKGNsYXNzQXR0cikgPT0gY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmc7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDMwNmY0YjIuLjJkN2Fk
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC00MjgsNyArNDI4
LDcgQEAgYm9vbCBpc1RhYmxlU3RydWN0dXJlTm9kZShjb25zdCBOb2RlICpub2RlKQogCiBjb25z
dCBTdHJpbmcmIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcsICgmbm9CcmVh
a1NwYWNlLCAxKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbm9uQnJlYWtp
bmdTcGFjZVN0cmluZygmbm9CcmVha1NwYWNlLCAxKTsKICAgICByZXR1cm4gbm9uQnJlYWtpbmdT
cGFjZVN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDZkMzI2NTYu
LmM3YWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTIxMyw4ICsyMTMsOCBA
QCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFN0
cmluZ0J1aWxkZXImIG91dCwgU3R5bGVQcgogCiBjb25zdCBTdHJpbmcmIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyhib29sIGlzQmxvY2spCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xvc2UsIChBU0NJSUxp
dGVyYWwoIjwvZGl2PiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2UsIChBU0NJSUxpdGVyYWwoIjwvc3Bhbj4iKSkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGRpdkNsb3NlKEFTQ0lJTGl0
ZXJhbCgiPC9kaXY+IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+
IHN0eWxlU3BhbkNsb3NlKEFTQ0lJTGl0ZXJhbCgiPC9zcGFuPiIpKTsKICAgICByZXR1cm4gaXNC
bG9jayA/IGRpdkNsb3NlIDogc3R5bGVTcGFuQ2xvc2U7CiB9CiAKQEAgLTU3Nyw3ICs1NzcsNyBA
QCBzdGF0aWMgTm9kZSogaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKGNvbnN0IFJhbmdlKiBy
YW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaAogc3RhdGljIFN0cmluZyBjcmVhdGVNYXJrdXBJbnRl
cm5hbChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJhbmdlJiByYW5nZSwgVmVjdG9yPE5vZGUq
Piogbm9kZXMsCiAgICAgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGJv
b2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJM
cykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBp
bnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcsIChBU0NJSUxpdGVyYWwoIjxiciBjbGFzcz1cIiIgQXBw
bGVJbnRlcmNoYW5nZU5ld2xpbmUgIlwiPiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiPGJy
IGNsYXNzPVwiIiBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAiXCI+IikpOwogCiAgICAgYm9vbCBj
b2xsYXBzZWQgPSByYW5nZS5jb2xsYXBzZWQoKTsKICAgICBpZiAoY29sbGFwc2VkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5jcHAKaW5kZXggNmIwMzNiMC4uMGY0Y2U5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MSwxMSArNjIsMTAgQEAgdm9p
ZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJiB1cmwpCiAKIFVSTFJl
Z2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQmxvYlVSTFJlZ2lzdHJ5LCBpbnN0YW5jZSwgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxCbG9iVVJMUmVnaXN0cnk+IGluc3RhbmNlOwogICAgIHJldHVy
biBpbnN0YW5jZTsKIH0KIAotCiBCbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25s
eURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCBhMzJhMGI3Li5hZGIwZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTU4LDcgKzU5LDcgQEAgdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlu
cHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCopCiAKIHZvaWQgQmFzZUNob29z
ZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHZhbHVlQ29udGFp
bmVyUHNldWRvLCAoIi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiB2YWx1ZUNvbnRhaW5lclBzZXVkbygiLXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBSZWY8SFRNTERp
dkVsZW1lbnQ+IHZhbHVlQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50
KCkuZG9jdW1lbnQoKSk7CiAgICAgdmFsdWVDb250YWluZXItPnNldFBzZXVkbyh2YWx1ZUNvbnRh
aW5lclBzZXVkbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCBiMWU4
MjlkLi5iMzRmN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw3ICs2Miw3IEBA
IERhdGVDb21wb25lbnRzOjpUeXBlIERhdGVJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIAog
U3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAo
ZGF0ZURlZmF1bHRTdGVwLCBkYXRlRGVmYXVsdFN0ZXBCYXNlLCBkYXRlU3RlcFNjYWxlRmFjdG9y
LCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERl
c2NyaXB0aW9uKGRhdGVEZWZhdWx0U3RlcCwgZGF0ZURlZmF1bHRTdGVwQmFzZSwgZGF0ZVN0ZXBT
Y2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpOwog
CiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwogICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9
IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2lt
YWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKaW5kZXggYjJlZmU4NS4uYjI5NDUxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5o
IgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDcgKzYzLDcgQEAgRGVjaW1h
bCBEYXRlVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3Rl
cFJhbmdlIERhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5n
IGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwg
KGRhdGVUaW1lRGVmYXVsdFN0ZXAsIGRhdGVUaW1lRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZVN0
ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb24+IHN0ZXBEZXNjcmlwdGlvbihkYXRlVGltZURlZmF1bHRTdGVwLCBkYXRlVGltZURlZmF1
bHRTdGVwQmFzZSwgZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3Rl
cFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKICAg
ICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjpt
aW5pbXVtRGF0ZVRpbWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
VGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5jcHAKaW5kZXggNGE0MzhmMy4uODIxYzgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjgsNyArNjksNyBAQCB2b2lkIERhdGVUaW1l
TG9jYWxJbnB1dFR5cGU6OnNldFZhbHVlQXNEYXRlKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbgogCiBTdGVwUmFuZ2UgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6Y3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0
aW9uLCBzdGVwRGVzY3JpcHRpb24sIChkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXAsIGRhdGVUaW1l
TG9jYWxEZWZhdWx0U3RlcEJhc2UsIGRhdGVUaW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IsIFN0ZXBS
YW5nZTo6U2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRp
b24oZGF0ZVRpbWVMb2NhbERlZmF1bHRTdGVwLCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNl
LCBkYXRlVGltZUxvY2FsU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcik7CiAKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7CiAgICAgY29u
c3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJp
YnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11
bURhdGVUaW1lKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXgg
ZGFlMTc4Mi4uZTZlMDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KIApAQCAtNDQsMTAg
KzQ1LDEwIEBAIHN0YXRpYyBib29sIGlzVmFsaWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBh
ZGRyZXNzKQogICAgIGlmICghYWRkcmVzc0xlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEpTQzo6WWFycjo6UmVn
dWxhckV4cHJlc3Npb24sIHJlZ0V4cCwgKGVtYWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2
ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJF
eHByZXNzaW9uPiByZWdFeHAoZW1haWxQYXR0ZXJuLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKIAog
ICAgIGludCBtYXRjaExlbmd0aDsKLSAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAubWF0Y2go
YWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKKyAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAu
Z2V0KCkubWF0Y2goYWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKIAogICAgIHJldHVybiAhbWF0
Y2hPZmZzZXQgJiYgbWF0Y2hMZW5ndGggPT0gYWRkcmVzc0xlbmd0aDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggYjBmM2E5Mi4uY2RjN2IxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzMyw3ICszMzQsNyBAQCBBdG9t
aWNTdHJpbmcgRm9ybUtleUdlbmVyYXRvcjo6Zm9ybUtleShjb25zdCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlJiBjbwogewogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IG93bmVy
Rm9ybUZvclN0YXRlKGNvbnRyb2wpOwogICAgIGlmICghZm9ybSkgewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmb3JtS2V5Rm9yTm9Pd25lciwg
KCJObyBvd25lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZm9ybUtleUZvck5vT3duZXIo
Ik5vIG93bmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAg
IHJldHVybiBmb3JtS2V5Rm9yTm9Pd25lcjsKICAgICB9CiAgICAgRm9ybVRvS2V5TWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fZm9ybVRvS2V5TWFwLmZpbmQoZm9ybSk7CkBAIC0zODYsNyArMzg3
LDcgQEAgc3RhdGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogICAgIC8vIEluIHRoZSBs
ZWdhY3kgdmVyc2lvbiBvZiBzZXJpYWxpemVkIHN0YXRlLCB0aGUgZmlyc3QgaXRlbSB3YXMgYSBu
YW1lCiAgICAgLy8gYXR0cmlidXRlIHZhbHVlIG9mIGEgZm9ybSBjb250cm9sLiBUaGUgZm9sbG93
aW5nIHN0cmluZyBsaXRlcmFsIHNob3VsZAogICAgIC8vIGNvbnRhaW4gc29tZSBjaGFyYWN0ZXJz
IHdoaWNoIGFyZSByYXJlbHkgdXNlZCBmb3IgbmFtZSBhdHRyaWJ1dGUgdmFsdWVzLgotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNpZ25hdHVyZSwgKEFTQ0lJTGl0
ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxuXHI9
JiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2lnbmF0dXJlKEFTQ0lJ
TGl0ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxu
XHI9JiIpKTsKICAgICByZXR1cm4gc2lnbmF0dXJlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDllYWVjZmQuLjQxOWE0YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC02MTksNyArNjE5LDcgQEAgdHlw
ZWRlZiBIYXNoTWFwPGNvbnN0IEhUTUxBbmNob3JFbGVtZW50KiwgUmVmUHRyPEVsZW1lbnQ+PiBS
b290RWRpdGFibGVFbGVtZW50TWEKIAogc3RhdGljIFJvb3RFZGl0YWJsZUVsZW1lbnRNYXAmIHJv
b3RFZGl0YWJsZUVsZW1lbnRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChSb290RWRpdGFibGVFbGVtZW50TWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Um9vdEVkaXRhYmxlRWxlbWVudE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggMmU3M2Rl
ZC4uZGY4ZTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAK
QEAgLTY1LDE1ICs2NSwxNSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxCdXR0b25FbGVtZW50
Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAg
ICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJtaXQsICgic3VibWl0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3VibWl0KCJzdWJtaXQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgICAgIHJldHVybiBzdWJtaXQ7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBCVVRUT046IHsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJ1dHRvbiwgKCJidXR0b24iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBidXR0b24oImJ1dHRvbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbjsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIFJFU0VUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCByZXNldCwgKCJyZXNldCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHJlc2V0KCJyZXNldCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAgICAgcmV0dXJuIHJlc2V0
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAKaW5kZXggOTE2MmFmYy4uZDA4N2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBIVE1MRmll
bGRTZXRFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZpZWxkc2V0
LCAoImZpZWxkc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZpZWxkc2V0KCJmaWVs
ZHNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBm
aWVsZHNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVP
d25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgKaW5kZXggMDFmYTcwMC4uOTY2NzFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg4LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVy
Tm9kZSo+JiBkaXNhYmxlZFN1YnRyZWVSb290cygpCiAgICAgewotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+LCBub2Rl
cywgKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaENvdW50ZWRTZXQ8Q29u
dGFpbmVyTm9kZSo+PiBub2RlczsKICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAppbmRleCBhYTA5MWZiLi44OTQ0
YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogICAgIEtleWdlblNlbGVjdEVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICA6IEhUTUxTZWxlY3RFbGVtZW50KHNlbGVj
dFRhZywgZG9jdW1lbnQsIDApCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwc2V1ZG9JZCwgKCItd2Via2l0LWtleWdlbi1zZWxlY3Qi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LWtleWdlbi1zZWxl
Y3QiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgc2V0UHNl
dWRvKHBzZXVkb0lkKTsKICAgICB9CiAKQEAgLTExMiw3ICsxMTMsNyBAQCBib29sIEhUTUxLZXln
ZW5FbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kZWRfdmFsdWVzLCBi
b29sKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxLZXlnZW5FbGVtZW50Ojpmb3JtQ29udHJv
bFR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGtleWdlbiwgKCJrZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4ga2V5Z2VuKCJrZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4ga2V5Z2VuOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKaW5kZXggYjU4MzIyMy4uMWM0OWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBzdGF0aWMgTGlua0V2ZW50U2VuZGVyJiBsaW5rTG9hZEV2ZW50U2VuZGVyKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTGlua0V2ZW50U2VuZGVyLCBzaGFy
ZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPExpbmtFdmVudFNlbmRlcj4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyKGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwogICAgIHJldHVybiBzaGFyZWRMb2FkRXZlbnRTZW5kZXI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDgxNTE2
ZmEuLjY4NGQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtMjA1LDcgKzIwNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB0eXBlZGVmIEhh
c2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVt
ZW50U2V0TWFwOwogc3RhdGljIERvY3VtZW50RWxlbWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1l
bnRTZXRNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEb2N1bWVu
dEVsZW1lbnRTZXRNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEb2N1
bWVudEVsZW1lbnRTZXRNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGFiYTAwMWIuLmM0NTZlNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00MDQsOCArNDA0
LDggQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkLCBhbGwgY2FsbGVycyBhcmUgYWxtb3N0IGNl
cnRhaW5seSB3cm9uZy4KIHN0YXRpYyBib29sIGlzUmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIHRhZ0xpc3QsICgpKTsKLSAgICBpZiAodGFn
TGlzdC5pc0VtcHR5KCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4+IHRhZ0xpc3Q7CisgICAgaWYgKHRhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGF1dG8qIHRhZ3MgPSBIVE1MTmFtZXM6OmdldEhUTUxUYWdzKCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRNTE5hbWVzOjpIVE1MVGFnc0NvdW50OyBpKysp
IHsKICAgICAgICAgICAgIGlmICgqdGFnc1tpXSA9PSBiZ3NvdW5kVGFnCkBAIC00MjAsMTAgKzQy
MCwxMCBAQCBzdGF0aWMgYm9vbCBpc1JlY29nbml6ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUpCiAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IGNoYW5nZXMgaG93
IHdlIHBhcnNlIGRvY3VtZW50cy4KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHRhZ0xpc3QuYWRkKHRhZ3NbaV0tPmxvY2FsTmFtZSgpLmltcGwo
KSk7CisgICAgICAgICAgICB0YWdMaXN0LmdldCgpLmFkZCh0YWdzW2ldLT5sb2NhbE5hbWUoKS5p
bXBsKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiB0YWdMaXN0LmNvbnRhaW5zKHRh
Z05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICByZXR1cm4gdGFnTGlzdC5nZXQoKS5jb250
YWlucyh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVs
ZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50LmNwcAppbmRleCBlMGJkOGNmLi44NjIyNjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBI
VE1MT3B0R3JvdXBFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcHRn
cm91cCwgKCJvcHRncm91cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBvcHRncm91cCgi
b3B0Z3JvdXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gb3B0Z3JvdXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91
dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5j
cHAKaW5kZXggMmY2YmE3Yi4uZWRkYTRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01NCw3ICs1NSw3IEBAIFJlZjxIVE1MT3V0cHV0RWxlbWVudD4gSFRN
TE91dHB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgp
IGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21p
Y1N0cmluZywgb3V0cHV0LCAoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBv
dXRwdXQoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBvdXRwdXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKaW5kZXggMDExNzVkOS4uNTdhNTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3Ry
YXIoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4mKTsKIAogc3RhdGljIFZlY3RvcjxSZXBsYWNlbWVu
dFBsdWdpbio+JiByZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFJlcGxhY2VtZW50UGx1Z2luKj4sIHJlZ2lz
dGVyZWRSZXBsYWNlbWVudHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9y
PFJlcGxhY2VtZW50UGx1Z2luKj4+IHJlZ2lzdGVyZWRSZXBsYWNlbWVudHM7CiAgICAgc3RhdGlj
IGJvb2wgZW5naW5lc1F1ZXJpZWQgPSBmYWxzZTsKICAgICAKICAgICBpZiAoZW5naW5lc1F1ZXJp
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApp
bmRleCBkNjhhNTk5Li4wOWU3YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTc0LDI5ICs3NCwyOSBAQCBzdGF0aWMgY29uc3QgYXV0
byByZW1vdmVTbmFwc2hvdFRpbWVyRGVsYXkgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHsg
MTUwMCB9OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJp
bmcgbWltZVR5cGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE1pbWVU
eXBlVG9Mb2NhbGl6ZWRTdHJpbmdNYXAsIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLCAoKSk7Ci0g
ICAgU3RyaW5nIHRpdGxlVGV4dCA9IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLmdldChtaW1lVHlw
ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1pbWVUeXBlVG9Mb2NhbGl6ZWRTdHJpbmdN
YXA+IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwOworICAgIFN0cmluZyB0aXRsZVRleHQgPSBtaW1l
VHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5nZXQobWltZVR5cGUpOwogICAgIGlmICghdGl0bGVU
ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIAogICAgIHRpdGxlVGV4
dCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxUaXRsZShtaW1lVHlw
ZSk7CiAgICAgaWYgKHRpdGxlVGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHRpdGxlVGV4dCA9IHNu
YXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpOwotICAgIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFw
LnNldChtaW1lVHlwZSwgdGl0bGVUZXh0KTsKKyAgICBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5n
ZXQoKS5zZXQobWltZVR5cGUsIHRpdGxlVGV4dCk7CiAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIH07
CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgc3VidGl0bGVUZXh0KFBhZ2UqIHBhZ2UsIFN0cmluZyBt
aW1lVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTWltZVR5cGVU
b0xvY2FsaXplZFN0cmluZ01hcCwgbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAsICgpKTsKLSAg
ICBTdHJpbmcgc3VidGl0bGVUZXh0ID0gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuZ2V0KG1p
bWVUeXBlKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWltZVR5cGVUb0xvY2FsaXplZFN0
cmluZ01hcD4gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXA7CisgICAgU3RyaW5nIHN1YnRpdGxl
VGV4dCA9IG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLmdldChtaW1lVHlwZSk7CiAg
ICAgaWYgKCFzdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3VidGl0bGVU
ZXh0OwogCiAgICAgc3VidGl0bGVUZXh0ID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0lu
U3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBlKTsKICAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1w
dHkoKSkKICAgICAgICAgc3VidGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRp
dGxlKCk7Ci0gICAgbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuc2V0KG1pbWVUeXBlLCBzdWJ0
aXRsZVRleHQpOworICAgIG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLnNldChtaW1l
VHlwZSwgc3VidGl0bGVUZXh0KTsKICAgICByZXR1cm4gc3VidGl0bGVUZXh0OwogfTsKIApAQCAt
NDA4LDExICs0MDgsMTEgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2Vy
QWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVybGF5KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0
b3IsICgiLnNuYXBzaG90LW92ZXJsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc2VsZWN0b3Io
Ii5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgU2hhZG93Um9vdCogc2hhZG93ID0gdXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlm
ICghc2hhZG93KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHNu
YXBzaG90TGFiZWwgPSBzaGFkb3ctPnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IsIEFTU0VSVF9OT19F
WENFUFRJT04pOworICAgIFJlZlB0cjxFbGVtZW50PiBzbmFwc2hvdExhYmVsID0gc2hhZG93LT5x
dWVyeVNlbGVjdG9yKHNlbGVjdG9yLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBy
ZXR1cm4gbm9kZSAmJiBzbmFwc2hvdExhYmVsICYmIChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0
KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yoc25hcHNob3RMYWJlbC5nZXQoKSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU3MzA0N2YuLmFl
ZGVkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC05
Nyw4ICs5Nyw4IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxl
OjpDaGFuZ2Ugc3R5bGVDaGFuZ2UpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVs
ZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2VsZWN0TXVsdGlwbGUsICgic2VsZWN0
LW11bHRpcGxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNlbGVjdE9u
ZSwgKCJzZWxlY3Qtb25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNlbGVjdE11bHRp
cGxlKCJzZWxlY3QtbXVsdGlwbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzZWxlY3RP
bmUoInNlbGVjdC1vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gbV9tdWx0aXBsZSA/IHNlbGVjdE11bHRpcGxlIDogc2VsZWN0T25lOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAppbmRleCBhY2VkZWQ0Li41MWM2
ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIFN0eWxlRXZlbnRT
ZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3R5bGVFdmVudFNlbmRlciwgc2hhcmVkTG9hZEV2ZW50U2VuZGVyLCAoZXZl
bnROYW1lcygpLmxvYWRFdmVudCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHlsZUV2
ZW50U2VuZGVyPiBzaGFyZWRMb2FkRXZlbnRTZW5kZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7
CiAgICAgcmV0dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNzg5NDM3Yy4uMmM4Y2U0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xMTUsNyAr
MTE1LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRleHRBcmVh
RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0ZXh0YXJlYSwgKCJ0ZXh0YXJlYSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0ZXh0YXJlYSgidGV4dGFyZWEiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gdGV4dGFyZWE7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggZDdmMDczNy4uMDk2MzcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTM3NSw5ICszNzUsOSBAQCBpbnQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVTZWxlY3Rpb25FbmQoKSBjb25zdAog
CiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcoVGV4dEZpZWxkU2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBub25lLCAoIm5vbmUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9yd2FyZCwgKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJhY2t3YXJkLCAoImJhY2t3YXJkIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBmb3J3YXJkKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmFja3dhcmQo
ImJhY2t3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDEzMTBjZTkuLmJlYjEwNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCwxMCArNjUsMTAgQEAgYm9vbCBJbWFnZUlu
cHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCkgY29u
c3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgZG90WFN0cmluZywgKEFTQ0lJTGl0ZXJhbCgiLngiKSkpOwot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRvdFlTdHJpbmcsIChB
U0NJSUxpdGVyYWwoIi55IikpKTsKLSAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUgKyBkb3RY
U3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueCgpKTsKLSAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5h
bWUgKyBkb3RZU3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBkb3RYU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiLngiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZG90WVN0cmluZyhBU0NJSUxpdGVyYWwoIi55Iikp
OworICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSArIGRvdFhTdHJpbmcuZ2V0KCksIG1fY2xp
Y2tMb2NhdGlvbi54KCkpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSArIGRvdFlTdHJp
bmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi55KCkpOwogCiAgICAgaWYgKCFlbGVtZW50KCkudmFs
dWUoKS5pc0VtcHR5KCkpCiAgICAgICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSwgZWxlbWVu
dCgpLnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGVO
YW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcAppbmRleCBh
YzA4OTZhLi40Mzg3NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcApA
QCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklucHV0VHlw
ZU5hbWVzLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBuYW1lc3BhY2UgSW5wdXRUeXBlTmFtZXMgewpAQCAtMzEsMTM5ICszMywx
MzkgQEAgbmFtZXNwYWNlIElucHV0VHlwZU5hbWVzIHsKIAogY29uc3QgQXRvbWljU3RyaW5nJiBi
dXR0b24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIG5hbWUsICgiYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImJ1dHRvbiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGNoZWNrYm94KCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImNoZWNrYm94IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IG5hbWUoImNoZWNrYm94IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
Y29sb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIG5hbWUsICgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiY29sb3IiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBkYXRlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImRhdGUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gbmFtZSgiZGF0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAo
ImRhdGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImRhdGV0aW1lIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWVsb2NhbCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJkYXRldGltZS1sb2NhbCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJkYXRldGltZS1sb2NhbCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBuYW1lLCAoImVtYWlsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUo
ImVtYWlsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgZmlsZSgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJmaWxlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IG5hbWUoImZpbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBoaWRk
ZW4oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IG5hbWUsICgiaGlkZGVuIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImhpZGRlbiIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImltYWdlIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IG5hbWUoImltYWdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgbW9udGgoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgi
bW9udGgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgibW9udGgiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBudW1iZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIG5hbWUsICgibnVtYmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5h
bWUoIm51bWJlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3N3b3JkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInBhc3N3
b3JkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInBhc3N3b3JkIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgcmFkaW8oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIG5hbWUsICgicmFkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFt
ZSgicmFkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiByYW5nZSgpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJyYW5nZSIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJyYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IHJlc2V0KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBuYW1lLCAoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInJlc2V0Iiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInNlYXJjaCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBuYW1lKCJzZWFyY2giLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBzdWJtaXQo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5h
bWUsICgic3VibWl0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInN1Ym1pdCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIHRlbGVwaG9uZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ0ZWwiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gbmFtZSgidGVsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dCgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ0ZXh0
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInRleHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiB0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBuYW1lLCAoInRpbWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGltZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHVybCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ1cmwiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gbmFtZSgidXJsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgd2VlaygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ3ZWVr
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoIndlZWsiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IGRiYjAyYWIuLjQ3YTk1YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKQEAgLTI5MCwxOSArMjkwLDE5IEBAIHZvaWQg
TWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChib29sIGZsYWcpCiAKIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHBsYXliYWNrU3RhdGVXYWl0aW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB3YWl0aW5nLCAoIndhaXRpbmciLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gd2FpdGluZygid2FpdGluZyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiB3YWl0aW5nOwogfQogCiBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBwbGF5YmFja1N0YXRlUGxheWluZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGxheWluZywgKCJwbGF5aW5nIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IHBsYXlpbmcoInBsYXlpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcGxheWluZzsKIH0KIAogc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgcGxheWJhY2tTdGF0ZUVuZGVkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBlbmRlZCgiZW5kZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0
VHlwZS5jcHAKaW5kZXggNDcyOTg3Mi4uNjBjMzE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250
aElucHV0VHlwZS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTkwLDcgKzkxLDcgQEAgRGVjaW1hbCBNb250aElucHV0VHlwZTo6ZGVmYXVsdFZh
bHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIE1vbnRoSW5wdXRUeXBlOjpjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKG1vbnRoRGVmYXVsdFN0ZXAsIG1vbnRoRGVmYXVsdFN0
ZXBCYXNlLCBtb250aFN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVT
aG91bGRCZUludGVnZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJh
bmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0ZXBEZXNjcmlwdGlvbihtb250aERlZmF1bHRTdGVwLCBt
b250aERlZmF1bHRTdGVwQmFzZSwgbW9udGhTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFy
c2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJh
c2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBE
ZWNpbWFsOjpmcm9tRG91YmxlKG1vbnRoRGVmYXVsdFN0ZXBCYXNlKSk7CiAgICAgY29uc3QgRGVj
aW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZSht
aW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11bU1vbnRo
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAppbmRleCBmZDM1YmI4
Li5mNjYwNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC0x
NTIsNyArMTUyLDcgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0
CiAKIFN0ZXBSYW5nZSBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFu
ZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0
aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3Rl
cFNjYWxlRmFjdG9yKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5n
ZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRpb24obnVtYmVyRGVmYXVsdFN0ZXAsIG51
bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKTsKICAgICBjb25zdCBE
ZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS5m
YXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3RlcEJhc2UpOwogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVt
YmVyIGlucHV0IHR5cGUuCiAgICAgY29uc3QgRGVjaW1hbCBmbG9hdE1heCA9IERlY2ltYWw6OmZy
b21Eb3VibGUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggMjRmN2JiYy4uMGZkZWEyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRl
ICJTbGlkZXJUaHVtYkVsZW1lbnQuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAiVG91Y2guaCIKQEAgLTExMyw3ICsxMTQsNyBA
QCBib29sIFJhbmdlSW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QKIAogU3RlcFJh
bmdlIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0
ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKHJhbmdl
RGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3Rvcikp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlw
dGlvbj4gc3RlcERlc2NyaXB0aW9uKHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBC
YXNlLCByYW5nZVN0ZXBTY2FsZUZhY3Rvcik7CiAKICAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0g
PSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCByYW5n
ZURlZmF1bHRNaW5pbXVtKTsKICAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBlbnN1cmVNYXhp
bXVtKHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIHJh
bmdlRGVmYXVsdE1heGltdW0pLCBtaW5pbXVtLCByYW5nZURlZmF1bHRNYXhpbXVtKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCBjNDc3MThhLi5lYmYzMWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9TdGVwUmFuZ2UuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNjUsMTMgKzY2LDEzIEBAIFN0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IERlY2lt
YWwmIHN0ZXBCYXNlLCBjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25zdCBEZWNpCiBEZWNpbWFs
IFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9yKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHVzZSBEQkxfTUFOVF9ESUcgaW5zdGVhZCBvZiBGTFRfTUFOVF9ESUcgcmVnYXJkaW5n
IHRvIEhUTUw1IHNwZWNpZmljYXRpb24uCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IERlY2ltYWwsIHR3b1Bvd2VyT2ZGbG9hdE1hbnRpc3NhQml0cywgKERlY2ltYWw6
OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgRGVjaW1hbD4gdHdvUG93ZXJPZkZsb2F0TWFudGlzc2FCaXRz
KERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcpOwogICAg
IHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5zdGVwVmFsdWVTaG91bGRCZSA9PSBTdGVwVmFsdWVT
aG91bGRCZVJlYWwgPyBtX3N0ZXAgLyB0d29Qb3dlck9mRmxvYXRNYW50aXNzYUJpdHMgOiBEZWNp
bWFsKDApOwogfQogCiBEZWNpbWFsIFN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAoY29uc3Qg
RGVjaW1hbCYgY3VycmVudFZhbHVlLCBjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSkgY29uc3QKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdGVuUG93
ZXJPZjIxLCAoRGVjaW1hbDo6UG9zaXRpdmUsIDIxLCAxKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IERlY2ltYWw+IHRlblBvd2VyT2YyMShEZWNpbWFsOjpQb3NpdGl2ZSwgMjEs
IDEpOwogICAgIGlmIChuZXdWYWx1ZSA+PSB0ZW5Qb3dlck9mMjEpCiAgICAgICAgIHJldHVybiBu
ZXdWYWx1ZTsKIApAQCAtMTUwLDcgKzE1MSw3IEBAIGJvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0
Y2goY29uc3QgRGVjaW1hbCYgdmFsdWVGb3JDaGVjaykgY29uc3QKICAgICAvLyBEZWNpbWFsJ3Mg
ZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0LiBJZiB0aGUgY3VycmVudCB2
YWx1ZQogICAgIC8vIGlzIGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJMX01BTlRfRElHLCB0aGUgZm9s
bG93aW5nIGNvbXB1dGF0aW9uIGZvcgogICAgIC8vIHJlbWFpbmRlciBtYWtlcyBubyBzZW5zZS4K
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdHdvUG93
ZXJPZkRvdWJsZU1hbnRpc3NhQml0cywgKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygx
KSA8PCBEQkxfTUFOVF9ESUcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgRGVj
aW1hbD4gdHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cyhEZWNpbWFsOjpQb3NpdGl2ZSwgMCwg
VUlOVDY0X0MoMSkgPDwgREJMX01BTlRfRElHKTsKICAgICBpZiAodmFsdWUgLyB0d29Qb3dlck9m
RG91YmxlTWFudGlzc2FCaXRzID4gbV9zdGVwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ly8gVGhlIGNvbXB1dGF0aW9uIGZvbGxvd3MgSFRNTDUgNC4xMC43LjIuMTAgYFRoZSBzdGVwIGF0
dHJpYnV0ZScgOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKaW5kZXggYzA5MDQx
OS4uNzRiMTRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0Rh
dGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03Nyw3ICs3OCw3IEBA
IERlY2ltYWwgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAog
U3RlcFJhbmdlIFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAo
dGltZURlZmF1bHRTdGVwLCB0aW1lRGVmYXVsdFN0ZXBCYXNlLCB0aW1lU3RlcFNjYWxlRmFjdG9y
LCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERl
c2NyaXB0aW9uKHRpbWVEZWZhdWx0U3RlcCwgdGltZURlZmF1bHRTdGVwQmFzZSwgdGltZVN0ZXBT
Y2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpOwog
CiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwogICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9
IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2lt
YWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1UaW1lKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCmluZGV4IDg0Y2E5ODguLjIzYjkwY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bnB1dFR5cGVOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU2LDcgKzU3LDcgQEAgRGF0ZUNvbXBvbmVudHM6OlR5cGUg
V2Vla0lucHV0VHlwZTo6ZGF0ZVR5cGUoKSBjb25zdAogCiBTdGVwUmFuZ2UgV2Vla0lucHV0VHlw
ZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6
U3RlcERlc2NyaXB0aW9uLCBzdGVwRGVzY3JpcHRpb24sICh3ZWVrRGVmYXVsdFN0ZXAsIHdlZWtE
ZWZhdWx0U3RlcEJhc2UsIHdlZWtTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3Rl
cFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRpb24od2Vla0RlZmF1bHRT
dGVwLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlLCB3ZWVrU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6
OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcik7CiAKICAgICBjb25zdCBEZWNpbWFsIHN0
ZXBCYXNlID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRy
KSwgd2Vla0RlZmF1bHRTdGVwQmFzZSk7CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFy
c2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6
ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11bVdlZWsoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
aW5kZXggNjU0MjdhMS4uYTYwMzM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC01OCw2ICs1OCw3IEBA
CiAKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIFVTRShDRykKQEAgLTE5NTksNyArMTk2MCw3
IEBAIFJlZlB0cjxJbWFnZURhdGE+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6d2Via2l0R2V0
SW1hZ2VEYXRhSEQoZmxvYXQgc3gsIGZsb2F0CiBSZWZQdHI8SW1hZ2VEYXRhPiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmdldEltYWdlRGF0YShJbWFnZUJ1ZmZlcjo6Q29vcmRpbmF0ZVN5c3Rl
bSBjb29yZGluYXRlU3lzdGVtLCBmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBz
aCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFjYW52YXMoKS0+b3JpZ2lu
Q2xlYW4oKSkgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRh
IGZyb20gY2FudmFzIGJlY2F1c2UgdGhlIGNhbnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3Nz
LW9yaWdpbiBkYXRhLiIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZy
b20gY2FudmFzIGJlY2F1c2UgdGhlIGNhbnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3NzLW9y
aWdpbiBkYXRhLiIpKTsKICAgICAgICAgY2FudmFzKCktPmRvY3VtZW50KCkuYWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNv
bGVNZXNzYWdlKTsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCBk
OWFlMTJhLi5hMTkxZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRl
IDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjcz
LDcgKzI3NCw3IEBAIHZvaWQgWFNTQXVkaXRvcjo6aW5pdChEb2N1bWVudCogZG9jdW1lbnQsIFhT
U0F1ZGl0b3JEZWxlZ2F0ZSogYXVkaXRvckRlbGVnYXRlKQogCiAgICAgU3RyaW5nIGh0dHBCb2R5
QXNTdHJpbmc7CiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGRvY3Vt
ZW50LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSB7Ci0gICAgICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIFhTU1Byb3RlY3Rpb25IZWFkZXIsIChB
U0NJSUxpdGVyYWwoIlgtWFNTLVByb3RlY3Rpb24iKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBYU1NQcm90ZWN0aW9uSGVhZGVyKEFTQ0lJTGl0ZXJhbCgiWC1YU1Mt
UHJvdGVjdGlvbiIpKTsKICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlID0gZG9jdW1lbnRMb2Fk
ZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKFhTU1Byb3RlY3Rpb25IZWFkZXIpOwogICAg
ICAgICBTdHJpbmcgZXJyb3JEZXRhaWxzOwogICAgICAgICB1bnNpZ25lZCBlcnJvclBvc2l0aW9u
ID0gMDsKQEAgLTUyMyw3ICs1MjQsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckJ1dHRvblRv
a2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIAogYm9vbCBYU1NBdWRpdG9y
OjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRlclRva2VuUmVx
dWVzdCYgcmVxdWVzdCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBzYWZlSmF2YVNjcmlwdFVSTCwgKEFTQ0lJTGl0ZXJhbCgiamF2YXNjcmlwdDp2b2lkKDAp
IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzYWZlSmF2YVNjcmlwdFVS
TChBU0NJSUxpdGVyYWwoImphdmFzY3JpcHQ6dm9pZCgwKSIpKTsKIAogICAgIGJvb2wgZGlkQmxv
Y2tTY3JpcHQgPSBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcXVlc3QudG9r
ZW4uYXR0cmlidXRlcygpLnNpemUoKTsgKytpKSB7CkBAIC01MzgsNyArNTM5LDcgQEAgYm9vbCBY
U1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRl
clRva2VuUmVxdWVzdCYgcmUKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZXF1ZXN0
LnRva2VuLmVyYXNlVmFsdWVPZkF0dHJpYnV0ZShpKTsKICAgICAgICAgaWYgKHZhbHVlQ29udGFp
bnNKYXZhU2NyaXB0VVJMKQotICAgICAgICAgICAgcmVxdWVzdC50b2tlbi5hcHBlbmRUb0F0dHJp
YnV0ZVZhbHVlKGksIHNhZmVKYXZhU2NyaXB0VVJMKTsKKyAgICAgICAgICAgIHJlcXVlc3QudG9r
ZW4uYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShpLCBzYWZlSmF2YVNjcmlwdFVSTC5nZXQoKSk7CiAg
ICAgICAgIGRpZEJsb2NrU2NyaXB0ID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGRpZEJsb2Nr
U2NyaXB0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCmluZGV4IDA3OWJjMGYuLmY3YTNjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTcyMSw3ICs3
MjEsNyBAQCB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbgogdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRD
YXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogewogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBzZWxlY3RlZENsYXNzVmFsdWUsICgic2VsZWN0ZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gc2VsZWN0ZWRDbGFzc1ZhbHVlKCJzZWxlY3RlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogCiAgICAgaWYgKCFtZWRpYUNvbnRyb2xsZXIoKS0+aGFzQ2xvc2VkQ2Fw
dGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgUmVmPE1lZGlh
Q29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sVGltZVJlbWFp
bmluZ0Rpc3BsYXlFbGUKIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0TWVkaWFDb250
cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50U2hhZG93UHNldWRvSWQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQt
bWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5pbmctZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBpZCgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5Iiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGlkOwogfQog
CkBAIC0xMDU3LDcgKzEwNTcsNyBAQCBSZWY8TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudD4gTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudAogCiBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBnZXRNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVt
ZW50U2hhZG93UHNldWRvSWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1l
LWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaWQoIi13ZWJraXQtbWVkaWEtY29udHJv
bHMtY3VycmVudC10aW1lLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gaWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDE2NDViODIuLjgwODJjZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApA
QCAtNjMsNyArNjMsNyBAQCBib29sIE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiBNZXRlcklubmVyRWxlbWVudDo6TWV0ZXJJbm5l
ckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogTWV0ZXJTaGFkb3dFbGVtZW50KGRv
Y3VtZW50KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIHBzZXVkb0lkLCAoIi13ZWJraXQtbWV0ZXItaW5uZXItZWxlbWVudCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBwc2V1ZG9JZCgiLXdlYmtpdC1tZXRlci1pbm5lci1lbGVtZW50IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc2V0UHNldWRvKHBzZXVkb0lkKTsK
IH0KIApAQCAtODAsOSArODAsOSBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWV0ZXJJbm5l
ckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bAogCiBjb25zdCBB
dG9taWNTdHJpbmcmIE1ldGVyVmFsdWVFbGVtZW50Ojp2YWx1ZVBzZXVkb0lkKCkgY29uc3QKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvcHRpbXVt
UHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIHN1Ym9wdGltdW1Qc2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLXN1Ym9w
dGltdW0tdmFsdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZXZlbkxlc3NHb29k
UHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1ldmVuLWxlc3MtZ29vZC12YWx1ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBvcHRpbXVtUHNldWRvSWQoIi13ZWJraXQtbWV0ZXItb3B0aW11bS12YWx1
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHN1Ym9wdGltdW1Qc2V1ZG9JZCgiLXdlYmtpdC1tZXRl
ci1zdWJvcHRpbXVtLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZXZlbkxlc3NHb29kUHNl
dWRvSWQoIi13ZWJraXQtbWV0ZXItZXZlbi1sZXNzLWdvb2QtdmFsdWUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIEhUTUxNZXRlckVsZW1lbnQqIG1ldGVyID0g
bWV0ZXJFbGVtZW50KCk7CiAgICAgaWYgKCFtZXRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgKaW5kZXggNGY5YjMwNC4uNzcwNmIxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgKQEAg
LTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKICNpbmNsdWRlICJIVE1M
RGl2RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzUsNyArNzYsNyBA
QCBwcml2YXRlOgogICAgIE1ldGVyQmFyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
ICAgIDogTWV0ZXJTaGFkb3dFbGVtZW50KGRvY3VtZW50KQogICAgIHsKLSAgICAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHNldWRvSWQsICgiLXdlYmtp
dC1tZXRlci1iYXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0
LW1ldGVyLWJhciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAg
ICBzZXRQc2V1ZG8ocHNldWRvSWQpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCBmYjU4MzM2Li4wZDg5MWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5jcHAKQEAgLTU3NiwxMyArNTc2LDEzIEBAIEhUTUxJbnB1dEVsZW1lbnQqIFNsaWRlclRodW1i
RWxlbWVudDo6aG9zdElucHV0KCkgY29uc3QKIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
c2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2xpZGVyVGh1bWIsICgiLXdlYmtpdC1zbGlk
ZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc2xpZGVyVGh1bWIoIi13ZWJr
aXQtc2xpZGVyLXRodW1iIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIHNsaWRlclRodW1iOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBt
ZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRvSWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1lZGlhU2xpZGVyVGh1bWIsICgiLXdl
YmtpdC1tZWRpYS1zbGlkZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbWVk
aWFTbGlkZXJUaHVtYigiLXdlYmtpdC1tZWRpYS1zbGlkZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbWVkaWFTbGlkZXJUaHVtYjsKIH0K
IApAQCAtNjQyLDggKzY0Miw4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU2xpZGVyQ29udGFpbmVy
RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogICAgIC8vIHRoYXQgdmFsdWUgZGVwZW5k
cyBvbiB0aGUgc3R5bGUsIHdoaWNoIG1lYW5zIHRoZSBzdHlsZSBuZWVkcyB0byBiZSBjb21wdXRl
ZCB0d2ljZSB0byBnZXQKICAgICAvLyBhIGNvcnJlY3QgdmFsdWU6IG9uY2UgdG8gZ2V0IHRoZSBJ
bnB1dCdzIGFwcGVhcmFuY2UsIHRoZW4gYSBzZWNvbmQgdGltZSB0byBzdHlsZSB0aGUgc2hhZG93
IHRyZWUgY29ycmVjdGx5LgogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgbWVkaWFTbGlkZXJDb250YWluZXIsICgiLXdlYmtpdC1tZWRpYS1z
bGlkZXItY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNs
aWRlckNvbnRhaW5lciwgKCItd2Via2l0LXNsaWRlci1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21pY1N0cmluZz4gbWVkaWFTbGlkZXJDb250YWluZXIoIi13ZWJraXQtbWVkaWEtc2xpZGVy
LWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNsaWRlckNvbnRhaW5lcigi
LXdlYmtpdC1zbGlkZXItY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAKICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpzaGFkb3dIb3N0KCkpKQog
ICAgICAgICByZXR1cm4gc2xpZGVyQ29udGFpbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFjay5jcHAKaW5kZXggODczMjkyNS4uYTQyZTEwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCkBAIC0zOCw0MiArMzgsNDMgQEAKICNpbmNsdWRlICJB
dWRpb1RyYWNrTGlzdC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVL
ZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBhbHRlcm5hdGl2ZSgiYWx0ZXJuYXRpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICByZXR1cm4gYWx0ZXJuYXRpdmU7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbiwgKCJk
ZXNjcmlwdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBkZXNjcmlwdGlvbigiZGVzY3JpcHRp
b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZGVz
Y3JpcHRpb247CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbktleXdv
cmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIG1haW4sICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBtYWluKCJtYWluIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1haW47CiB9
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBt
YWluRGVzYywgKCJtYWluLWRlc2MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbWFpbkRlc2MoIm1h
aW4tZGVzYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBtYWluRGVzYzsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjp0cmFuc2xh
dGlvbktleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIHRyYW5zbGF0aW9uLCAoInRyYW5zbGF0aW9uIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IHRyYW5zbGF0aW9uKCJ0cmFuc2xhdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiB0cmFuc2xhdGlvbjsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBBdWRpb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVudGFyeSwg
KCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGNvbW1lbnRhcnkoImNvbW1lbnRh
cnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY29t
bWVudGFyeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4
IDBkOWEyYjYuLjcyOWY1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5j
cHAKQEAgLTQ5LDU1ICs0OSw1NSBAQCBzdGF0aWMgY29uc3QgaW50IGludmFsaWRUcmFja0luZGV4
ID0gLTE7CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3Jk
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBzdWJ0aXRsZXMsICgic3VidGl0bGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IHN1YnRpdGxlcygic3VidGl0bGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIHN1YnRpdGxlczsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0
VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlvbnMsICgiY2FwdGlvbnMiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21pY1N0cmluZz4gY2FwdGlvbnMoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNhcHRpb25zOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFRleHRUcmFjazo6ZGVzY3JpcHRpb25zS2V5d29yZCgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGVzY3JpcHRp
b25zLCAoImRlc2NyaXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBkZXNjcmlw
dGlvbnMoImRlc2NyaXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBkZXNjcmlwdGlvbnM7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4
dFRyYWNrOjpjaGFwdGVyc0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNoYXB0ZXJzLCAoImNoYXB0ZXJzIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IGNoYXB0ZXJzKCJjaGFwdGVycyIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBjaGFwdGVyczsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6Om1ldGFkYXRhS2V5d29yZCgpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWV0YWRhdGEsICgi
bWV0YWRhdGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbWV0YWRhdGEoIm1ldGFkYXRh
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1ldGFk
YXRhOwogfQogICAgIAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmZvcmNlZEtleXdv
cmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIGZvcmNlZCwgKCJmb3JjZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZm9y
Y2VkKCJmb3JjZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBy
ZXR1cm4gZm9yY2VkOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6ZGlzYWJs
ZWRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBvcGVuLCAoImRpc2FibGVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IG9wZW4oImRpc2FibGVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIG9wZW47CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpo
aWRkZW5LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBjbG9zZWQsICgiaGlkZGVuIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNT
dHJpbmc+IGNsb3NlZCgiaGlkZGVuIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIGNsb3NlZDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJh
Y2s6OnNob3dpbmdLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBlbmRlZCwgKCJzaG93aW5nIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IGVuZGVkKCJzaG93aW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIGVuZGVkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuaAppbmRleCA2NGU2ZmQyLi43ZTU5MjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL01l
ZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUxLDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY3VlU2hhZG93UHNldWRv
SWQoKQogICAgIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgY3VlLCAoImN1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gY3VlKCJjdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAg
ICAgcmV0dXJuIGN1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApp
bmRleCA3YWM4NjYxLi4wMjMwZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3Bw
CkBAIC03MiwzMSArNzIsMzEgQEAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChkaXNw
bGF5QWxpZ25tZW50TWFwKSA9PSBWVFRDdWU6Ok51bWJlck9mQWxpZ25tZW4KIAogc3RhdGljIGNv
bnN0IFN0cmluZyYgc3RhcnRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdGFydCwgKEFTQ0lJTGl0ZXJhbCgic3RhcnQiKSkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHN0YXJ0KEFTQ0lJTGl0ZXJh
bCgic3RhcnQiKSk7CiAgICAgcmV0dXJuIHN0YXJ0OwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5n
JiBtaWRkbGVLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCBtaWRkbGUsIChBU0NJSUxpdGVyYWwoIm1pZGRsZSIpKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gbWlkZGxlKEFTQ0lJTGl0ZXJhbCgibWlk
ZGxlIikpOwogICAgIHJldHVybiBtaWRkbGU7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIGVu
ZEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGVuZCwgKEFTQ0lJTGl0ZXJhbCgiZW5kIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgU3RyaW5nPiBlbmQoQVNDSUlMaXRlcmFsKCJlbmQiKSk7CiAgICAgcmV0dXJu
IGVuZDsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyYgbGVmdEtleXdvcmQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGxlZnQsICgibGVmdCIp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBsZWZ0KCJsZWZ0Iik7
CiAgICAgcmV0dXJuIGxlZnQ7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHJpZ2h0S2V5d29y
ZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywg
cmlnaHQsICgicmlnaHQiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmlu
Zz4gcmlnaHQoInJpZ2h0Iik7CiAgICAgcmV0dXJuIHJpZ2h0OwogfQogCkBAIC0xMDcsMTMgKzEw
NywxMyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nJiBob3Jpem9udGFsS2V5d29yZCgpCiAKIHN0YXRp
YyBjb25zdCBTdHJpbmcmIHZlcnRpY2FsR3Jvd2luZ0xlZnRLZXl3b3JkKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB2ZXJ0aWNhbHJsLCAoQVND
SUlMaXRlcmFsKCJybCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmlu
Zz4gdmVydGljYWxybChBU0NJSUxpdGVyYWwoInJsIikpOwogICAgIHJldHVybiB2ZXJ0aWNhbHJs
OwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiB2ZXJ0aWNhbEdyb3dpbmdSaWdodEtleXdvcmQo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHZl
cnRpY2FsbHIsIChBU0NJSUxpdGVyYWwoImxyIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgU3RyaW5nPiB2ZXJ0aWNhbGxyKEFTQ0lJTGl0ZXJhbCgibHIiKSk7CiAgICAgcmV0
dXJuIHZlcnRpY2FsbHI7CiB9CiAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFZUVEN1ZUJveDo6
YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKIAogY29uc3QgQXRv
bWljU3RyaW5nJiBWVFRDdWVCb3g6OnZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja0Rp
c3BsYXlCb3hTaGFkb3dQc2V1ZG9JZCwgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxh
eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1
ZG9JZCgiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNl
dWRvSWQ7CiB9CiAKQEAgLTIzOCw3ICsyMzgsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
VlRUQ3VlQm94OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIFZUVEN1ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgY3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCwgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2st
ZGlzcGxheS1iYWNrZHJvcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjdWVCYWNrZHJv
cFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNrZHJv
cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBjdWVC
YWNrZHJvcFNoYWRvd1BzZXVkb0lkOwogfQogCkBAIC01OTcsNyArNTk3LDcgQEAgc3RhdGljIGJv
b2wgaXNDdWVQYXJhZ3JhcGhTZXBhcmF0b3IoVUNoYXIgY2hhcmFjdGVyKQogCiB2b2lkIFZUVEN1
ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcnRUYWcsIChBU0NJSUxpdGVyYWwoInJ0IikpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBydFRhZyhBU0NJSUxpdGVyYWwo
InJ0IikpOwogICAgIGNyZWF0ZVdlYlZUVE5vZGVUcmVlKCk7CiAgICAgaWYgKCFtX3dlYlZUVE5v
ZGVUcmVlKQogICAgICAgICByZXR1cm47CkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBWVFRDdWU6
OmNhbGN1bGF0ZURpc3BsYXlQYXJhbWV0ZXJzKCkKICAgICAKIHZvaWQgVlRUQ3VlOjptYXJrRnV0
dXJlQW5kUGFzdE5vZGVzKENvbnRhaW5lck5vZGUqIHJvb3QsIGNvbnN0IE1lZGlhVGltZSYgcHJl
dmlvdXNUaW1lc3RhbXAsIGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHRpbWVzdGFtcFRhZywgKEFT
Q0lJTGl0ZXJhbCgidGltZXN0YW1wIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiB0aW1lc3RhbXBUYWcoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSk7CiAgICAg
CiAgICAgYm9vbCBpc1Bhc3ROb2RlID0gdHJ1ZTsKICAgICBNZWRpYVRpbWUgY3VycmVudFRpbWVz
dGFtcCA9IHByZXZpb3VzVGltZXN0YW1wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WVFRSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdp
b24uY3BwCmluZGV4IDg1Nzk4NjguLjk0MTFmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVFJlZ2lvbi5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFZUVFJlZ2lvbjo6c2V0Vmll
d3BvcnRBbmNob3JZKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIGNvbnN0IEF0
b21pY1N0cmluZyBWVFRSZWdpb246OnNjcm9sbCgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdXBTY3JvbGxWYWx1ZUtleXdv
cmQsICgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdXBTY3JvbGxWYWx1ZUtleXdv
cmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAo
bV9zY3JvbGwpCiAgICAgICAgIHJldHVybiB1cFNjcm9sbFZhbHVlS2V5d29yZDsKQEAgLTE5OCw3
ICsxOTgsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcgVlRUUmVnaW9uOjpzY3JvbGwoKSBjb25zdAog
CiB2b2lkIFZUVFJlZ2lvbjo6c2V0U2Nyb2xsKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIHVwU2Nyb2xsVmFsdWVLZXl3b3JkLCAoInVwIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IHVwU2Nyb2xsVmFsdWVLZXl3b3JkKCJ1cCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgaWYgKHZhbHVlICE9IGVtcHR5U3RyaW5n
KCkgJiYgdmFsdWUgIT0gdXBTY3JvbGxWYWx1ZUtleXdvcmQpIHsKICAgICAgICAgZWMgPSBTWU5U
QVhfRVJSOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZWRFbnRp
cmVSdW4oY29uc3QgVlRUU2Nhbm5lciYgaW5wdXQsIGNvbnN0IFZUVFNjYW5uZXI6OlJ1CiAKIHZv
aWQgVlRUUmVnaW9uOjpwYXJzZVNldHRpbmdWYWx1ZShSZWdpb25TZXR0aW5nIHNldHRpbmcsIFZU
VFNjYW5uZXImIGlucHV0KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIHNjcm9sbFVwVmFsdWVLZXl3b3JkLCAoInVwIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IHNjcm9sbFVwVmFsdWVLZXl3b3JkKCJ1cCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgVlRUU2Nhbm5lcjo6UnVuIHZhbHVlUnVu
ID0gaW5wdXQuY29sbGVjdFVudGlsPGlzSFRNTFNwYWNlPFVDaGFyPj4oKTsKIApAQCAtMzEyLDcg
KzMxMiw3IEBAIHZvaWQgVlRUUmVnaW9uOjpwYXJzZVNldHRpbmdWYWx1ZShSZWdpb25TZXR0aW5n
IHNldHRpbmcsIFZUVFNjYW5uZXImIGlucHV0KQogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBTY3JvbGw6Ci0gICAgICAgIGlmIChpbnB1dC5zY2FuUnVuKHZhbHVlUnVuLCBzY3JvbGxV
cFZhbHVlS2V5d29yZCkpCisgICAgICAgIGlmIChpbnB1dC5zY2FuUnVuKHZhbHVlUnVuLCBzY3Jv
bGxVcFZhbHVlS2V5d29yZC5nZXQoKSkpCiAgICAgICAgICAgICBtX3Njcm9sbCA9IHRydWU7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIExPRyhNZWRpYSwgIlZUVFJlZ2lvbjo6cGFyc2VTZXR0
aW5nVmFsdWUsIGludmFsaWQgU2Nyb2xsIik7CkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBWVFRS
ZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVlKFJlZ2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5l
ciYgaW5wdXQpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVlRUUmVnaW9uOjp0ZXh0VHJhY2tDdWVD
b250YWluZXJTY3JvbGxpbmdDbGFzcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhY2tSZWdpb25DdWVDb250YWluZXJTY3JvbGxp
bmdDbGFzcywgKCJzY3JvbGxpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHJhY2tS
ZWdpb25DdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcygic2Nyb2xsaW5nIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICByZXR1cm4gdHJhY2tSZWdpb25DdWVDb250
YWluZXJTY3JvbGxpbmdDbGFzczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2suY3BwCmluZGV4IDk3NGU0OTcuLjczNDA5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrLmNwcApAQCAtNDcsMzcgKzQ3LDM3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IGFsdGVybmF0aXZlLCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNhcHRpb25zLCAoImNhcHRpb25zIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNhcHRpb25zKCJjYXB0aW9ucyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBjYXB0aW9uczsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlvbnMs
ICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjYXB0aW9ucygibWFpbiIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBjYXB0aW9uczsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2ln
biwgKCJzaWduIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNpZ24oInNpZ24iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc2lnbjsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0
aXRsZXMsICgic3VidGl0bGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHN1YnRpdGxl
cygic3VidGl0bGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIHN1YnRpdGxlczsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpj
b21tZW50YXJ5S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IGNvbW1lbnRhcnkoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY29tbWVudGFyeTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKaW5kZXggYTNjMDM2Ni4u
MWY2MTBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3Bw
CkBAIC0zNiwxNCArMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbm9kZVR5cGVUb1RhZ05hbWUoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIGNU
YWcsIChudWxsQXRvbSwgImMiLCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB2VGFnLCAobnVsbEF0b20sICJ2IiwgbnVsbEF0b20p
KTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgbGFu
Z1RhZywgKG51bGxBdG9tLCAibGFuZyIsIG51bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIGJUYWcsIChudWxsQXRvbSwgImIiLCBudWxs
QXRvbSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1l
LCB1VGFnLCAobnVsbEF0b20sICJ1IiwgbnVsbEF0b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgaVRhZywgKG51bGxBdG9tLCAiaSIsIG51bGxB
dG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUs
IHJ1YnlUYWcsIChudWxsQXRvbSwgInJ1YnkiLCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBydFRhZywgKG51bGxBdG9tLCAicnQi
LCBudWxsQXRvbSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBj
VGFnKG51bGxBdG9tLCAiYyIsIG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gdlRhZyhudWxsQXRvbSwgInYiLCBudWxsQXRvbSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGxhbmdUYWcobnVsbEF0b20sICJsYW5nIiwg
bnVsbEF0b20pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBiVGFn
KG51bGxBdG9tLCAiYiIsIG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gdVRhZyhudWxsQXRvbSwgInUiLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGlUYWcobnVsbEF0b20sICJpIiwgbnVsbEF0b20p
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydWJ5VGFnKG51bGxB
dG9tLCAicnVieSIsIG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlm
aWVkTmFtZT4gcnRUYWcobnVsbEF0b20sICJydCIsIG51bGxBdG9tKTsKICAgICBzd2l0Y2ggKG5v
ZGVUeXBlKSB7CiAgICAgY2FzZSBXZWJWVFROb2RlVHlwZUNsYXNzOgogICAgICAgICByZXR1cm4g
Y1RhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXggODlk
M2QyYy4uNWVmZGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDEzICs2MywxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgdm9pY2VBdHRyaWJ1dGVOYW1lKCkKICAgICB7Ci0gICAg
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB2b2ljZUF0
dHIsIChudWxsQXRvbSwgInZvaWNlIiwgbnVsbEF0b20pKTsKKyAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZvaWNlQXR0cihudWxsQXRvbSwgInZvaWNlIiwgbnVs
bEF0b20pOwogICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwogICAgIH0KICAgICAKICAgICBzdGF0
aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGFuZ0F0dHJpYnV0ZU5hbWUoKQogICAgIHsKLSAgICAg
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0
ciwgKG51bGxBdG9tLCAibGFuZyIsIG51bGxBdG9tKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0
b20pOwogICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDE5MjIwMTAuLjllYjE1OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTI2MSw3ICsyNjEs
NyBAQCBib29sIFdlYlZUVFBhcnNlcjo6aGFzUmVxdWlyZWRGaWxlSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGxpbmUpCiB2b2lkIFdlYlZUVFBhcnNlcjo6Y29sbGVjdE1ldGFkYXRhSGVhZGVyKGNv
bnN0IFN0cmluZyYgbGluZSkKIHsKICAgICAvLyBXZWJWVFQgaGVhZGVyIHBhcnNpbmcgKFdlYlZU
VCBwYXJzZXIgYWxnb3JpdGhtIHN0ZXAgMTIpCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgcmVnaW9uSGVhZGVyTmFtZSwgKCJSZWdpb24iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gcmVnaW9uSGVhZGVyTmFtZSgiUmVnaW9uIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICAvLyBTdGVwIDEyLjQgSWYg
bGluZSBjb250YWlucyB0aGUgY2hhcmFjdGVyICI6IiAoQSBVKzAwM0EgQ09MT04pLCB0aGVuIHNl
dCBtZXRhZGF0YSdzCiAgICAgLy8gbmFtZSB0byB0aGUgc3Vic3RyaW5nIG9mIGxpbmUgYmVmb3Jl
IHRoZSBmaXJzdCAiOiIgY2hhcmFjdGVyIGFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMTFlNTI0OS4uZTliMzJhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC03OSwxMCAr
NzksMTAgQEAgZW51bSBGb3JjZVBzZXVkb0NsYXNzRmxhZ3MgewogCiBzdGF0aWMgdW5zaWduZWQg
Y29tcHV0ZVBzZXVkb0NsYXNzTWFzayhjb25zdCBJbnNwZWN0b3JBcnJheSYgcHNldWRvQ2xhc3NB
cnJheSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhY3Rp
dmUsIChBU0NJSUxpdGVyYWwoImFjdGl2ZSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgaG92ZXIsIChBU0NJSUxpdGVyYWwoImhvdmVyIikpKTsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmb2N1cywgKEFTQ0lJTGl0ZXJh
bCgiZm9jdXMiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IHZpc2l0ZWQsIChBU0NJSUxpdGVyYWwoInZpc2l0ZWQiKSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGFjdGl2ZShBU0NJSUxpdGVyYWwoImFjdGl2ZSIpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBob3ZlcihBU0NJSUxpdGVyYWwoImhvdmVyIikpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZvY3VzKEFTQ0lJTGl0ZXJhbCgiZm9j
dXMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmlzaXRlZChBU0NJSUxp
dGVyYWwoInZpc2l0ZWQiKSk7CiAgICAgaWYgKCFwc2V1ZG9DbGFzc0FycmF5Lmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gUHNldWRvQ2xhc3NOb25lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDVjZThjMjYuLmQ2NjAyMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBA
IC0yMzAsOCArMjMwLDggQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVu
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEZyYW1lKiBmcmFtZSwKIC8vc3RhdGljCiBTdHJp
bmcgSW5zcGVjdG9yUGFnZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgc291cmNlTWFwSFRUUEhlYWRlciwgKEFTQ0lJTGl0ZXJhbCgiU291cmNlTWFw
IikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VN
YXBIVFRQSGVhZGVyRGVwcmVjYXRlZCwgKEFTQ0lJTGl0ZXJhbCgiWC1Tb3VyY2VNYXAiKSkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNvdXJjZU1hcEhUVFBIZWFkZXIoQVND
SUlMaXRlcmFsKCJTb3VyY2VNYXAiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc291cmNlTWFwSFRUUEhlYWRlckRlcHJlY2F0ZWQoQVNDSUlMaXRlcmFsKCJYLVNvdXJjZU1h
cCIpKTsKIAogICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAppbmRleCA0MTgzMzMwLi40NzYxZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC04ODAsNyArODgwLDcgQEAgc3RhdGljIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPiBidWlsZE9iamVjdEZvclNl
bGVjdG9ySGVscGVyKGMKIAogc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPj4gc2VsZWN0b3JzRnJvbVNvdXJj
ZShjb25zdCBDU1NSdWxlU291cmNlRGF0YSogc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzaGVl
dFRleHQsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0LCBFbGVtZW50KiBlbGVt
ZW50KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uLCBjb21tZW50LCAoIi9cXCpbXl0qP1xcKi8iLCBUZXh0Q2FzZVNlbnNp
dGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IGNvbW1lbnQoIi9cXCpbXl0qP1xc
Ki8iLCBUZXh0Q2FzZVNlbnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKTsKIAog
ICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj46OmNyZWF0ZSgpOwogICAgIGNvbnN0IENTU1NlbGVj
dG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZjFhZGYxZC4uMjAwZWJmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBA
IC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgog
I2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8
cHJvZmlsZXIvUHJvZmlsZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCkBAIC03Myw4ICs3NCw4IEBAIHZvaWQgUGFnZURl
YnVnZ2VyQWdlbnQ6OmRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogCiBTdHJpbmcgUGFn
ZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmIHNjcmlw
dCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VN
YXBIVFRQSGVhZGVyLCAoQVNDSUlMaXRlcmFsKCJTb3VyY2VNYXAiKSkpOwotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNh
dGVkLCAoQVNDSUlMaXRlcmFsKCJYLVNvdXJjZU1hcCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gc291cmNlTWFwSFRUUEhlYWRlcihBU0NJSUxpdGVyYWwoIlNvdXJjZU1h
cCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVh
ZGVyRGVwcmVjYXRlZChBU0NJSUxpdGVyYWwoIlgtU291cmNlTWFwIikpOwogCiAgICAgaWYgKCFz
Y3JpcHQudXJsLmlzRW1wdHkoKSkgewogICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Ug
PSBtX3BhZ2VBZ2VudC0+Y2FjaGVkUmVzb3VyY2UoJm1fcGFnZS5tYWluRnJhbWUoKSwgVVJMKFBh
cnNlZFVSTFN0cmluZywgc2NyaXB0LnVybCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5jcHAKaW5kZXggZWQxN2ZhOS4uMjhlZjA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VM
b2FkZXIuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICBtX2hhc1BlbmRpbmdFcnJv
ckV2ZW50ID0gdHJ1ZTsKICAgICAgICAgZXJyb3JFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRT
b29uKCp0aGlzKTsKIAotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIGltYWdlIGxv
YWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSkpOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJ
SUxpdGVyYWwoIkNyb3NzLW9yaWdpbiBpbWFnZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4g
UmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpOwogICAgICAgICBlbGVtZW50KCkuZG9jdW1lbnQo
KS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpFcnJvciwgY29uc29sZU1lc3NhZ2UpOwogCiAgICAgICAgIEFTU0VSVCghbV9oYXNQZW5kaW5n
TG9hZEV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5k
ZXggNDBlOWFkNS4uNmRhMTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xv
YWRlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6ZGVwcmVj
YXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyYwogCiB2
b2lkIFRleHRUcmFja0xvYWRlcjo6Y29yc1BvbGljeVByZXZlbnRlZExvYWQoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVND
SUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4gdGV4dCB0cmFjayBsb2FkIGRlbmllZCBieSBDcm9zcy1P
cmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiB0
ZXh0IHRyYWNrIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBv
bGljeS4iKSk7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVz
c2FnZSk7CiAgICAgbV9zdGF0ZSA9IEZhaWxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKaW5kZXggNWFkNTdlYy4uYTA1
ZGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTg3LDcgKzg4LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBDYWNoZWRSZXNvdXJjZVJl
cXVlc3Q6OmluaXRpYXRvck5hbWUoKSBjb25zdAogICAgIGlmICghbV9pbml0aWF0b3JOYW1lLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1faW5pdGlhdG9yTmFtZTsKIAotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRlZmF1bHROYW1lLCAoInJlc291
cmNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGRlZmF1bHROYW1lKCJyZXNvdXJjZSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBkZWZhdWx0TmFtZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXgg
ZmVmMzhkNy4uMmI2NDNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiU3VkZGVuVGVybWluYXRpb24u
aCIKICNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAKIC8vIEZvciBtZXRob2RzIHRoYXQgYXJlIG1lYW50IHRvIHN1cHBv
cnQgQVBJIGZyb20gdGhlIG1haW4gdGhyZWFkIC0gc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW50ZXJu
YWxseQpAQCAtODc5LDggKzg4MCw4IEBAIFN0cmluZyBJY29uRGF0YWJhc2U6OmRhdGFiYXNlUGF0
aCgpIGNvbnN0CiAKIFN0cmluZyBJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1l
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkZWZhdWx0
RGF0YWJhc2VGaWxlbmFtZSwgKEFTQ0lJTGl0ZXJhbCgiV2VicGFnZUljb25zLmRiIikpKTsKLSAg
ICByZXR1cm4gZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoQVNDSUlM
aXRlcmFsKCJXZWJwYWdlSWNvbnMuZGIiKSk7CisgICAgcmV0dXJuIGRlZmF1bHREYXRhYmFzZUZp
bGVuYW1lLmdldCgpLmlzb2xhdGVkQ29weSgpOwogfQogCiAvLyBVbmxpa2UgZ2V0T3JDcmVhdGVQ
YWdlVVJMUmVjb3JkKCksIGdldE9yQ3JlYXRlSWNvblJlY29yZCgpIGRvZXMgbm90IG1hcmsgdGhl
IGljb24gYXMgImludGVyZXN0ZWQgaW4gaW1wb3J0IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKaW5kZXggYTk3NGNkOC4uMTYzZWJiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgPHJ1
bnRpbWUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTI4NCw3ICsyODUsNyBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNl
dENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZAogdm9pZCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzOjp1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKQog
ewogICAgIC8vIElkZW50aWZ5IG91ciBvdmVycmlkZSBzdHlsZSBzaGVldCB3aXRoIGEgdW5pcXVl
IFVSTCAtIGEgbmV3IHNjaGVtZSBhbmQgYSBVVUlELgotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChVUkwsIGNhcHRpb25zU3R5bGVTaGVldFVSTCwgKFBhcnNlZFVSTFN0cmluZywg
InVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzRE
QzIzIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IGNhcHRpb25zU3R5bGVTaGVl
dFVSTChQYXJzZWRVUkxTdHJpbmcsICJ1c2VyLWNhcHRpb25zLW92ZXJyaWRlOjAxRjZBRjEyLUMz
QjAtNEY3MC1BRjVFLUEzRTAwMjM0REMyMyIpOwogCiAgICAgYXV0byYgcGFnZXMgPSBtX3BhZ2VH
cm91cC5wYWdlcygpOwogICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VzKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmlu
ZGV4IDZhMWU5YjcuLjcyY2FiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIK
ICNpbmNsdWRlICJWVFRDdWUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTI0Niw3ICsyNDcsNyBAQCBT
dHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zQmFja2dyb3VuZENT
UygpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgdGhlIHNhbWUg
YXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVkaWFDb250cm9scy5jc3MgZm9yIC13ZWJraXQtbWVk
aWEtdGV4dC10cmFjay1wYXN0LW5vZGVzCiAgICAgLy8gYW5kIHdlYmtpdC1tZWRpYS10ZXh0LXRy
YWNrLWZ1dHVyZS1ub2Rlcy4KLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ29s
b3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IsIChDb2xvcigwLCAwLCAwLCAwLjggKiAyNTUpKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbG9yPiBkZWZhdWx0QmFja2dyb3VuZENvbG9y
KDAsIDAsIDAsIDAuOCAqIDI1NSk7CiAKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3Ig
YmVoYXZpb3I7CiAKQEAgLTM0OSwxMCArMzUwLDEwIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRjo6Y29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBD
CiAKIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNUZXh0RWRn
ZUNTUygpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IFN0cmluZywgZWRnZVN0eWxlUmFpc2VkLCAoIiAtLjA1ZW0gLS4wNWVtIDAgIiwgU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZURlcHJlc3NlZCwgKCIgLjA1ZW0gLjA1ZW0gMCAiLCBT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlRHJvcFNoYWRvdywgKCIgLjA3NWVtIC4w
NzVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVVbmlmb3JtLCAoIiAu
MDNlbSAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0cmluZz4gZWRnZVN0eWxlUmFpc2VkKEFTQ0lJTGl0ZXJhbCgiIC0u
MDVlbSAtLjA1ZW0gMCAiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmlu
Zz4gZWRnZVN0eWxlRGVwcmVzc2VkKEFTQ0lJTGl0ZXJhbCgiIC4wNWVtIC4wNWVtIDAgIikpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGVkZ2VTdHlsZURyb3BTaGFk
b3coQVNDSUlMaXRlcmFsKCIgLjA3NWVtIC4wNzVlbSAwICIpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlZGdlU3R5bGVVbmlmb3JtKEFTQ0lJTGl0ZXJhbCgiIC4w
M2VtICIpKTsKIAogICAgIGJvb2wgdW51c2VkOwogICAgIENvbG9yIGNvbG9yID0gY2FwdGlvbnNU
ZXh0Q29sb3IodW51c2VkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcAppbmRleCBjNDYxMThkLi4wNTliYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24u
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTk5NCw3ICs5OTUsNyBAQCBib29s
IENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxp
c3REaXJlY3RpdmUqIGRpcmVjdAogCiBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2YVNj
cmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1i
ZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhl
Y3V0ZSBKYXZhU2NyaXB0IFVSTCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29u
dGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBl
eGVjdXRlIEphdmFTY3JpcHQgVVJMIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBD
b250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKICAgICByZXR1cm4gcmVwb3J0
aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5k
UmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZl
RGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkws
IGNvbnRleHRMaW5lLCB0cnVlKQogICAgICAgICA6IChtX3JlcG9ydE9ubHkgfHwgY2hlY2tJbmxp
bmUob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSkpOwpAQCAtMTAwMiw3ICsx
MDAzLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0
IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjoKIAogYm9vbCBDU1BEaXJlY3RpdmVMaXN0
OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25z
dCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVy
YWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBpbmxpbmUgZXZlbnQgaGFuZGxlciBiZWNhdXNlIGl0IHZp
b2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAi
KSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFT
Q0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIGlubGluZSBldmVudCBoYW5kbGVyIGJlY2F1
c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJl
Y3RpdmU6ICIpKTsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxp
bmVBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgp
KSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCB0cnVlKQogICAgICAg
ICA6IChtX3JlcG9ydE9ubHkgfHwgY2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2Ny
aXB0U3JjLmdldCgpKSkpOwpAQCAtMTAxMCw3ICsxMDExLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVM
aXN0OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBj
b25zdAogCiBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0
cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBj
b25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNv
bGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlw
dCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xp
Y3kgZGlyZWN0aXZlOiAiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNv
bnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIGlubGluZSBzY3Jp
cHQgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IGRpcmVjdGl2ZTogIikpOwogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQgPwogICAgICAgICBj
aGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRT
cmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIHRydWUp
IDoKICAgICAgICAgKG1fcmVwb3J0T25seSB8fCBjaGVja0lubGluZShvcGVyYXRpdmVEaXJlY3Rp
dmUobV9zY3JpcHRTcmMuZ2V0KCkpKSk7CkBAIC0xMDE4LDcgKzEwMTksNyBAQCBib29sIENTUERp
cmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwg
Y29uc3QgV1RGOjpPcgogCiBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRl
eHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdT
dGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gYXBwbHkgaW5saW5l
IHN0eWxlIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5
IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGFwcGx5IGlubGluZSBz
dHlsZSBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQ
b2xpY3kgZGlyZWN0aXZlOiAiKSk7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCA/CiAgICAgICAg
IGNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxl
U3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBmYWxz
ZSkgOgogICAgICAgICAobV9yZXBvcnRPbmx5IHx8IGNoZWNrSW5saW5lKG9wZXJhdGl2ZURpcmVj
dGl2ZShtX3N0eWxlU3JjLmdldCgpKSkpOwpAQCAtMTAyNiw3ICsxMDI3LDcgQEAgYm9vbCBDU1BE
aXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwg
Y29uc3QgV1RGOjpPcmQKIAogYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0V2YWwoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXZh
bHVhdGUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV2YWx1YXRl
IHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0
eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCA/CiAgICAg
ICAgIGNoZWNrRXZhbEFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3Jp
cHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFdURjo6T3JkaW5hbE51bWJl
cjo6YmVmb3JlRmlyc3QoKSwgc3RhdGUpIDoKICAgICAgICAgKG1fcmVwb3J0T25seSB8fCBjaGVj
a0V2YWwob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSkpOwpAQCAtMTY3Niwx
MiArMTY3NywxMiBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9u
KGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgUwogCiB2b2lkIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6cmVwb3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1l
KSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFs
bG93LCAoQVNDSUlMaXRlcmFsKCJhbGxvdyIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgb3B0aW9ucywgKEFTQ0lJTGl0ZXJhbCgib3B0aW9ucyIpKSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcG9saWN5VVJJLCAoQVND
SUlMaXRlcmFsKCJwb2xpY3ktdXJpIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBhbGxvd01lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlRoZSAnYWxsb3cnIGRp
cmVjdGl2ZSBoYXMgYmVlbiByZXBsYWNlZCB3aXRoICdkZWZhdWx0LXNyYycuIFBsZWFzZSB1c2Ug
dGhhdCBkaXJlY3RpdmUgaW5zdGVhZCwgYXMgJ2FsbG93JyBoYXMgbm8gZWZmZWN0LiIpKSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb3B0aW9uc01lc3NhZ2Us
IChBU0NJSUxpdGVyYWwoIlRoZSAnb3B0aW9ucycgZGlyZWN0aXZlIGhhcyBiZWVuIHJlcGxhY2Vk
IHdpdGggJ3Vuc2FmZS1pbmxpbmUnIGFuZCAndW5zYWZlLWV2YWwnIHNvdXJjZSBleHByZXNzaW9u
cyBmb3IgdGhlICdzY3JpcHQtc3JjJyBhbmQgJ3N0eWxlLXNyYycgZGlyZWN0aXZlcy4gUGxlYXNl
IHVzZSB0aG9zZSBkaXJlY3RpdmVzIGluc3RlYWQsIGFzICdvcHRpb25zJyBoYXMgbm8gZWZmZWN0
LiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcG9saWN5
VVJJTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiVGhlICdwb2xpY3ktdXJpJyBkaXJlY3RpdmUgaGFz
IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uLiBQbGVhc2Ugc3BlY2lmeSBhIGNv
bXBsZXRlIHBvbGljeSB2aWEgdGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGhlYWRlci4iKSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFsbG93KEFTQ0lJTGl0ZXJhbCgi
YWxsb3ciKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gb3B0aW9ucyhBU0NJ
SUxpdGVyYWwoIm9wdGlvbnMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
cG9saWN5VVJJKEFTQ0lJTGl0ZXJhbCgicG9saWN5LXVyaSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBhbGxvd01lc3NhZ2UoQVNDSUlMaXRlcmFsKCJUaGUgJ2FsbG93JyBk
aXJlY3RpdmUgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCAnZGVmYXVsdC1zcmMnLiBQbGVhc2UgdXNl
IHRoYXQgZGlyZWN0aXZlIGluc3RlYWQsIGFzICdhbGxvdycgaGFzIG5vIGVmZmVjdC4iKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gb3B0aW9uc01lc3NhZ2UoQVNDSUlMaXRl
cmFsKCJUaGUgJ29wdGlvbnMnIGRpcmVjdGl2ZSBoYXMgYmVlbiByZXBsYWNlZCB3aXRoICd1bnNh
ZmUtaW5saW5lJyBhbmQgJ3Vuc2FmZS1ldmFsJyBzb3VyY2UgZXhwcmVzc2lvbnMgZm9yIHRoZSAn
c2NyaXB0LXNyYycgYW5kICdzdHlsZS1zcmMnIGRpcmVjdGl2ZXMuIFBsZWFzZSB1c2UgdGhvc2Ug
ZGlyZWN0aXZlcyBpbnN0ZWFkLCBhcyAnb3B0aW9ucycgaGFzIG5vIGVmZmVjdC4iKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcG9saWN5VVJJTWVzc2FnZShBU0NJSUxpdGVy
YWwoIlRoZSAncG9saWN5LXVyaScgZGlyZWN0aXZlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUg
c3BlY2lmaWNhdGlvbi4gUGxlYXNlIHNwZWNpZnkgYSBjb21wbGV0ZSBwb2xpY3kgdmlhIHRoZSBD
b250ZW50LVNlY3VyaXR5LVBvbGljeSBoZWFkZXIuIikpOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIGFsbG93KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAppbmRleCA5OWE5ZjVhLi44NjJiOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCkBAIC0xMTAsNiArMTEwLDcgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpAQCAtMTg1LDEzICsxODYsMTMgQEAgdHlwZWRlZiBIYXNoQ291bnRlZFNldDxET01XaW5k
b3cqPiBET01XaW5kb3dTZXQ7CiAKIHN0YXRpYyBET01XaW5kb3dTZXQmIHdpbmRvd3NXaXRoVW5s
b2FkRXZlbnRMaXN0ZW5lcnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChET01XaW5kb3dTZXQsIHdpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMsICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE9NV2luZG93U2V0PiB3aW5kb3dzV2l0aFVubG9hZEV2
ZW50TGlzdGVuZXJzOwogICAgIHJldHVybiB3aW5kb3dzV2l0aFVubG9hZEV2ZW50TGlzdGVuZXJz
OwogfQogCiBzdGF0aWMgRE9NV2luZG93U2V0JiB3aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50
TGlzdGVuZXJzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRE9NV2lu
ZG93U2V0LCB3aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzLCAoKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPERPTVdpbmRvd1NldD4gd2luZG93c1dpdGhCZWZvcmVVbmxv
YWRFdmVudExpc3RlbmVyczsKICAgICByZXR1cm4gd2luZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVu
dExpc3RlbmVyczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDFj
ZTdiNTQuLjkxODJkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTk2
LDYgKzk2LDcgQEAKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgpAQCAtNDAxLDcgKzQwMiw3IEBAIEV2ZW50SGFuZGxlcjo6fkV2ZW50SGFuZGxlcigpCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKIERyYWdTdGF0ZSYgRXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEcmFnU3RhdGUsIHN0YXRl
LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERyYWdTdGF0ZT4gc3RhdGU7CiAgICAg
cmV0dXJuIHN0YXRlOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0zMDc2
LDEwICszMDc3LDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQmIGluaXRpYWxLZXlFdmVudCkKIAogc3RhdGljIEZvY3VzRGlyZWN0aW9u
IGZvY3VzRGlyZWN0aW9uRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYga2V5SWRlbnRpZmllcikK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBEb3du
LCAoIkRvd24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgVXAsICgiVXAiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgTGVmdCwgKCJMZWZ0IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIFJpZ2h0LCAoIlJpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IERv
d24oIkRvd24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBVcCgiVXAiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBMZWZ0KCJMZWZ0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gUmlnaHQoIlJpZ2h0IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBGb2N1c0RpcmVjdGlvbiBy
ZXRWYWwgPSBGb2N1c0RpcmVjdGlvbk5vbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYjc2
MzM2OC4uNzQwZTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBz
dGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAgLy8gUkVWSUVXLSB2ZXJzaW9uIG9mIHRoaXMgY2Fs
bCBpbiBGcmFtZU1hYy5tbSBjYWNoZXMgYmFzZWQgb24gdGhlIE5TQXJyYXkgcHRycyBiZWluZwog
ICAgIC8vIHRoZSBzYW1lIGFjcm9zcyBjYWxscy4gIFdlIGNhbid0IGRvIHRoYXQuCiAKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lv
biwgd29yZFJlZ0V4cCwgKCJcXHciLCBUZXh0Q2FzZVNlbnNpdGl2ZSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJc
XHciLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7CiAgICAgU3RyaW5nQnVpbGRlciBwYXR0ZXJuOwogICAg
IHBhdHRlcm4uYXBwZW5kKCcoJyk7CiAgICAgdW5zaWduZWQgaW50IG51bUxhYmVscyA9IGxhYmVs
cy5zaXplKCk7CkBAIC0zMTcsOCArMzE3LDggQEAgc3RhdGljIEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24gY3JlYXRlUmVnRXhwRm9yTGFiZWxzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogICAg
ICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IGZhbHNlOwogICAgICAgICBib29sIGVuZHNX
aXRoV29yZENoYXIgPSBmYWxzZTsKICAgICAgICAgaWYgKGxhYmVsLmxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICBzdGFydHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLm1hdGNoKGxhYmVsLnN1YnN0
cmluZygwLCAxKSkgPj0gMDsKLSAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXIgPSB3b3JkUmVn
RXhwLm1hdGNoKGxhYmVsLnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOwor
ICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChs
YWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7CisgICAgICAgICAgICBlbmRzV2l0aFdvcmRDaGFy
ID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcobGFiZWwubGVuZ3RoKCkg
LSAxLCAxKSkgPj0gMDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yQmFzZS5jcHAKaW5kZXggMGY1ZTJiZS4uMGJlMmUxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTmF2
aWdhdG9yQmFzZS5oIgogCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogI2lmIE9TKExJTlVYKQpAQCAtOTMsNyArOTQsNyBAQCBTdHJpbmcgTmF2aWdhdG9yQmFz
ZTo6cGxhdGZvcm0oKSBjb25zdAogICAgIGlmICghU3RyaW5nKFdFQkNPUkVfTkFWSUdBVE9SX1BM
QVRGT1JNKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBXRUJDT1JFX05BVklHQVRPUl9QTEFU
Rk9STTsKICAgICBzdHJ1Y3QgdXRzbmFtZSBvc25hbWU7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgcGxhdGZvcm1OYW1lLCAodW5hbWUoJm9zbmFtZSkgPj0gMCA/
IFN0cmluZyhvc25hbWUuc3lzbmFtZSkgKyBTdHJpbmcoIiAiKSArIFN0cmluZyhvc25hbWUubWFj
aGluZSkgOiBlbXB0eVN0cmluZygpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gcGxhdGZvcm1OYW1lKHVuYW1lKCZvc25hbWUpID49IDAgPyBTdHJpbmcob3NuYW1lLnN5c25h
bWUpICsgU3RyaW5nKCIgIikgKyBTdHJpbmcob3NuYW1lLm1hY2hpbmUpIDogZW1wdHlTdHJpbmco
KSk7CiAgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKICNlbHNlCiAgICAgcmV0dXJuIFdFQkNPUkVf
TkFWSUdBVE9SX1BMQVRGT1JNOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
VmlzaWJpbGl0eVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2liaWxpdHlT
dGF0ZS5jcHAKaW5kZXggZjZjY2MxNC4uNzQ1MGMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwCkBAIC0zMSwxNCArMzEsMTUgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCiAKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgcGFn
ZVZpc2liaWxpdHlTdGF0ZVN0cmluZyhQYWdlVmlzaWJpbGl0eVN0YXRlIHN0YXRlKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHZpc2libGUsIChB
U0NJSUxpdGVyYWwoInZpc2libGUiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIGhpZGRlbiwgKEFTQ0lJTGl0ZXJhbCgiaGlkZGVuIikpKTsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBwcmVyZW5kZXIs
IChBU0NJSUxpdGVyYWwoInByZXJlbmRlciIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gdmlzaWJsZShBU0NJSUxpdGVyYWwoInZpc2libGUiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gaGlkZGVuKEFTQ0lJTGl0ZXJhbCgiaGlk
ZGVuIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHByZXJlbmRl
cihBU0NJSUxpdGVyYWwoInByZXJlbmRlciIpKTsKIAogICAgIHN3aXRjaCAoc3RhdGUpIHsKICAg
ICBjYXNlIFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmNwcAppbmRleCBlMzk4MTRiLi4zYmQzMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk9yaWdpbkFj
Y2Vzc0VudHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxtZW1v
cnk+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3ICs0Niw3IEBAIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxPcmlnaW5BY2Nlc3NXaGl0ZUxp
c3Q+PiBPcmlnaW5BY2Nlc3NNYXA7CiAKIHN0YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFj
Y2Vzc01hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE9yaWdpbkFj
Y2Vzc01hcCwgb3JpZ2luQWNjZXNzTWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PE9yaWdpbkFjY2Vzc01hcD4gb3JpZ2luQWNjZXNzTWFwOwogICAgIHJldHVybiBvcmlnaW5BY2Nl
c3NNYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmNwcAppbmRleCAyZWExOGVjLi42NTY5Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTYyLDcgKzYzLDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRl
cm46Om1hdGNoZXNQYXR0ZXJucyhjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4K
IAogYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVy
bikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBz
Y2hlbWVTZXBhcmF0b3IsIChBU0NJSUxpdGVyYWwoIjovLyIpKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2NoZW1lU2VwYXJhdG9yKEFTQ0lJTGl0ZXJhbCgiOi8v
IikpOwogCiAgICAgc2l6ZV90IHNjaGVtZUVuZFBvcyA9IHBhdHRlcm4uZmluZChzY2hlbWVTZXBh
cmF0b3IpOwogICAgIGlmIChzY2hlbWVFbmRQb3MgPT0gbm90Rm91bmQpCkBAIC03MCw3ICs3MSw3
IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRl
cm4pCiAKICAgICBtX3NjaGVtZSA9IHBhdHRlcm4ubGVmdChzY2hlbWVFbmRQb3MpOwogCi0gICAg
dW5zaWduZWQgaG9zdFN0YXJ0UG9zID0gc2NoZW1lRW5kUG9zICsgc2NoZW1lU2VwYXJhdG9yLmxl
bmd0aCgpOworICAgIHVuc2lnbmVkIGhvc3RTdGFydFBvcyA9IHNjaGVtZUVuZFBvcyArIHNjaGVt
ZVNlcGFyYXRvci5nZXQoKS5sZW5ndGgoKTsKICAgICBpZiAoaG9zdFN0YXJ0UG9zID49IHBhdHRl
cm4ubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDc4
N2YwYTAuLjQ3NDUxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJDb21wYXJpc29uLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTY0NSwxOSArNjQ2LDE4IEBAIHN0YXRpYyBpbmxpbmUgc2l6
ZV90IHNoYWRvd0xpc3RMZW5ndGgoY29uc3QgU2hhZG93RGF0YSogc2hhZG93KQogCiBzdGF0aWMg
aW5saW5lIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvd0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRvd0Rh
dGEqIHNyY1NoYWRvdywgY29uc3QgU2hhZG93RGF0YSogb3RoZXJTaGFkb3cpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFNoYWRvd0RhdGEsIGRlZmF1bHRTaGFkb3dEYXRh
LCAoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFsLCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFNoYWRvd0RhdGEsIGRlZmF1bHRJ
bnNldFNoYWRvd0RhdGEsIChJbnRQb2ludCgpLCAwLCAwLCBJbnNldCwgZmFsc2UsIENvbG9yOjp0
cmFuc3BhcmVudCkpOwotCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFNoYWRv
d0RhdGEsIGRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgTm9y
bWFsLCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YSwg
KEludFBvaW50KCksIDAsIDAsIEluc2V0LCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdFNoYWRvd0RhdGEoSW50
UG9pbnQoKSwgMCwgMCwgTm9ybWFsLCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0U2hhZG93RGF0YShJ
bnRQb2ludCgpLCAwLCAwLCBJbnNldCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRXZWJLaXRCb3hTaGFkb3dE
YXRhKEludFBvaW50KCksIDAsIDAsIE5vcm1hbCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50KTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0V2ViS2l0
Qm94U2hhZG93RGF0YShJbnRQb2ludCgpLCAwLCAwLCBJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5z
cGFyZW50KTsKIAogICAgIGlmIChzcmNTaGFkb3cpCiAgICAgICAgIHJldHVybiBzcmNTaGFkb3c7
CiAKICAgICBpZiAob3RoZXJTaGFkb3ctPnN0eWxlKCkgPT0gSW5zZXQpCi0gICAgICAgIHJldHVy
biBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/ICZkZWZhdWx0SW5zZXRXZWJLaXRC
b3hTaGFkb3dEYXRhIDogJmRlZmF1bHRJbnNldFNoYWRvd0RhdGE7CisgICAgICAgIHJldHVybiBv
dGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/ICZkZWZhdWx0SW5zZXRXZWJLaXRCb3hT
aGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRJbnNldFNoYWRvd0RhdGEuZ2V0KCk7CiAKLSAgICBy
ZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVsdFdlYktpdEJv
eFNoYWRvd0RhdGEgOiAmZGVmYXVsdFNoYWRvd0RhdGE7CisgICAgcmV0dXJuIG90aGVyU2hhZG93
LT5pc1dlYmtpdEJveFNoYWRvdygpID8gJmRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgp
IDogJmRlZmF1bHRTaGFkb3dEYXRhLmdldCgpOwogfQogCiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJT
aGFkb3cgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAppbmRl
eCBiODIyMjU2Li42NTUxZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMjEsNyArMjIyLDcg
QEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5k
ZXJFbGVtZW50KiByZW5kZXJlciwgUmVuZGUKICAgICAgICAgLy8gVG9zcyB0aGUgYW5pbWF0aW9u
IG9yZGVyIG1hcC4KICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbk9yZGVyTWFwLmNsZWFyKCk7
CiAKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgbm9uZSwgKCJub25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBub25l
KCJub25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIAog
ICAgICAgICAvLyBOb3cgbWFyayBhbnkgc3RpbGwgYWN0aXZlIGFuaW1hdGlvbnMgYXMgYWN0aXZl
IGFuZCBhZGQgYW55IG5ldyBhbmltYXRpb25zLgogICAgICAgICBpZiAodGFyZ2V0U3R5bGUtPmFu
aW1hdGlvbnMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAKaW5kZXggOTM1OTNhZC4u
NjBhNjE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0xODksMjU5ICsxOTAsMjU5IEBAIFBsYXRmb3JtQ3Vyc29yIEN1
cnNvcjo6cGxhdGZvcm1DdXJzb3IoKSBjb25zdAogCiBjb25zdCBDdXJzb3ImIHBvaW50ZXJDdXJz
b3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChD
dXJzb3I6OlBvaW50ZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1
cnNvcjo6UG9pbnRlcik7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY3Jvc3ND
dXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMs
IChDdXJzb3I6OkNyb3NzKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhD
dXJzb3I6OkNyb3NzKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBoYW5kQ3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpIYW5kKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OkhhbmQpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG1vdmVDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6Ok1vdmUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6
TW92ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgdmVydGljYWxUZXh0Q3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpWZXJ0aWNhbFRleHQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29y
PiBjKEN1cnNvcjo6VmVydGljYWxUZXh0KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vy
c29yJiBjZWxsQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Q3Vyc29yLCBjLCAoQ3Vyc29yOjpDZWxsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1
cnNvcj4gYyhDdXJzb3I6OkNlbGwpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3Im
IGNvbnRleHRNZW51Q3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpDb250ZXh0TWVudSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpDb250ZXh0TWVudSk7CiAgICAgcmV0dXJuIGM7CiB9
CiAKIGNvbnN0IEN1cnNvciYgYWxpYXNDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkFsaWFzKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkFsaWFzKTsKICAgICByZXR1cm4gYzsKIH0K
IAogY29uc3QgQ3Vyc29yJiB6b29tSW5DdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Olpvb21JbikpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpab29tSW4pOwogICAgIHJldHVybiBjOwog
fQogCiBjb25zdCBDdXJzb3ImIHpvb21PdXRDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Olpvb21PdXQpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Wm9vbU91dCk7CiAgICAgcmV0dXJu
IGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY29weUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Q29weSkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpDb3B5KTsKICAgICByZXR1cm4gYzsK
IH0KIAogY29uc3QgQ3Vyc29yJiBub25lQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb25lKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vbmUpOwogICAgIHJldHVybiBjOwogfQog
CiBjb25zdCBDdXJzb3ImIHByb2dyZXNzQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpQcm9ncmVzcykpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpQcm9ncmVzcyk7CiAgICAgcmV0dXJu
IGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9Ecm9wQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb0Ryb3ApKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9Ecm9wKTsKICAgICByZXR1
cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3RBbGxvd2VkQ3Vyc29yKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3RBbGxvd2Vk
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vdEFsbG93
ZWQpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGlCZWFtQ3Vyc29yKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpJ
QmVhbSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpJQmVh
bSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgd2FpdEN1cnNvcigpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6V2Fp
dCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpXYWl0KTsK
ICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBoZWxwQ3Vyc29yKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpIZWxwKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkhlbHApOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGVhc3RSZXNpemVDdXJzb3IoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkVhc3RS
ZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6RWFz
dFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9ydGhSZXNpemVD
dXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMs
IChDdXJzb3I6Ok5vcnRoUmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNv
cj4gYyhDdXJzb3I6Ok5vcnRoUmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vy
c29yJiBub3J0aEVhc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoRWFzdFJlc2l6ZSkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3J0aEVhc3RSZXNpemUpOwog
ICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vcnRoV2VzdFJlc2l6ZUN1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6Tm9ydGhXZXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4g
YyhDdXJzb3I6Ok5vcnRoV2VzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgc291dGhSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlNvdXRoUmVzaXplKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRoUmVzaXplKTsKICAgICByZXR1cm4g
YzsKIH0KIAogY29uc3QgQ3Vyc29yJiBzb3V0aEVhc3RSZXNpemVDdXJzb3IoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlNvdXRoRWFz
dFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpT
b3V0aEVhc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNvdXRo
V2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEN1cnNvciwgYywgKEN1cnNvcjo6U291dGhXZXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRoV2VzdFJlc2l6ZSk7CiAgICAgcmV0dXJu
IGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgd2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6V2VzdFJlc2l6ZSkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpXZXN0UmVzaXpl
KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3J0aFNvdXRoUmVzaXplQ3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpOb3J0aFNvdXRoUmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1
cnNvcj4gYyhDdXJzb3I6Ok5vcnRoU291dGhSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBj
b25zdCBDdXJzb3ImIGVhc3RXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpFYXN0V2VzdFJlc2l6ZSkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpFYXN0V2VzdFJlc2l6
ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9ydGhFYXN0U291dGhXZXN0
UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vy
c29yLCBjLCAoQ3Vyc29yOjpOb3J0aEVhc3RTb3V0aFdlc3RSZXNpemUpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Tm9ydGhFYXN0U291dGhXZXN0UmVzaXpl
KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3J0aFdlc3RTb3V0aEVhc3RS
ZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJz
b3IsIGMsIChDdXJzb3I6Ok5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3J0aFdlc3RTb3V0aEVhc3RSZXNpemUp
OwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNvbHVtblJlc2l6ZUN1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6Q29sdW1uUmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhD
dXJzb3I6OkNvbHVtblJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYg
cm93UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Q3Vyc29yLCBjLCAoQ3Vyc29yOjpSb3dSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Um93UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiBtaWRkbGVQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpNaWRkbGVQYW5uaW5nKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok1pZGRsZVBhbm5pbmcpOwog
ICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBlYXN0UGFubmluZ0N1cnNvcigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNv
cjo6RWFzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1
cnNvcjo6RWFzdFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29y
JiBub3J0aFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoUGFubmluZykpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpOb3J0aFBhbm5pbmcpOwogICAgIHJldHVybiBj
OwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBub3J0aEVhc3RQYW5uaW5nQ3Vyc29yKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0
aEVhc3RQYW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6Ok5vcnRoRWFzdFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vy
c29yJiBub3J0aFdlc3RQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aFdlc3RQYW5uaW5nKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vcnRoV2VzdFBhbm5pbmcp
OwogICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBzb3V0aFBhbm5pbmdDdXJz
b3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChD
dXJzb3I6OlNvdXRoUGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+
IGMoQ3Vyc29yOjpTb3V0aFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3Qg
Q3Vyc29yJiBzb3V0aEVhc3RQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpTb3V0aEVhc3RQYW5uaW5nKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRoRWFzdFBhbm5p
bmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBzb3V0aFdlc3RQYW5u
aW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29y
LCBjLCAoQ3Vyc29yOjpTb3V0aFdlc3RQYW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRoV2VzdFBhbm5pbmcpOwogICAgIHJldHVybiBjOwog
fQogICAgIAogY29uc3QgQ3Vyc29yJiB3ZXN0UGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6V2VzdFBhbm5pbmcp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6V2VzdFBhbm5p
bmcpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGdyYWJDdXJzb3IoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Okdy
YWIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6R3JhYik7
CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgZ3JhYmJpbmdDdXJzb3IoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Okdy
YWJiaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Okdy
YWJiaW5nKTsKICAgICByZXR1cm4gYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGFuZ3VhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2Uu
Y3BwCmluZGV4IDU4OTE3ZmYuLjY1NTc4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xhbmd1YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFn
ZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpCiAKIHN0YXRp
YyBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8U3RyaW5nPiwgb3ZlcnJpZGUsICgp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+IG92ZXJyaWRlOwog
ICAgIHJldHVybiBvdmVycmlkZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2Nh
bGl6ZWRTdHJpbmdzLmNwcAppbmRleCA5M2QyZTkwLi43OTUxZmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIK
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKICNpZiBVU0Uo
Q0YpCkBAIC03OSwxMSArODAsMTEgQEAgc3RhdGljIFN0cmluZyB0cnVuY2F0ZWRTdHJpbmdGb3JM
b29rdXBNZW51SXRlbShjb25zdCBTdHJpbmcmIG9yaWdpbmFsKQogCiAgICAgLy8gVHJ1bmNhdGUg
dGhlIHN0cmluZyBpZiBpdCdzIHRvbyBsb25nLiBUaGlzIGlzIGluIGNvbnNpc3RlbmN5IHdpdGgg
QXBwS2l0LgogICAgIHVuc2lnbmVkIG1heE51bWJlck9mR3JhcGhlbWVDbHVzdGVyc0luTG9va3Vw
TWVudUl0ZW0gPSAyNDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBlbGxpcHNpcywgKCZob3Jpem9udGFsRWxsaXBzaXMsIDEpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBlbGxpcHNpcygmaG9yaXpvbnRhbEVsbGlwc2lzLCAxKTsKIAogICAg
IFN0cmluZyB0cmltbWVkID0gb3JpZ2luYWwuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFyYWN0ZXJzID0gbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyh0
cmltbWVkLCBtYXhOdW1iZXJPZkdyYXBoZW1lQ2x1c3RlcnNJbkxvb2t1cE1lbnVJdGVtKTsKLSAg
ICByZXR1cm4gbnVtYmVyT2ZDaGFyYWN0ZXJzID09IHRyaW1tZWQubGVuZ3RoKCkgPyB0cmltbWVk
IDogdHJpbW1lZC5sZWZ0KG51bWJlck9mQ2hhcmFjdGVycykgKyBlbGxpcHNpczsKKyAgICByZXR1
cm4gbnVtYmVyT2ZDaGFyYWN0ZXJzID09IHRyaW1tZWQubGVuZ3RoKCkgPyB0cmltbWVkIDogdHJp
bW1lZC5sZWZ0KG51bWJlck9mQ2hhcmFjdGVycykgKyBlbGxpcHNpcy5nZXQoKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4
IDEyN2NjNWEuLjYyMGYxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtMzUyLDE2ICszNTMs
MTYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCkK
IAogc3RhdGljIE1lZGlhTUlNRVR5cGVNYXAmIG1lZGlhTUlNRVR5cGVNYXAoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNZWRpYU1JTUVUeXBlTWFwLCBtZWRpYU1JTUVU
eXBlRm9yRXh0ZW5zaW9uTWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1lZGlh
TUlNRVR5cGVNYXA+IG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXA7CiAKLSAgICBpZiAoIW1l
ZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuaXNFbXB0eSgpKQorICAgIGlmICghbWVkaWFNSU1F
VHlwZUZvckV4dGVuc2lvbk1hcC5nZXQoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtZWRp
YU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwOwogCiAgICAgY29uc3QgdW5zaWduZWQgbnVtUGFpcnMg
PSBzaXplb2YoY29tbW9uTWVkaWFUeXBlcykgLyBzaXplb2YoY29tbW9uTWVkaWFUeXBlc1swXSk7
CiAgICAgZm9yICh1bnNpZ25lZCBuZHggPSAwOyBuZHggPCBudW1QYWlyczsgKytuZHgpIHsKIAot
ICAgICAgICBpZiAobWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5jb250YWlucyhjb21tb25N
ZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uKSkKLSAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVGb3JF
eHRlbnNpb25NYXAuZ2V0KGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24pLT5hcHBlbmQo
Y29tbW9uTWVkaWFUeXBlc1tuZHhdLnR5cGUpOworICAgICAgICBpZiAobWVkaWFNSU1FVHlwZUZv
ckV4dGVuc2lvbk1hcC5nZXQoKS5jb250YWlucyhjb21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5z
aW9uKSkKKyAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuZ2V0KCkuZ2V0
KGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRlbnNpb24pLT5hcHBlbmQoY29tbW9uTWVkaWFUeXBl
c1tuZHhdLnR5cGUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
KiBzeW5vbnltcyA9IG5ldyBWZWN0b3I8U3RyaW5nPjsKIApAQCAtMzcxLDcgKzM3Miw3IEBAIHN0
YXRpYyBNZWRpYU1JTUVUeXBlTWFwJiBtZWRpYU1JTUVUeXBlTWFwKCkKICAgICAgICAgICAgIGlm
ICghc3lzdGVtVHlwZS5pc0VtcHR5KCkgJiYgY29tbW9uTWVkaWFUeXBlc1tuZHhdLnR5cGUgIT0g
c3lzdGVtVHlwZSkKICAgICAgICAgICAgICAgICBzeW5vbnltcy0+YXBwZW5kKHN5c3RlbVR5cGUp
OwogICAgICAgICAgICAgc3lub255bXMtPmFwcGVuZChjb21tb25NZWRpYVR5cGVzW25keF0udHlw
ZSk7Ci0gICAgICAgICAgICBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmFkZChjb21tb25N
ZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uLCBzeW5vbnltcyk7CisgICAgICAgICAgICBtZWRpYU1J
TUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldCgpLmFkZChjb21tb25NZWRpYVR5cGVzW25keF0uZXh0
ZW5zaW9uLCBzeW5vbnltcyk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY0Miw3ICs2NDMsNyBA
QCBIYXNoU2V0PFN0cmluZz4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFVuc3VwcG9ydGVkVGV4dE1J
TUVUeXBlcygpCiAKIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1JTUVUeXBlKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkZWZhdWx0TUlNRVR5cGUs
IChBU0NJSUxpdGVyYWwoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gZGVmYXVsdE1JTUVUeXBlKEFTQ0lJTGl0ZXJh
bCgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIikpOwogICAgIHJldHVybiBkZWZhdWx0TUlNRVR5
cGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAppbmRl
eCBhOGIwYTExLi5iNjQ2NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgVVJMU2NoZW1lc01hcCYgbG9jYWxVUkxTY2hlbWVzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgbG9jYWxTY2hlbWVzLCAoKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGxvY2FsU2NoZW1lczsKIAotICAg
IGlmIChsb2NhbFNjaGVtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxvY2FsU2NoZW1lcy5hZGQo
ImZpbGUiKTsKKyAgICBpZiAobG9jYWxTY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAg
ICBsb2NhbFNjaGVtZXMuZ2V0KCkuYWRkKCJmaWxlIik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoImFwcGxld2ViZGF0YSIpOworICAgICAgICBsb2NhbFNj
aGVtZXMuZ2V0KCkuYWRkKCJhcHBsZXdlYmRhdGEiKTsKICNlbmRpZgogICAgIH0KIApAQCAtNTAs
MjEgKzUwLDIxIEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBsb2NhbFVSTFNjaGVtZXMoKQogCiBz
dGF0aWMgVVJMU2NoZW1lc01hcCYgZGlzcGxheUlzb2xhdGVkVVJMU2NoZW1lcygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIGRpc3BsYXlJc29s
YXRlZFNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01h
cD4gZGlzcGxheUlzb2xhdGVkU2NoZW1lczsKICAgICByZXR1cm4gZGlzcGxheUlzb2xhdGVkU2No
ZW1lczsKIH0KIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNlY3VyZVNjaGVtZXMoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBzZWN1cmVTY2hl
bWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNlY3Vy
ZVNjaGVtZXM7CiAKLSAgICBpZiAoc2VjdXJlU2NoZW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
c2VjdXJlU2NoZW1lcy5hZGQoImh0dHBzIik7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuYWRkKCJh
Ym91dCIpOwotICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZCgiZGF0YSIpOwotICAgICAgICBzZWN1
cmVTY2hlbWVzLmFkZCgid3NzIik7CisgICAgaWYgKHNlY3VyZVNjaGVtZXMuZ2V0KCkuaXNFbXB0
eSgpKSB7CisgICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJodHRwcyIpOworICAgICAg
ICBzZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgiYWJvdXQiKTsKKyAgICAgICAgc2VjdXJlU2NoZW1l
cy5nZXQoKS5hZGQoImRhdGEiKTsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoIndz
cyIpOwogI2lmIFVTRShRVUlDS19MT09LKQotICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZChRTFBy
ZXZpZXdQcm90b2NvbCgpKTsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoUUxQcmV2
aWV3UHJvdG9jb2woKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTczLDE0ICs3MywxNCBAQCBzdGF0
aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFw
JiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMsICgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lc1dpdGhVbmlx
dWVPcmlnaW5zOwogCi0gICAgaWYgKHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZCgiYWJvdXQiKTsKLSAgICAg
ICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZCgiamF2YXNjcmlwdCIpOworICAgIGlmIChz
Y2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5hZGQoImFib3V0Iik7CisgICAgICAgIHNjaGVtZXNX
aXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5hZGQoImphdmFzY3JpcHQiKTsKICAgICAgICAgLy8gVGhp
cyBpcyBhIHdpbGxmdWwgdmlvbGF0aW9uIG9mIEhUTUw1LgogICAgICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODg1Ci0gICAgICAgIHNjaGVtZXNX
aXRoVW5pcXVlT3JpZ2lucy5hZGQoImRhdGEiKTsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVP
cmlnaW5zLmdldCgpLmFkZCgiZGF0YSIpOwogICAgIH0KIAogICAgIHJldHVybiBzY2hlbWVzV2l0
aFVuaXF1ZU9yaWdpbnM7CkBAIC04OCwyNiArODgsMjYgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAm
IHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBlbXB0
eURvY3VtZW50U2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFVSTFNjaGVtZXNNYXAsIGVtcHR5RG9jdW1lbnRTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGVtcHR5RG9jdW1lbnRTY2hlbWVzOwogCi0gICAg
aWYgKGVtcHR5RG9jdW1lbnRTY2hlbWVzLmlzRW1wdHkoKSkKLSAgICAgICAgZW1wdHlEb2N1bWVu
dFNjaGVtZXMuYWRkKCJhYm91dCIpOworICAgIGlmIChlbXB0eURvY3VtZW50U2NoZW1lcy5nZXQo
KS5pc0VtcHR5KCkpCisgICAgICAgIGVtcHR5RG9jdW1lbnRTY2hlbWVzLmdldCgpLmFkZCgiYWJv
dXQiKTsKIAogICAgIHJldHVybiBlbXB0eURvY3VtZW50U2NoZW1lczsKIH0KIAogc3RhdGljIEhh
c2hTZXQ8U3RyaW5nPiYgc2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBzY2hl
bWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gc2No
ZW1lczsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNh
bkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0
U2NoZW1lcywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBj
YW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXM7CiAKLSAgICBpZiAoY2FuRGlzcGxheU9u
bHlJZkNhblJlcXVlc3RTY2hlbWVzLmlzRW1wdHkoKSkgewotICAgICAgICBjYW5EaXNwbGF5T25s
eUlmQ2FuUmVxdWVzdFNjaGVtZXMuYWRkKCJibG9iIik7CisgICAgaWYgKGNhbkRpc3BsYXlPbmx5
SWZDYW5SZXF1ZXN0U2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2FuRGlzcGxh
eU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLmdldCgpLmFkZCgiYmxvYiIpOwogICAgIH0KIAogICAg
IHJldHVybiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXM7CkBAIC0xMTUsNyArMTE1
LDcgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2No
ZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxz
U2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVt
ZXNNYXAsIG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzLCAoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNT
Y2hlbWVzOwogICAgIHJldHVybiBub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lczsKIH0K
IApAQCAtMTQyLDI0ICsxNDIsMjQgQEAgY29uc3QgVVJMU2NoZW1lc01hcCYgU2NoZW1lUmVnaXN0
cnk6OmxvY2FsU2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzQWxsb3dp
bmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZygpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIHNjaGVtZXNBbGxvd2luZ0xvY2Fs
U3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0lu
UHJpdmF0ZUJyb3dzaW5nOwogICAgIHJldHVybiBzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VB
Y2Nlc3NJblByaXZhdGVCcm93c2luZzsKIH0KIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVt
ZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBzY2hlbWVzQWxsb3dpbmdE
YXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2
YXRlQnJvd3Npbmc7CiAgICAgcmV0dXJuIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Q
cml2YXRlQnJvd3Npbmc7CiB9CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNj
aGVtZXMoKQogewogICAgIC8vIEZJWE1FOiBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzE2MAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hl
bWVzTWFwLCBDT1JTRW5hYmxlZFNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VVJMU2NoZW1lc01hcD4gQ09SU0VuYWJsZWRTY2hlbWVzOwogCi0gICAgaWYgKENPUlNFbmFi
bGVkU2NoZW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmFkZCgi
aHR0cCIpOwotICAgICAgICBDT1JTRW5hYmxlZFNjaGVtZXMuYWRkKCJodHRwcyIpOworICAgIGlm
IChDT1JTRW5hYmxlZFNjaGVtZXMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIENPUlNFbmFi
bGVkU2NoZW1lcy5nZXQoKS5hZGQoImh0dHAiKTsKKyAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVz
LmdldCgpLmFkZCgiaHR0cHMiKTsKICAgICB9CiAKICAgICByZXR1cm4gQ09SU0VuYWJsZWRTY2hl
bWVzOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBDT1JTRW5hYmxl
ZFNjaGVtZXMoKQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgQ29udGVudFNlY3VyaXR5UG9saWN5
QnlwYXNzaW5nU2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFVSTFNjaGVtZXNNYXAsIHNjaGVtZXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VVJMU2NoZW1lc01hcD4gc2NoZW1lczsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IGQ3MzdlMmQuLjQzOGYz
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTI4
LDEzICsyOCwxNCBAQAogCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVNb2NrLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTY3JvbGxiYXJUaGVtZSYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkK
IHsKICAgICBpZiAoU2V0dGluZ3M6Om1vY2tTY3JvbGxiYXJzRW5hYmxlZCgpKSB7Ci0gICAgICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTY3JvbGxiYXJUaGVtZU1vY2ssIG1vY2tU
aGVtZSwgKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2Nyb2xsYmFyVGhlbWVN
b2NrPiBtb2NrVGhlbWU7CiAgICAgICAgIHJldHVybiBtb2NrVGhlbWU7CiAgICAgfQogICAgIHJl
dHVybiBuYXRpdmVUaGVtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKaW5kZXggNGQxYzc3YS4u
ODg5Yjc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCkBAIC0xOTgxLDcgKzE5ODEsNyBAQCBi
b29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpCiAKIGNvbnN0IFVS
TCYgYmxhbmtVUkwoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkws
IHN0YXRpY0JsYW5rVVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6YmxhbmsiKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoUGFyc2VkVVJMU3RyaW5n
LCAiYWJvdXQ6YmxhbmsiKTsKICAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKaW5kZXggZDY3
NzBhNC4uMTIwNjE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0
aW9uL0FuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9u
L0FuaW1hdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBbmltYXRpb24uaCIKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFuaW1hdGlvbjo6QW5pbWF0aW9uKCkKQEAgLTE2MCw3
ICsxNjIsNyBAQCBib29sIEFuaW1hdGlvbjo6YW5pbWF0aW9uc01hdGNoKGNvbnN0IEFuaW1hdGlv
biYgb3RoZXIsIGJvb2wgbWF0Y2hQbGF5U3RhdGVzKSBjbwogCiBjb25zdCBTdHJpbmcmIEFuaW1h
dGlvbjo6aW5pdGlhbE5hbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGluaXRpYWxWYWx1ZSwgKEFTQ0lJTGl0ZXJhbCgibm9uZSIpKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaW5pdGlhbFZhbHVlKEFTQ0lJTGl0ZXJhbCgibm9u
ZSIpKTsKICAgICByZXR1cm4gaW5pdGlhbFZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAppbmRleCBhZTk1NTAyLi4zYzJkYWNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAg
LTI5LDEyICsyOSwxMyBAQAogI2lmIFVTRShBVURJT19TRVNTSU9OKQogCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBBdWRpb1Nlc3Npb24mIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lv
bigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF1ZGlvU2Vzc2lvbiwg
c2Vzc2lvbiwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdWRpb1Nlc3Npb24+IHNl
c3Npb247CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKaW5kZXggZDFmNTI0Ni4uMGJiNGU2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTMyLDYgKzMyLDcg
QEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8QXVkaW9TZXNzaW9uPjsKICAgICBBdWRpb1Nlc3Npb24oKTsK
ICAgICB+QXVkaW9TZXNzaW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURkVsZXZhdGlvbi5jcHAKaW5kZXggYWY5OTJmYi4uZWEzM2VmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJIUlRGUGFubmVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC02OCwxOCArNjksMTggQEAgY29uc3QgZmxvYXQgUmVzcG9uc2VT
YW1wbGVSYXRlID0gNDQxMDA7CiBzdGF0aWMgQXVkaW9CdXMqIGdldENvbmNhdGVuYXRlZEltcHVs
c2VSZXNwb25zZXNGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3ViamVjdE5hbWUpCiB7CiAgICAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQXVkaW9CdXMqPiBBdWRpb0J1c01hcDsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXVkaW9CdXNNYXAsIGF1ZGlvQnVzTWFwLCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF1ZGlvQnVzTWFwPiBhdWRpb0J1c01hcDsKIAog
ICAgIEF1ZGlvQnVzKiBidXM7Ci0gICAgQXVkaW9CdXNNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9yID0g
YXVkaW9CdXNNYXAuZmluZChzdWJqZWN0TmFtZSk7Ci0gICAgaWYgKGl0ZXJhdG9yID09IGF1ZGlv
QnVzTWFwLmVuZCgpKSB7CisgICAgQXVkaW9CdXNNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9yID0gYXVk
aW9CdXNNYXAuZ2V0KCkuZmluZChzdWJqZWN0TmFtZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IGF1
ZGlvQnVzTWFwLmdldCgpLmVuZCgpKSB7CiAgICAgICAgIFJlZlB0cjxBdWRpb0J1cz4gY29uY2F0
ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcyA9IEF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShz
dWJqZWN0TmFtZS51dGY4KCkuZGF0YSgpLCBSZXNwb25zZVNhbXBsZVJhdGUpOwogICAgICAgICBB
U1NFUlQoY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcyk7CiAgICAgICAgIGlmICghY29uY2F0
ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcykKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAg
IGJ1cyA9IGNvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXMucmVsZWFzZSgpLmxlYWtSZWYoKTsK
LSAgICAgICAgYXVkaW9CdXNNYXAuc2V0KHN1YmplY3ROYW1lLCBidXMpOworICAgICAgICBhdWRp
b0J1c01hcC5nZXQoKS5zZXQoc3ViamVjdE5hbWUsIGJ1cyk7CiAgICAgfSBlbHNlCiAgICAgICAg
IGJ1cyA9IGl0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCmluZGV4IDlkOGQxZTEu
LmFkZGI1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
IDxBdWRpb1Rvb2xib3gvQXVkaW9TZXJ2aWNlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rv
b2xib3gpCiBTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBB
dWRpb0NvbXBvbmVudCwgKEF1ZGlvQ29tcG9uZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0Nv
bXBvbmVudERlc2NyaXB0aW9uICppbkRlc2MpLCAoaW5Db21wb25lbnQsIGluRGVzYykpCkBAIC02
Miw3ICs2Myw3IEBAIGNvbnN0IGludCBrUHJlZmVycmVkQnVmZmVyU2l6ZSA9IDI1NjsKIHR5cGVk
ZWYgSGFzaFNldDxBdWRpb0Rlc3RpbmF0aW9uSU9TKj4gQXVkaW9EZXN0aW5hdGlvblNldDsKIHN0
YXRpYyBBdWRpb0Rlc3RpbmF0aW9uU2V0JiBhdWRpb0Rlc3RpbmF0aW9ucygpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF1ZGlvRGVzdGluYXRpb25TZXQsIGF1ZGlvRGVz
dGluYXRpb25TZXQsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXVkaW9EZXN0aW5h
dGlvblNldD4gYXVkaW9EZXN0aW5hdGlvblNldDsKICAgICByZXR1cm4gYXVkaW9EZXN0aW5hdGlv
blNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcAppbmRleCBlM2VhODZhLi5iN2JjYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlRl
eHRTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC00Nyw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYgSGFzaE1hcDxj
b25zdCBHcmFwaGljc0xheWVyKiwgVmVjdG9yPEZsb2F0UmVjdD4+IFJlcGFpbnRNYXA7CiBzdGF0
aWMgUmVwYWludE1hcCYgcmVwYWludFJlY3RNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChSZXBhaW50TWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmVwYWludE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCA4MzVkZWEw
Li4yYWNlNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtODgsOCArODksOCBAQCBGbG9hdFNpemUgSW1hZ2VCdWZmZXI6OnNpemVGb3JEZXN0aW5hdGlv
blNpemUoRmxvYXRTaXplIHNpemUpIGNvbnN0CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnRyYW5zZm9y
bUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9y
U3BhY2UpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxpbnQ+
LCBkZXZpY2VSZ2JMVVQsICgpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
VmVjdG9yPGludD4sIGxpbmVhclJnYkxVVCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxWZWN0b3I8aW50Pj4gZGV2aWNlUmdiTFVUOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8aW50Pj4gbGluZWFyUmdiTFVUOwogCiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZHN0
Q29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAwLDI3ICsxMDEsMjcgQEAgdm9pZCBJ
bWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2Us
IENvbG9yU3BhY2UgZHN0Q28KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGRzdENvbG9yU3Bh
Y2UgPT0gQ29sb3JTcGFjZUxpbmVhclJHQikgewotICAgICAgICBpZiAobGluZWFyUmdiTFVULmlz
RW1wdHkoKSkgeworICAgICAgICBpZiAobGluZWFyUmdiTFVULmdldCgpLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgZmxvYXQgY29sb3IgPSBpICAvIDI1NS4wZjsKICAgICAgICAgICAgICAgICBjb2xv
ciA9IChjb2xvciA8PSAwLjA0MDQ1ZiA/IGNvbG9yIC8gMTIuOTJmIDogcG93KChjb2xvciArIDAu
MDU1ZikgLyAxLjA1NWYsIDIuNGYpKTsKICAgICAgICAgICAgICAgICBjb2xvciA9IHN0ZDo6bWF4
KDAuMGYsIGNvbG9yKTsKICAgICAgICAgICAgICAgICBjb2xvciA9IHN0ZDo6bWluKDEuMGYsIGNv
bG9yKTsKLSAgICAgICAgICAgICAgICBsaW5lYXJSZ2JMVVQuYXBwZW5kKHN0YXRpY19jYXN0PGlu
dD4ocm91bmQoY29sb3IgKiAyNTUpKSk7CisgICAgICAgICAgICAgICAgbGluZWFyUmdiTFVULmdl
dCgpLmFwcGVuZChzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKGNvbG9yICogMjU1KSkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShs
aW5lYXJSZ2JMVVQpOworICAgICAgICBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UobGluZWFy
UmdiTFVULmdldCgpKTsKICAgICB9IGVsc2UgaWYgKGRzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFj
ZURldmljZVJHQikgewotICAgICAgICBpZiAoZGV2aWNlUmdiTFVULmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoZGV2aWNlUmdiTFVULmdldCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQg
Y29sb3IgPSBpIC8gMjU1LjBmOwogICAgICAgICAgICAgICAgIGNvbG9yID0gKHBvd2YoY29sb3Is
IDEuMGYgLyAyLjRmKSAqIDEuMDU1ZikgLSAwLjA1NWY7CiAgICAgICAgICAgICAgICAgY29sb3Ig
PSBzdGQ6Om1heCgwLjBmLCBjb2xvcik7CiAgICAgICAgICAgICAgICAgY29sb3IgPSBzdGQ6Om1p
bigxLjBmLCBjb2xvcik7Ci0gICAgICAgICAgICAgICAgZGV2aWNlUmdiTFVULmFwcGVuZChzdGF0
aWNfY2FzdDxpbnQ+KHJvdW5kKGNvbG9yICogMjU1KSkpOworICAgICAgICAgICAgICAgIGRldmlj
ZVJnYkxVVC5nZXQoKS5hcHBlbmQoc3RhdGljX2Nhc3Q8aW50Pihyb3VuZChjb2xvciAqIDI1NSkp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBwbGF0Zm9ybVRyYW5zZm9ybUNv
bG9yU3BhY2UoZGV2aWNlUmdiTFVUKTsKKyAgICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNw
YWNlKGRldmljZVJnYkxVVC5nZXQoKSk7CiAgICAgfQogfQogI2VuZGlmIC8vIFVTRShDRykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRl
eCAyMWQ4MGFlLi5mYmY5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0yMzUsMTkgKzIzNSwxOSBAQCBzdGF0aWMgdm9pZCBh
ZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvciwgTWVkaWFF
bmdpbmVTdXBwbwogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhcHBsaWNhdGlvbk9jdGV0
U3RyZWFtKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtLCAoImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFt
KCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gYXBwbGljYXRpb25PY3RldFN0cmVhbTsKIH0KIAogc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dFBsYWluKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0ZXh0UGxhaW4sICgidGV4dC9wbGFp
biIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0ZXh0UGxhaW4oInRleHQvcGxhaW4iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gdGV4dFBsYWlu
OwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb2RlY3MoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNvZGVjcywgKCJj
b2RlY3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY29kZWNzKCJjb2RlY3MiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY29kZWNzOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmlu
ZGV4IDdjMGMwNzAuLjg5OGQ2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1NSw3ICsxNTYsNyBAQCBwcml2YXRl
OgogCiBTY3JhdGNoQnVmZmVyJiBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTY3JhdGNoQnVmZmVyLCBzY3JhdGNoQnVmZmVy
LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNjcmF0Y2hCdWZmZXI+IHNjcmF0Y2hC
dWZmZXI7CiAgICAgcmV0dXJuIHNjcmF0Y2hCdWZmZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IDFmYWM3MDQuLjNkNmNlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
MzkyLDcgKzM5Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpib29sU3RyaW5nKGJvb2wgdmFsKQog
dHlwZWRlZiBIYXNoTWFwPE1lZGlhUGxheWVyKiwgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyo+IFBsYXllclRvUHJpdmF0ZU1hcFR5cGU7CiBzdGF0aWMgUGxheWVyVG9Qcml2YXRl
TWFwVHlwZSYgcGxheWVyVG9Qcml2YXRlTWFwKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUGxheWVyVG9Qcml2YXRlTWFwVHlwZSwgbWFwLCAoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFBsYXllclRvUHJpdmF0ZU1hcFR5cGU+IG1hcDsKICAgICByZXR1cm4g
bWFwOwogfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAppbmRleCA3MjQ4OTNiLi42MTQwMjU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUFscGhhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUFscGhhLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkZpbHRlci5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM2LDcgKzM3LDcgQEAg
UmVmPFNvdXJjZUFscGhhPiBTb3VyY2VBbHBoYTo6Y3JlYXRlKEZpbHRlckVmZmVjdCYgc291cmNl
RWZmZWN0KQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNvdXJjZUFscGhhOjplZmZlY3ROYW1lKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBzX2VmZmVjdE5hbWUsICgiU291cmNlQWxwaGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gc19lZmZlY3ROYW1lKCJTb3VyY2VBbHBoYSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBzX2VmZmVjdE5hbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
Y3BwCmluZGV4IDYxYmIxYjguLjIzMTNiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcApAQCAtMjMs
NiArMjMsNyBAQAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTM1LDcgKzM2LDcgQEAgUmVmPFNvdXJjZUdyYXBoaWM+IFNvdXJj
ZUdyYXBoaWM6OmNyZWF0ZShGaWx0ZXImIGZpbHRlcikKIAogY29uc3QgQXRvbWljU3RyaW5nJiBT
b3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzX2VmZmVjdE5hbWUsICgiU291cmNlR3JhcGhp
YyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzX2VmZmVjdE5hbWUoIlNvdXJjZUdyYXBo
aWMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19l
ZmZlY3ROYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggMDgwYTkx
Mi4uMjEwMGUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtNDMsNiArNDMs
NyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8UVRLaXQv
UVRLaXQuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUksoUVRLaXQpCiAKQEAgLTEyNzEsNyArMTI3
Miw3IEBAIHN0YXRpYyB2b2lkIGFkZEZpbGVUeXBlc1RvQ2FjaGUoTlNBcnJheSAqIGZpbGVUeXBl
cywgSGFzaFNldDxTdHJpbmc+ICZjYWNoZSkKIAogc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBtaW1l
Q29tbW9uVHlwZXNDYWNoZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEhhc2hTZXQ8U3RyaW5nPiwgY2FjaGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxTdHJpbmc+PiBjYWNoZTsKICAgICBzdGF0aWMgYm9vbCB0eXBlTGlzdEluaXRpYWxp
emVkID0gZmFsc2U7CiAKICAgICBpZiAoIXR5cGVMaXN0SW5pdGlhbGl6ZWQpIHsKQEAgLTEyODUs
NyArMTI4Niw3IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gbWltZUNvbW1vblR5cGVzQ2FjaGUo
KQogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IG1pbWVNb2Rlcm5UeXBlc0NhY2hlKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBjYWNoZSwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlOwog
ICAgIHN0YXRpYyBib29sIHR5cGVMaXN0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICAKICAgICBp
ZiAoIXR5cGVMaXN0SW5pdGlhbGl6ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0N1
cnNvcklPUy5jcHAKaW5kZXggZjk2YmZhZi4uYzlmMGUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0N1cnNvcklPUy5jcHAKQEAgLTI2LDExICsyNiwxMyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IEN1cnNvciYgY3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQ3Vyc29y
LCBjdXJzb3IsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQ3Vyc29yPiBj
dXJzb3I7CiAgICAgcmV0dXJuIGN1cnNvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNw
cAppbmRleCBkZTdiNGUwLi41YzM2NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgiCiAj
aW5jbHVkZSAiVGlsZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03OSw3ICs4MCw3IEBAIHZvaWQgVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVyOjp0cmltVW5wYXJlbnRlZFRpbGVzVG9UYXJnZXQoaW50IHRh
cmdldCkKIAogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyJiB0aWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChUaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXIsIHN0YXRpY1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlciwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRs
ZXI+IHN0YXRpY1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjsKICAgICByZXR1cm4gc3RhdGlj
VGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmgK
aW5kZXggZGEyZmVmODAuLjEzMjMzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmgKQEAgLTI3
LDYgKzI3LDcgQEAKICNkZWZpbmUgVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TX2gKIAog
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDYgKzM2LDcgQEAgY2xhc3MgVGls
ZUNvbnRyb2xsZXI7CiBjbGFzcyBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIgewogcHVibGlj
OgogICAgIGZyaWVuZCBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXImIHRpbGVDb250cm9sbGVy
TWVtb3J5SGFuZGxlcigpOworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxUaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXI+OwogCiAgICAgdm9pZCByZW1vdmVUaWxlQ29udHJvbGxlcihU
aWxlQ29udHJvbGxlciopOwogICAgIHZvaWQgdGlsZUNvbnRyb2xsZXJHYWluZWRVbnBhcmVudGVk
VGlsZXMoVGlsZUNvbnRyb2xsZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQppbmRleCBiZTBkYzE1Li4zODc1NTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2Vy
Lm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBjb25zdCBkb3VibGUga0dyYXZpdHkgPSA5Ljgw
NjY1OwogCiArIChXZWJDb3JlTW90aW9uTWFuYWdlciAqKXNoYXJlZE1hbmFnZXIKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPFdlYkNvcmVNb3Rpb25NYW5h
Z2VyPiwgc2hhcmVkTW90aW9uTWFuYWdlciwgKFtbV2ViQ29yZU1vdGlvbk1hbmFnZXIgYWxsb2Nd
IGluaXRdKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXZWJDb3JlTW90
aW9uTWFuYWdlcj4+IHNoYXJlZE1vdGlvbk1hbmFnZXIoW1tXZWJDb3JlTW90aW9uTWFuYWdlciBh
bGxvY10gaW5pdF0pOwogICAgIHJldHVybiBzaGFyZWRNb3Rpb25NYW5hZ2VyLmdldCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggMDlmYjgyOS4uZTNhZDNm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMTU2LDggKzE1Niw4
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnVwZGF0ZUZvckV2
ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0CiAgICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXZp
Y2VOYW1lOwogCiAgICAgICAgIGlmIChtX3ZpZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3Qo
KSkgewotICAgICAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
YWlycGxheSwgKEFTQ0lJTGl0ZXJhbCgiYWlycGxheSIpKSk7Ci0gICAgICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0dm91dCwgKEFTQ0lJTGl0ZXJhbCgidHZv
dXQiKSkpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYWlycGxh
eShBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiB0dm91dChBU0NJSUxpdGVyYWwoInR2b3V0IikpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBTdHJpbmcgdHlwZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYUNvbnRyb2xz
SG9zdCgpLT5leHRlcm5hbERldmljZVR5cGUoKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IGFp
cnBsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29u
dGVudE9ic2VydmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tD
b250ZW50T2JzZXJ2YXRpb24uY3BwCmluZGV4IDBmYjhhZTkuLmQzYTZmMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRp
b24uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBIYXNoTWFwPHZvaWQgKiwgdm9pZCAqPiAq
IFdlYlRocmVhZEdldE9ic2VydmVkQ29udGVudE1vZGlmaWVycygpCiB7CiAgICAgQVNTRVJUKFdl
YlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKICAgICB0eXBlZGVmIEhhc2hNYXA8dm9pZCAq
LCB2b2lkICo+IFZvaWRWb2lkTWFwOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChWb2lkVm9pZE1hcCwgb2JzZXJ2ZWRDb250ZW50TW9kaWZpZXJzLCAoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZvaWRWb2lkTWFwPiBvYnNlcnZlZENvbnRlbnRNb2RpZmllcnM7CiAg
ICAgcmV0dXJuICZvYnNlcnZlZENvbnRlbnRNb2RpZmllcnM7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCmluZGV4IDQxNmQ1ZGQuLmY2ZmNjYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpAQCAtMzgsNiAr
MzgsNyBAQAogI2ltcG9ydCAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2ltcG9ydCAiU3RyaW5nVHJ1
bmNhdG9yLmgiCiAjaW1wb3J0ICJUZXh0UnVuLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNjAsNyArMTYxLDcgQEAgY29uc3Qg
ZmxvYXQgRHJhZ0xpbmtVcmxGb250U2l6ZSA9IDEwOwogc3RhdGljIEZvbnRDYXNjYWRlJiBmb250
RnJvbU5TRm9udChOU0ZvbnQgKmZvbnQpCiB7CiAgICAgc3RhdGljIE5TRm9udCAqY3VycmVudEZv
bnQ7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZvbnRDYXNjYWRlLCBjdXJy
ZW50UmVuZGVyZXIsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGU+
IGN1cnJlbnRSZW5kZXJlcjsKICAgICAKICAgICBpZiAoW2ZvbnQgaXNFcXVhbDpjdXJyZW50Rm9u
dF0pCiAgICAgICAgIHJldHVybiBjdXJyZW50UmVuZGVyZXI7CkBAIC0xNjgsNyArMTY5LDcgQEAg
c3RhdGljIEZvbnRDYXNjYWRlJiBmb250RnJvbU5TRm9udChOU0ZvbnQgKmZvbnQpCiAgICAgICAg
IENGUmVsZWFzZShjdXJyZW50Rm9udCk7CiAgICAgY3VycmVudEZvbnQgPSBmb250OwogICAgIENG
UmV0YWluKGN1cnJlbnRGb250KTsKLSAgICBjdXJyZW50UmVuZGVyZXIgPSBGb250Q2FzY2FkZShG
b250UGxhdGZvcm1EYXRhKHRvQ1RGb250KGZvbnQpLCBbZm9udCBwb2ludFNpemVdKSk7CisgICAg
Y3VycmVudFJlbmRlcmVyLmdldCgpID0gRm9udENhc2NhZGUoRm9udFBsYXRmb3JtRGF0YSh0b0NU
Rm9udChmb250KSwgW2ZvbnQgcG9pbnRTaXplXSkpOwogICAgIHJldHVybiBjdXJyZW50UmVuZGVy
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCBhOGU2
YTExLi44Y2Q5NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBA
IC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJTY3JvbGxWaWV3LmgiCiAjaW1wb3J0ICJXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CisjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogc3Rh
dGljIE5TUmVjdCBmb2N1c1JpbmdDbGlwUmVjdDsKQEAgLTEzMiw4ICsxMzMsOCBAQCBlbnVtIHsK
IAogVGhlbWUqIHBsYXRmb3JtVGhlbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChUaGVtZU1hYywgdGhlbWVNYWMsICgpKTsKLSAgICByZXR1cm4gJnRoZW1lTWFjOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaGVtZU1hYz4gdGhlbWVNYWM7CisgICAgcmV0dXJu
ICZ0aGVtZU1hYy5nZXQoKTsKIH0KIAogLy8gSGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5IGEgYnVu
Y2ggb2YgZGlmZmVyZW50IGNvbnRyb2wgcGFydHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhyZWFkQ2hlY2subW0KaW5kZXggMzY4NjQ1Mi4uYzI4NGFkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9y
dCAiVGhyZWFkQ2hlY2suaCIKIAogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtOTgsMTIgKzk5LDEyIEBAIHZvaWQgV2Vi
Q29yZVJlcG9ydFRocmVhZFZpb2xhdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvbiwgV2ViQ29yZTo6
VGhyZWFkVmlvbGF0aW9uCiAgICAgaWYgKHJvdW5kID49IE1heGltdW1UaHJlYWRWaW9sYXRpb25S
b3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEhhc2hTZXQ8U3RyaW5nPiwgbG9nZ2VkRnVuY3Rpb25zLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gbG9nZ2VkRnVuY3Rpb25zOwogICAgIHN3aXRj
aCAodGhyZWFkVmlvbGF0aW9uQmVoYXZpb3Jbcm91bmRdKSB7CiAgICAgICAgIGNhc2UgTm9UaHJl
YWRDaGVjazoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExvZ09uRmlyc3RUaHJl
YWRWaW9sYXRpb246Ci0gICAgICAgICAgICBpZiAobG9nZ2VkRnVuY3Rpb25zLmFkZChmdW5jdGlv
bikuaXNOZXdFbnRyeSkgeworICAgICAgICAgICAgaWYgKGxvZ2dlZEZ1bmN0aW9ucy5nZXQoKS5h
ZGQoZnVuY3Rpb24pLmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgICAgICBOU0xvZyhAIldlYktp
dCBUaHJlYWRpbmcgVmlvbGF0aW9uIC0gJXMgY2FsbGVkIGZyb20gc2Vjb25kYXJ5IHRocmVhZCIs
IGZ1bmN0aW9uKTsKICAgICAgICAgICAgICAgICBOU0xvZyhAIkFkZGl0aW9uYWwgdGhyZWFkaW5n
IHZpb2xhdGlvbnMgZm9yIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgYmUgbG9nZ2VkLiIpOwogICAg
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggYjhlNDRjYi4u
Nzk2YzFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCiAj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNTMsNiArNTQsNyBAQCBwcml2YXRlOgogfTsKIAogY2xhc3MgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBDYXB0dXJlRGV2aWNlTWFuYWdlciB7Cisg
ICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPEFWQ2FwdHVyZURldmljZU1hbmFnZXI+Owog
cHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPENhcHR1cmVEZXZpY2VJbmZvPiYgY2FwdHVyZURl
dmljZUxpc3QoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpp
bmRleCA1N2QyMTYwLi43M2MzMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5t
bQpAQCAtMjA5LDcgKzIwOSw3IEBAIGJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNBdmFp
bGFibGUoKQogCiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzaW5nbGV0b24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLCBtYW5hZ2VyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEFWQ2FwdHVyZURldmljZU1hbmFnZXI+IG1hbmFnZXI7CiAgICAgcmV0dXJuIG1hbmFnZXI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAppbmRl
eCBiNDlkMWY2Li42M2M4ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXImIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnBsYXRmb3Jt
Q2VudGVyKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLCBjZW50ZXIs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYz4gY2VudGVyOwogICAgIHJldHVybiBjZW50ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCmluZGV4IGFlYzA0
NWMuLjMxMDI4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrQm94LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHJ1bnRp
bWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0RhdGFWaWV3Lmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9JbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTc2LDcgKzc3LDcgQEAgTW9ja1RyYWNrQm94OjpNb2NrVHJhY2tCb3goQXJyYXlCdWZm
ZXIqIGRhdGEpCiAKIGNvbnN0IFN0cmluZyYgTW9ja1RyYWNrQm94Ojp0eXBlKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0cmFrLCAoQVNDSUlMaXRlcmFs
KCJ0cmFrIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB0cmFrKEFTQ0lJ
TGl0ZXJhbCgidHJhayIpKTsKICAgICByZXR1cm4gdHJhazsKIH0KIApAQCAtMTA1LDcgKzEwNiw3
IEBAIE1vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KEFycmF5QnVm
ZmVyKiBkYXRhKQogCiBjb25zdCBTdHJpbmcmIE1vY2tJbml0aWFsaXphdGlvbkJveDo6dHlwZSgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaW5pdCwgKEFT
Q0lJTGl0ZXJhbCgiaW5pdCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
aW5pdChBU0NJSUxpdGVyYWwoImluaXQiKSk7CiAgICAgcmV0dXJuIGluaXQ7CiB9CiAKQEAgLTEz
Myw3ICsxMzQsNyBAQCBNb2NrU2FtcGxlQm94OjpNb2NrU2FtcGxlQm94KEFycmF5QnVmZmVyKiBk
YXRhKQogCiBjb25zdCBTdHJpbmcmIE1vY2tTYW1wbGVCb3g6OnR5cGUoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNtcGwsIChBU0NJSUxpdGVyYWwoInNt
cGwiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNtcGwoQVNDSUlMaXRl
cmFsKCJzbXBsIikpOwogICAgIHJldHVybiBzbXBsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDc3YTcxZTMuLjVkMzAwZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
CkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIK
ICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzY1LDE0
ICszNjYsMTQgQEAgdm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlLCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRQb3MsIHUKIAogQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZWZsZWN0ZWRYU1NEaXNwb3NpdGlvbiBwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIoY29u
c3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgdW5zaWduZWQmIGZhaWx1
cmVQb3NpdGlvbiwgU3RyaW5nJiByZXBvcnRVUkwpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRUb2dnbGUsIChBU0NJSUxp
dGVyYWwoImV4cGVjdGVkIDAgb3IgMSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRTZXBhcmF0b3IsIChBU0NJSUxpdGVy
YWwoImV4cGVjdGVkIHNlbWljb2xvbiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRFcXVhbHMsIChBU0NJSUxpdGVyYWwo
ImV4cGVjdGVkIGVxdWFscyBzaWduIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZE1vZGUsIChBU0NJSUxpdGVyYWwoImlu
dmFsaWQgbW9kZSBkaXJlY3RpdmUiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkUmVwb3J0LCAoQVNDSUlMaXRlcmFsKCJp
bnZhbGlkIHJlcG9ydCBkaXJlY3RpdmUiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25EdXBsaWNhdGVNb2RlLCAoQVNDSUlMaXRlcmFs
KCJkdXBsaWNhdGUgbW9kZSBkaXJlY3RpdmUiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25EdXBsaWNhdGVSZXBvcnQsIChBU0NJSUxp
dGVyYWwoImR1cGxpY2F0ZSByZXBvcnQgZGlyZWN0aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZERpcmVjdGl2ZSwg
KEFTQ0lJTGl0ZXJhbCgidW5yZWNvZ25pemVkIGRpcmVjdGl2ZSIpKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNvbkludmFsaWRUb2dnbGUoQVNDSUlMaXRl
cmFsKCJleHBlY3RlZCAwIG9yIDEiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gZmFpbHVyZVJlYXNvbkludmFsaWRTZXBhcmF0b3IoQVNDSUlMaXRlcmFsKCJleHBlY3RlZCBz
ZW1pY29sb24iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJl
YXNvbkludmFsaWRFcXVhbHMoQVNDSUlMaXRlcmFsKCJleHBlY3RlZCBlcXVhbHMgc2lnbiIpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZE1v
ZGUoQVNDSUlMaXRlcmFsKCJpbnZhbGlkIG1vZGUgZGlyZWN0aXZlIikpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkUmVwb3J0KEFTQ0lJTGl0
ZXJhbCgiaW52YWxpZCByZXBvcnQgZGlyZWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25EdXBsaWNhdGVNb2RlKEFTQ0lJTGl0ZXJhbCgiZHVw
bGljYXRlIG1vZGUgZGlyZWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGZhaWx1cmVSZWFzb25EdXBsaWNhdGVSZXBvcnQoQVNDSUlMaXRlcmFsKCJkdXBsaWNhdGUg
cmVwb3J0IGRpcmVjdGl2ZSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBm
YWlsdXJlUmVhc29uSW52YWxpZERpcmVjdGl2ZShBU0NJSUxpdGVyYWwoInVucmVjb2duaXplZCBk
aXJlY3RpdmUiKSk7CiAKICAgICB1bnNpZ25lZCBwb3MgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDVhM2RkMzgu
LjBhMGEzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDcgKzQ5LDcgQEAgc3RhdGljIEJ1aWx0aW5SZXNv
dXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwJiBidWlsdGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3Rv
ck1hcCgKICNlbHNlCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICNlbmRpZgotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChCdWlsdGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1
Y3Rvck1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEJ1aWx0aW5SZXNv
dXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAt
NjEsNyArNjIsNyBAQCB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZXNvdXJjZUhhbmRs
ZTo6QnVpbHRpblN5bmNocm9ub3VzTG9hZGVyPiBCdWlsdGluUgogc3RhdGljIEJ1aWx0aW5SZXNv
dXJjZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVyTWFwJiBidWlsdGluUmVzb3VyY2VIYW5kbGVTeW5j
aHJvbm91c0xvYWRlck1hcCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hy
b25vdXNMb2FkZXJNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCdWls
dGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcD4gbWFwOwogICAgIHJldHVybiBt
YXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IGVjNzVlZGUuLjk0ZWQwNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcApAQCAtODMsMTQgKzgzLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3Rz
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+
LCBob3N0cywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+
IGhvc3RzOwogICAgIHJldHVybiBob3N0czsKIH0KIAogc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPj4mIGNsaWVudENlcnRzKCkKIHsKICAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4gQ2VydHNNYXA7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKENlcnRzTWFwLCBjZXJ0cywgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDZXJ0c01hcD4gY2VydHM7CiAgICAgcmV0dXJuIGNlcnRzOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZ0tleWVk
TVJVQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5
ZWRNUlVDYWNoZS5oCmluZGV4IDlhNTNjYTYuLmQ4OTJlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGVfaAogI2Rl
ZmluZSBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlX2gKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNiw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBUIGdldChjb25zdCBB
dG9taWNTdHJpbmcmIGtleSkKICAgICB7CiAgICAgICAgIGlmIChrZXkuaXNOdWxsKCkpIHsKLSAg
ICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChULCB2YWx1ZUZvck51bGws
IChjcmVhdGVWYWx1ZUZvck51bGxLZXkoKSkpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFQ+IHZhbHVlRm9yTnVsbChjcmVhdGVWYWx1ZUZvck51bGxLZXkoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gdmFsdWVGb3JOdWxsOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDQwYjhiZTkuLjYw
YjJlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVu
YXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5h
dGlvbkNGLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21p
Y1N0cmluZ0tleWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPj46OmNyZWF0ZQogCiBz
dGF0aWMgQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+PiYg
Y2ZMb2NhbGVDYWNoZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPj4sIGNhY2hlLCAo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8
UmV0YWluUHRyPENGTG9jYWxlUmVmPj4+IGNhY2hlOwogICAgIHJldHVybiBjYWNoZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNzRlMDU3Mi4uYjI4
YTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xNjYw
LDggKzE2NjAsOCBAQCBSZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmJsb2NrRWxlbWVudENvbnRp
bnVhdGlvbigpIGNvbnN0CiAgICAgCiBzdGF0aWMgQ29udGludWF0aW9uT3V0bGluZVRhYmxlTWFw
KiBjb250aW51YXRpb25PdXRsaW5lVGFibGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChDb250aW51YXRpb25PdXRsaW5lVGFibGVNYXAsIHRhYmxlLCAoKSk7Ci0gICAg
cmV0dXJuICZ0YWJsZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q29udGludWF0aW9uT3V0
bGluZVRhYmxlTWFwPiB0YWJsZTsKKyAgICByZXR1cm4gJnRhYmxlLmdldCgpOwogfQogCiB2b2lk
IFJlbmRlckJsb2NrOjphZGRDb250aW51YXRpb25XaXRoT3V0bGluZShSZW5kZXJJbmxpbmUqIGZs
b3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggYzc0
NTYzOS4uNDAzY2E3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9k
ZShSZW5kZXJFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaQogCiBzdGF0aWMg
Q291bnRlck1hcHMmIGNvdW50ZXJNYXBzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ291bnRlck1hcHMsIHN0YXRpY0NvdW50ZXJNYXBzLCAoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPENvdW50ZXJNYXBzPiBzdGF0aWNDb3VudGVyTWFwczsKICAgICByZXR1
cm4gc3RhdGljQ291bnRlck1hcHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggZDkzYjNlZC4u
YWZjZGI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTk4Nyw4ICs5ODcsOCBAQCB2b2lkIFJlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBp
dGVyYXRvciwgYm9vbAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgY29uc3QgVUNo
YXIgZWxsaXBzaXNBbmRTcGFjZVsyXSA9IHsgaG9yaXpvbnRhbEVsbGlwc2lzLCAnICcgfTsKLSAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZWxsaXBz
aXNBbmRTcGFjZVN0ciwgKGVsbGlwc2lzQW5kU3BhY2UsIDIpKTsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZWxsaXBzaXNTdHIsICgmaG9yaXpv
bnRhbEVsbGlwc2lzLCAxKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IGVsbGlwc2lzQW5kU3BhY2VTdHIoZWxsaXBzaXNBbmRTcGFjZSwgMik7CisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVsbGlwc2lzU3RyKCZob3Jpem9u
dGFsRWxsaXBzaXMsIDEpOwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlID0g
bnVtVmlzaWJsZUxpbmVzID09IDEgPyBmaXJzdExpbmVTdHlsZSgpIDogc3R5bGUoKTsKICAgICAg
ICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBsaW5lU3R5bGUuZm9udENhc2NhZGUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMjUxYjBlZS4uZWEz
Nzk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNjMz
LDEyICszNjMzLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFn
ZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91CiAgICAgUmVmUHRyPEltYWdl
PiByZXNpemVDb3JuZXJJbWFnZTsKICAgICBGbG9hdFNpemUgY29ybmVyUmVzaXplclNpemU7CiAg
ICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpID49IDIpIHsK
LSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEltYWdlKiwgcmVzaXplQ29y
bmVySW1hZ2VIaVJlcywgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNp
emVDb3JuZXJAMngiKS5sZWFrUmVmKCkpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEltYWdlKj4gcmVzaXplQ29ybmVySW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3Vy
Y2UoInRleHRBcmVhUmVzaXplQ29ybmVyQDJ4IikubGVha1JlZigpKTsKICAgICAgICAgcmVzaXpl
Q29ybmVySW1hZ2UgPSByZXNpemVDb3JuZXJJbWFnZUhpUmVzOwogICAgICAgICBjb3JuZXJSZXNp
emVyU2l6ZSA9IHJlc2l6ZUNvcm5lckltYWdlLT5zaXplKCk7CiAgICAgICAgIGNvcm5lclJlc2l6
ZXJTaXplLnNjYWxlKDAuNWYpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChJbWFnZSosIHJlc2l6ZUNvcm5lckltYWdlTG9SZXMsIChJbWFnZTo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIikubGVha1JlZigpKSk7
CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IHJlc2l6ZUNvcm5lckltYWdl
TG9SZXMoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lciIp
LmxlYWtSZWYoKSk7CiAgICAgICAgIHJlc2l6ZUNvcm5lckltYWdlID0gcmVzaXplQ29ybmVySW1h
Z2VMb1JlczsKICAgICAgICAgY29ybmVyUmVzaXplclNpemUgPSByZXNpemVDb3JuZXJJbWFnZS0+
c2l6ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwCmluZGV4IDU0ZmVhMGMuLjE2OTJkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMjYsMTQgKzI2
LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyVGhl
bWUuaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUmVuZGVyU2Nyb2xsYmFyVGhlbWUqIFJlbmRlclNjcm9sbGJhclRoZW1lOjpy
ZW5kZXJTY3JvbGxiYXJUaGVtZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFJlbmRlclNjcm9sbGJhclRoZW1lLCB0aGVtZSwgKCkpOwotICAgIHJldHVybiAmdGhlbWU7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbmRlclNjcm9sbGJhclRoZW1lPiB0aGVtZTsK
KyAgICByZXR1cm4gJnRoZW1lLmdldCgpOwogfQogCiB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1l
OjpidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBpbnQmIGJl
Zm9yZVNpemUsIGludCYgYWZ0ZXJTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHAKaW5kZXggYzY4YmM4Yy4uM2FiOWFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKIHN0YXRpYyBDb2xvciYgY3VzdG9tRm9jdXNSaW5nQ29sb3IoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgY29sb3IsICgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q29sb3I+IGNvbG9yOwogICAgIHJldHVybiBjb2xvcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCBlNDk0NzEzLi45
MjRlYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAt
NDYsNyArNDYsNyBAQCB1bnNpZ25lZCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNj
b3BlOjpzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDbwogCiBXaWRnZXRIaWVyYXJjaHlV
cGRhdGVzU3VzcGVuc2lvblNjb3BlOjpXaWRnZXRUb1BhcmVudE1hcCYgV2lkZ2V0SGllcmFyY2h5
VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6d2lkZ2V0TmV3UGFyZW50TWFwKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoV2lkZ2V0VG9QYXJlbnRNYXAsIG1hcCwgKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXaWRnZXRUb1BhcmVudE1hcD4gbWFwOwogICAgIHJl
dHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmgKaW5kZXggOTEyYWE1Yy4uMzk1NjRhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5jbHVkZSAiU2hhcGUuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMCw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAg
IHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGVP
dXRzaWRlSW5mbz4+IEluZm9NYXA7CiAgICAgc3RhdGljIEluZm9NYXAmIGluZm9NYXAoKQogICAg
IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEluZm9NYXAsIHN0YXRp
Y0luZm9NYXAsICgpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEluZm9NYXA+IHN0
YXRpY0luZm9NYXA7CiAgICAgICAgIHJldHVybiBzdGF0aWNJbmZvTWFwOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggNjU4
ZGVkNS4uMGJkOWE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC0xMjQ4LDggKzEyNDgsOCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJl
bmRlclN0eWxlOjpoeXBoZW5TdHJpbmcoKSBjb25zdAogICAgICAgICByZXR1cm4gaHlwaGVuYXRp
b25TdHJpbmc7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZGVwZW5kIG9uIGxvY2FsZS4K
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBoeXBoZW5N
aW51c1N0cmluZywgKCZoeXBoZW5NaW51cywgMSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGh5cGhlblN0cmluZywgKCZoeXBoZW4sIDEpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBoeXBoZW5NaW51c1N0cmluZygm
aHlwaGVuTWludXMsIDEpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGh5cGhlblN0cmluZygmaHlwaGVuLCAxKTsKICAgICByZXR1cm4gZm9udENhc2NhZGUoKS5wcmlt
YXJ5Rm9udCgpLmdseXBoRm9yQ2hhcmFjdGVyKGh5cGhlbikgPyBoeXBoZW5TdHJpbmcgOiBoeXBo
ZW5NaW51c1N0cmluZzsKIH0KIApAQCAtMTI2MSwyOCArMTI2MSwyOCBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3QKICAgICBj
YXNlIFRleHRFbXBoYXNpc01hcmtDdXN0b206CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXND
dXN0b21NYXJrKCk7CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrRG90OiB7Ci0gICAgICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpbGxlZERvdFN0cmlu
ZywgKCZidWxsZXQsIDEpKTsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgb3BlbkRvdFN0cmluZywgKCZ3aGl0ZUJ1bGxldCwgMSkpOworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxsZWREb3RTdHJpbmcoJmJ1
bGxldCwgMSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9w
ZW5Eb3RTdHJpbmcoJndoaXRlQnVsbGV0LCAxKTsKICAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNp
c0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8gZmlsbGVkRG90U3RyaW5nIDogb3Bl
bkRvdFN0cmluZzsKICAgICB9CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQ2lyY2xlOiB7Ci0g
ICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpbGxl
ZENpcmNsZVN0cmluZywgKCZibGFja0NpcmNsZSwgMSkpOwotICAgICAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvcGVuQ2lyY2xlU3RyaW5nLCAoJndoaXRl
Q2lyY2xlLCAxKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGZpbGxlZENpcmNsZVN0cmluZygmYmxhY2tDaXJjbGUsIDEpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVuQ2lyY2xlU3RyaW5nKCZ3aGl0ZUNpcmNsZSwg
MSk7CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmls
bEZpbGxlZCA/IGZpbGxlZENpcmNsZVN0cmluZyA6IG9wZW5DaXJjbGVTdHJpbmc7CiAgICAgfQog
ICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0RvdWJsZUNpcmNsZTogewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWxsZWREb3VibGVDaXJjbGVT
dHJpbmcsICgmZmlzaGV5ZSwgMSkpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBvcGVuRG91YmxlQ2lyY2xlU3RyaW5nLCAoJmJ1bGxzZXllLCAx
KSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpbGxlZERv
dWJsZUNpcmNsZVN0cmluZygmZmlzaGV5ZSwgMSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IG9wZW5Eb3VibGVDaXJjbGVTdHJpbmcoJmJ1bGxzZXllLCAxKTsK
ICAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmls
bGVkID8gZmlsbGVkRG91YmxlQ2lyY2xlU3RyaW5nIDogb3BlbkRvdWJsZUNpcmNsZVN0cmluZzsK
ICAgICB9CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrVHJpYW5nbGU6IHsKLSAgICAgICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVkVHJpYW5nbGVT
dHJpbmcsICgmYmxhY2tVcFBvaW50aW5nVHJpYW5nbGUsIDEpKTsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb3BlblRyaWFuZ2xlU3RyaW5nLCAo
JndoaXRlVXBQb2ludGluZ1RyaWFuZ2xlLCAxKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IGZpbGxlZFRyaWFuZ2xlU3RyaW5nKCZibGFja1VwUG9pbnRpbmdU
cmlhbmdsZSwgMSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG9wZW5UcmlhbmdsZVN0cmluZygmd2hpdGVVcFBvaW50aW5nVHJpYW5nbGUsIDEpOwogICAgICAg
ICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQgPyBm
aWxsZWRUcmlhbmdsZVN0cmluZyA6IG9wZW5UcmlhbmdsZVN0cmluZzsKICAgICB9CiAgICAgY2Fz
ZSBUZXh0RW1waGFzaXNNYXJrU2VzYW1lOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpbGxlZFNlc2FtZVN0cmluZywgKCZzZXNhbWVEb3Qs
IDEpKTsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
Zywgb3BlblNlc2FtZVN0cmluZywgKCZ3aGl0ZVNlc2FtZURvdCwgMSkpOworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxsZWRTZXNhbWVTdHJpbmcoJnNlc2Ft
ZURvdCwgMSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9w
ZW5TZXNhbWVTdHJpbmcoJndoaXRlU2VzYW1lRG90LCAxKTsKICAgICAgICAgcmV0dXJuIHRleHRF
bXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8gZmlsbGVkU2VzYW1lU3Ry
aW5nIDogb3BlblNlc2FtZVN0cmluZzsKICAgICB9CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJr
QXV0bzoKQEAgLTEyOTcsMTMgKzEyOTcsMTMgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBSZW5kZXJT
dHlsZTo6dGV4dEVtcGhhc2lzTWFya1N0cmluZygpIGNvbnN0CiAjaWYgRU5BQkxFKERBU0hCT0FS
RF9TVVBQT1JUKQogY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5
bGU6OmluaXRpYWxEYXNoYm9hcmRSZWdpb25zKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiwgZW1wdHlMaXN0LCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4+
IGVtcHR5TGlzdDsKICAgICByZXR1cm4gZW1wdHlMaXN0OwogfQogCiBjb25zdCBWZWN0b3I8U3R5
bGVEYXNoYm9hcmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8U3R5bGVEYXNoYm9h
cmRSZWdpb24+LCBub25lTGlzdCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0
b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+PiBub25lTGlzdDsKICAgICBzdGF0aWMgYm9vbCBub25l
TGlzdEluaXRpYWxpemVkID0gZmFsc2U7CiAKICAgICBpZiAoIW5vbmVMaXN0SW5pdGlhbGl6ZWQp
IHsKQEAgLTEzMTQsNyArMTMxNCw3IEBAIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lv
bj4mIFJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJkUmVnaW9ucygpCiAgICAgICAgIHJlZ2lvbi5v
ZmZzZXQuYm90dG9tKCkgPSBMZW5ndGgoKTsKICAgICAgICAgcmVnaW9uLm9mZnNldC5sZWZ0KCkg
PSBMZW5ndGgoKTsKICAgICAgICAgcmVnaW9uLnR5cGUgPSBTdHlsZURhc2hib2FyZFJlZ2lvbjo6
Tm9uZTsKLSAgICAgICAgbm9uZUxpc3QuYXBwZW5kKHJlZ2lvbik7CisgICAgICAgIG5vbmVMaXN0
LmdldCgpLmFwcGVuZChyZWdpb24pOwogICAgICAgICBub25lTGlzdEluaXRpYWxpemVkID0gdHJ1
ZTsKICAgICB9CiAgICAgcmV0dXJuIG5vbmVMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA2NTg1YzZlLi5lZDQ5YWI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNzAsNiArNzAsNyBA
QAogI2luY2x1ZGUgIlVuaWNvZGVCaWRpLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjAwOCw3ICsyMDA5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyB1bnNpZ25lZCBzaG9ydCBpbml0aWFsQ29sdW1uQ291bnQoKSB7IHJldHVybiAxOyB9CiAg
ICAgc3RhdGljIENvbHVtbkZpbGwgaW5pdGlhbENvbHVtbkZpbGwoKSB7IHJldHVybiBDb2x1bW5G
aWxsQmFsYW5jZTsgfQogICAgIHN0YXRpYyBDb2x1bW5TcGFuIGluaXRpYWxDb2x1bW5TcGFuKCkg
eyByZXR1cm4gQ29sdW1uU3Bhbk5vbmU7IH0KLSAgICBzdGF0aWMgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyYgaW5pdGlhbFRyYW5zZm9ybSgpIHsgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFRyYW5zZm9ybU9wZXJhdGlvbnMsIG9wcywgKCkpOyByZXR1cm4gb3BzOyB9CisgICAgc3Rh
dGljIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGluaXRpYWxUcmFuc2Zvcm0oKSB7IHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxUcmFuc2Zvcm1PcGVyYXRpb25zPiBvcHM7IHJldHVybiBvcHM7IH0K
ICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxUcmFuc2Zvcm1PcmlnaW5YKCkgeyByZXR1cm4gTGVu
Z3RoKDUwLjBmLCBQZXJjZW50KTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5zZm9y
bU9yaWdpblkoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpOyB9CiAgICAgc3RhdGlj
IEVQb2ludGVyRXZlbnRzIGluaXRpYWxQb2ludGVyRXZlbnRzKCkgeyByZXR1cm4gUEVfQVVUTzsg
fQpAQCAtMjExNCw5ICsyMTE1LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8
U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBpbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpOwogICAgIHN0
YXRpYyBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBub25lRGFzaGJvYXJkUmVn
aW9ucygpOwogI2VuZGlmCi0gICAgc3RhdGljIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGluaXRp
YWxGaWx0ZXIoKSB7IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGaWx0ZXJPcGVyYXRp
b25zLCBvcHMsICgpKTsgcmV0dXJuIG9wczsgfQorICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBpbml0aWFsRmlsdGVyKCkgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RmlsdGVyT3Bl
cmF0aW9ucz4gb3BzOyByZXR1cm4gb3BzOyB9CiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikK
LSAgICBzdGF0aWMgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgaW5pdGlhbEJhY2tkcm9wRmlsdGVy
KCkgeyBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRmlsdGVyT3BlcmF0aW9ucywgb3Bz
LCAoKSk7IHJldHVybiBvcHM7IH0KKyAgICBzdGF0aWMgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
aW5pdGlhbEJhY2tkcm9wRmlsdGVyKCkgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RmlsdGVyT3Bl
cmF0aW9ucz4gb3BzOyByZXR1cm4gb3BzOyB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0NPTVBP
U0lUSU5HKQogICAgIHN0YXRpYyBCbGVuZE1vZGUgaW5pdGlhbEJsZW5kTW9kZSgpIHsgcmV0dXJu
IEJsZW5kTW9kZU5vcm1hbDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUGF0aC5jcHAKaW5kZXggM2JlMWQ3Yi4uZWMyZTI4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC0xMzEsMTUgKzEzMSwxNSBA
QCBib29sIFJlbmRlclNWR1BhdGg6OnNob3VsZFN0cm9rZVplcm9MZW5ndGhTdWJwYXRoKCkgY29u
c3QKIAogUGF0aCogUmVuZGVyU1ZHUGF0aDo6emVyb0xlbmd0aExpbmVjYXBQYXRoKGNvbnN0IEZs
b2F0UG9pbnQmIGxpbmVjYXBQb3NpdGlvbikgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoUGF0aCwgdGVtcFBhdGgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UGF0aD4gdGVtcFBhdGg7CiAKLSAgICB0ZW1wUGF0aC5jbGVhcigpOworICAgIHRlbXBQ
YXRoLmdldCgpLmNsZWFyKCk7CiAgICAgaWYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5jYXBTdHlsZSgp
ID09IFNxdWFyZUNhcCkKLSAgICAgICAgdGVtcFBhdGguYWRkUmVjdCh6ZXJvTGVuZ3RoU3VicGF0
aFJlY3QobGluZWNhcFBvc2l0aW9uLCB0aGlzLT5zdHJva2VXaWR0aCgpKSk7CisgICAgICAgIHRl
bXBQYXRoLmdldCgpLmFkZFJlY3QoemVyb0xlbmd0aFN1YnBhdGhSZWN0KGxpbmVjYXBQb3NpdGlv
biwgdGhpcy0+c3Ryb2tlV2lkdGgoKSkpOwogICAgIGVsc2UKLSAgICAgICAgdGVtcFBhdGguYWRk
RWxsaXBzZSh6ZXJvTGVuZ3RoU3VicGF0aFJlY3QobGluZWNhcFBvc2l0aW9uLCB0aGlzLT5zdHJv
a2VXaWR0aCgpKSk7CisgICAgICAgIHRlbXBQYXRoLmdldCgpLmFkZEVsbGlwc2UoemVyb0xlbmd0
aFN1YnBhdGhSZWN0KGxpbmVjYXBQb3NpdGlvbiwgdGhpcy0+c3Ryb2tlV2lkdGgoKSkpOwogCi0g
ICAgcmV0dXJuICZ0ZW1wUGF0aDsKKyAgICByZXR1cm4gJnRlbXBQYXRoLmdldCgpOwogfQogCiBG
bG9hdFJlY3QgUmVuZGVyU1ZHUGF0aDo6emVyb0xlbmd0aFN1YnBhdGhSZWN0KGNvbnN0IEZsb2F0
UG9pbnQmIGxpbmVjYXBQb3NpdGlvbiwgZmxvYXQgc3Ryb2tlV2lkdGgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDgyMjg1
ODMuLjhhMWZmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHU2hhcGUuY3BwCkBAIC0xODcsMTIgKzE4NywxMiBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjps
YXlvdXQoKQogCiBQYXRoKiBSZW5kZXJTVkdTaGFwZTo6bm9uU2NhbGluZ1N0cm9rZVBhdGgoY29u
c3QgUGF0aCogcGF0aCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzdHJva2VUcmFuc2Zvcm0pIGNv
bnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFBhdGgsIHRlbXBQYXRo
LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBhdGg+IHRlbXBQYXRoOwogCi0gICAg
dGVtcFBhdGggPSAqcGF0aDsKLSAgICB0ZW1wUGF0aC50cmFuc2Zvcm0oc3Ryb2tlVHJhbnNmb3Jt
KTsKKyAgICB0ZW1wUGF0aC5nZXQoKSA9ICpwYXRoOworICAgIHRlbXBQYXRoLmdldCgpLnRyYW5z
Zm9ybShzdHJva2VUcmFuc2Zvcm0pOwogCi0gICAgcmV0dXJuICZ0ZW1wUGF0aDsKKyAgICByZXR1
cm4gJnRlbXBQYXRoLmdldCgpOwogfQogCiBib29sIFJlbmRlclNWR1NoYXBlOjpzZXR1cE5vblNj
YWxpbmdTdHJva2VDb250ZXh0KEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlVHJhbnNmb3JtLCBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyJiBzdGF0ZVNhdmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOGJjMGE5OS4u
NTM3ZmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdD
b250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBQYWkKIAogc3RhdGljIEFmZmluZVRyYW5zZm9ybSYgY3VycmVudENvbnRlbnRUcmFuc2Zvcm1h
dGlvbigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEFmZmluZVRyYW5z
Zm9ybSwgc19jdXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9uLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEFmZmluZVRyYW5zZm9ybT4gc19jdXJyZW50Q29udGVudFRyYW5zZm9ybWF0
aW9uOwogICAgIHJldHVybiBzX2N1cnJlbnRDb250ZW50VHJhbnNmb3JtYXRpb247CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAppbmRleCBlNjhj
ZTM4Li4yZTFmMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jlc291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNv
dXJjZXMuY3BwCkBAIC00NSw0NCArNDUsNDQgQEAgU1ZHUmVzb3VyY2VzOjpTVkdSZXNvdXJjZXMo
KQogCiBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBjbGlwcGVyRmlsdGVyTWFza2VyVGFn
cygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiwgc190YWdMaXN0LCAoKSk7Ci0gICAgaWYgKHNfdGFnTGlzdC5pc0VtcHR5KCkpIHsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmc+PiBzX3RhZ0xp
c3Q7CisgICAgaWYgKHNfdGFnTGlzdC5nZXQoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gImNv
bnRhaW5lciBlbGVtZW50cyI6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ludHJvLmh0bWwj
VGVybUNvbnRhaW5lckVsZW1lbnQKICAgICAgICAgLy8gImdyYXBoaWNzIGVsZW1lbnRzIiA6IGh0
dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ludHJvLmh0bWwjVGVybUdyYXBoaWNzRWxlbWVudAot
ICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjphVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAg
ICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Y2lyY2xlVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAg
ICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6ZWxsaXBzZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmdseXBoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAg
ICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Z1RhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNf
dGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmltYWdlVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190
YWdMaXN0LmFkZChTVkdOYW1lczo6bGluZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFn
TGlzdC5hZGQoU1ZHTmFtZXM6Om1hcmtlclRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFn
TGlzdC5hZGQoU1ZHTmFtZXM6Om1hc2tUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xp
c3QuYWRkKFNWR05hbWVzOjptaXNzaW5nX2dseXBoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNf
dGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnJlY3RUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpzdmdUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3Rh
Z0xpc3QuYWRkKFNWR05hbWVzOjp0ZXh0VGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdM
aXN0LmFkZChTVkdOYW1lczo6dXNlVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0
LmdldCgpLmFkZChTVkdOYW1lczo6YVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlz
dC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmNpcmNsZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNf
dGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmVsbGlwc2VUYWcubG9jYWxOYW1lKCkpOworICAg
ICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpnbHlwaFRhZy5sb2NhbE5hbWUoKSk7
CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmdUYWcubG9jYWxOYW1lKCkp
OworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjppbWFnZVRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9j
YWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjptYXJrZXJU
YWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpt
YXNrVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1l
czo6bWlzc2luZ19nbHlwaFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQo
KS5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3Qu
Z2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5Z29uVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190
YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWxpbmVUYWcubG9jYWxOYW1lKCkpOworICAg
ICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpyZWN0VGFnLmxvY2FsTmFtZSgpKTsK
KyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6c3ZnVGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dGV4dFRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnVzZVRhZy5sb2Nh
bE5hbWUoKSk7CiAKICAgICAgICAgLy8gTm90IGxpc3RlZCBpbiB0aGUgZGVmaW5pdGlvbnMgaXMg
dGhlIGNsaXBQYXRoIGVsZW1lbnQsIHRoZSBTVkcgc3BlYyBzYXlzIHRob3VnaDoKICAgICAgICAg
Ly8gVGhlICJjbGlwUGF0aCIgZWxlbWVudCBvciBhbnkgb2YgaXRzIGNoaWxkcmVuIGNhbiBzcGVj
aWZ5IHByb3BlcnR5ICJjbGlwLXBhdGgiLgogICAgICAgICAvLyBTbyB3ZSBoYXZlIHRvIGFkZCBj
bGlwUGF0aFRhZyBoZXJlLCBvdGhlcndoaXNlIGNsaXAtcGF0aCBvbiBjbGlwUGF0aCB3aWxsIGZh
aWwuCiAgICAgICAgIC8vIChBbHJlYWR5IG1haWxlZCBTVkcgV0csIHdhaXRpbmcgZm9yIGEgc29s
dXRpb24pCi0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmNsaXBQYXRoVGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6Y2xpcFBhdGhU
YWcubG9jYWxOYW1lKCkpOwogCiAgICAgICAgIC8vIE5vdCBsaXN0ZWQgaW4gdGhlIGRlZmluaXRp
b25zIGFyZSB0aGUgdGV4dCBjb250ZW50IGVsZW1lbnRzLCB0aG91Z2ggZmlsdGVyL2NsaXBwZXIv
bWFza2VyIG9uIHRzcGFuL3RleHQvLi4gaXMgYWxsb3dlZC4KICAgICAgICAgLy8gKEFscmVhZHkg
bWFpbGVkIFNWRyBXRywgd2FpdGluZyBmb3IgYSBzb2x1dGlvbikKLSAgICAgICAgc190YWdMaXN0
LmFkZChTVkdOYW1lczo6YWx0R2x5cGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xp
c3QuYWRkKFNWR05hbWVzOjp0ZXh0UGF0aFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFn
TGlzdC5hZGQoU1ZHTmFtZXM6OnRyZWZUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xp
c3QuYWRkKFNWR05hbWVzOjp0c3BhblRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlz
dC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAg
c190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dGV4dFBhdGhUYWcubG9jYWxOYW1lKCkpOwor
ICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0cmVmVGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dHNwYW5UYWcubG9jYWxO
YW1lKCkpOwogCiAgICAgICAgIC8vIE5vdCBsaXN0ZWQgaW4gdGhlIGRlZmluaXRpb25zIGlzIHRo
ZSBmb3JlaWduT2JqZWN0IGVsZW1lbnQsIGJ1dCBjbGlwLXBhdGgKICAgICAgICAgLy8gaXMgYSBz
dXBwb3J0ZWQgYXR0cmlidXRlLgotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpmb3Jl
aWduT2JqZWN0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChT
VkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKSk7CiAKICAgICAgICAgLy8gRWxl
bWVudHMgdGhhdCB3ZSBpZ25vcmUsIGFzIGl0IGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuCiAgICAg
ICAgIC8vIGRlZnMsIHBhdHRlcm4sIHN3aXRjaCAoRklYTUU6IE1haWwgU1ZHIFdHIGFib3V0IHRo
ZXNlKQpAQCAtOTQsMTIgKzk0LDEyIEBAIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGNs
aXBwZXJGaWx0ZXJNYXNrZXJUYWdzKCkKIAogc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYg
bWFya2VyVGFncygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hT
ZXQ8QXRvbWljU3RyaW5nPiwgc190YWdMaXN0LCAoKSk7Ci0gICAgaWYgKHNfdGFnTGlzdC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bGluZVRhZy5sb2NhbE5h
bWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5Z29uVGFnLmxvY2FsTmFt
ZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWxpbmVUYWcubG9jYWxO
YW1lKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+
IHNfdGFnTGlzdDsKKyAgICBpZiAoc190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgeworICAgICAg
ICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKKyAg
ICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7
CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxO
YW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRh
Zy5sb2NhbE5hbWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHNfdGFnTGlzdDsKQEAgLTEwNywy
MCArMTA3LDIwIEBAIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIG1hcmtlclRhZ3MoKQog
CiBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBmaWxsQW5kU3Ryb2tlVGFncygpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWljU3RyaW5nPiwg
c190YWdMaXN0LCAoKSk7Ci0gICAgaWYgKHNfdGFnTGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6YWx0R2x5cGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpjaXJjbGVUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjplbGxpcHNlVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAg
ICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6bGluZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5Z29uVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWxpbmVUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpyZWN0VGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNf
dGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRleHRQYXRoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6dHJlZlRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNf
dGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRzcGFuVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmc+PiBzX3RhZ0xpc3Q7CisgICAgaWYg
KHNfdGFnTGlzdC5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFk
ZChTVkdOYW1lczo6YWx0R2x5cGhUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3Qu
Z2V0KCkuYWRkKFNWR05hbWVzOjpjaXJjbGVUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3Rh
Z0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjplbGxpcHNlVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAg
ICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6bGluZVRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxOYW1lKCkp
OworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5Z29uVGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWxpbmVU
YWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpy
ZWN0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1l
czo6dGV4dFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZH
TmFtZXM6OnRleHRQYXRoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgp
LmFkZChTVkdOYW1lczo6dHJlZlRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6OnRzcGFuVGFnLmxvY2FsTmFtZSgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gc190YWdMaXN0OwpAQCAtMTI4LDEyICsxMjgsMTIgQEAgc3RhdGljIEhhc2hTZXQ8QXRv
bWljU3RyaW5nPiYgZmlsbEFuZFN0cm9rZVRhZ3MoKQogCiBzdGF0aWMgSGFzaFNldDxBdG9taWNT
dHJpbmc+JiBjaGFpbmFibGVSZXNvdXJjZVRhZ3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChIYXNoU2V0PEF0b21pY1N0cmluZz4sIHNfdGFnTGlzdCwgKCkpOwotICAg
IGlmIChzX3RhZ0xpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFt
ZXM6OmxpbmVhckdyYWRpZW50VGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFk
ZChTVkdOYW1lczo6ZmlsdGVyVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFk
ZChTVkdOYW1lczo6cGF0dGVyblRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5h
ZGQoU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnLmxvY2FsTmFtZSgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmc+PiBzX3RhZ0xpc3Q7CisgICAgaWYg
KHNfdGFnTGlzdC5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFk
ZChTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3Rh
Z0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpmaWx0ZXJUYWcubG9jYWxOYW1lKCkpOworICAgICAg
ICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwYXR0ZXJuVGFnLmxvY2FsTmFtZSgpKTsK
KyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcu
bG9jYWxOYW1lKCkpOwogICAgIH0KIAogICAgIHJldHVybiBzX3RhZ0xpc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuZ2xlLmNwcAppbmRleCA1ODhmMjc3Li45YTY5NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5nbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5j
cHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMiwxNiArMTEzLDE2IEBAIFN0cmlu
ZyBTVkdBbmdsZTo6dmFsdWVBc1N0cmluZygpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3VuaXRU
eXBlKSB7CiAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX0RFRzogewotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkZWdTdHJpbmcsIChBU0NJSUxpdGVyYWwoImRl
ZyIpKSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRV
bml0cykgKyBkZWdTdHJpbmc7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IGRlZ1N0cmluZyhBU0NJSUxpdGVyYWwoImRlZyIpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6
bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIGRlZ1N0cmluZy5nZXQoKTsKICAgICB9
CiAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1JBRDogewotICAgICAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCByYWRTdHJpbmcsIChBU0NJSUxpdGVyYWwoInJhZCIpKSk7
Ci0gICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykg
KyByYWRTdHJpbmc7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHJhZFN0
cmluZyhBU0NJSUxpdGVyYWwoInJhZCIpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIHJhZFN0cmluZy5nZXQoKTsKICAgICB9CiAgICAg
Y2FzZSBTVkdfQU5HTEVUWVBFX0dSQUQ6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgZ3JhZFN0cmluZywgKEFTQ0lJTGl0ZXJhbCgiZ3JhZCIpKSk7Ci0g
ICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyBn
cmFkU3RyaW5nOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBncmFkU3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgiZ3JhZCIpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIGdyYWRTdHJpbmcuZ2V0KCk7CiAgICAgfQogICAg
IGNhc2UgU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRDoKICAgICBjYXNlIFNWR19BTkdMRVRZUEVf
VU5LTk9XTjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNw
cAppbmRleCBkNDQ5MmFkLi4wZmI2ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVDb2xvckVsZW1lbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFJlZjxTVkdBbmltYXRlQ29s
b3JFbGVtZW50PiBTVkdBbmltYXRlQ29sb3JFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYKIAogc3RhdGljIGJvb2wgYXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcihjb25zdCBT
dHJpbmcmIHZhbHVlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGN1cnJlbnRDb2xvciwgKCJjdXJyZW50Q29sb3IiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gY3VycmVudENvbG9yKCJjdXJyZW50Q29sb3IiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gdmFsdWUgPT0gY3VycmVudENv
bG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcAppbmRleCA0OTZjMmYzLi43OWMwNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTEwOCw4ICsxMDgsOCBAQCB2b2lkIFNWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdAogICAgIAogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OlJvdGF0ZU1vZGUg
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJvdGF0ZU1vZGUoKSBjb25zdAogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGF1dG9WYWwsICgi
YXV0byIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhdXRvUmV2ZXJzZSwg
KCJhdXRvLXJldmVyc2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYXV0b1ZhbCgiYXV0
byIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGF1dG9SZXZlcnNlKCJhdXRvLXJldmVyc2Ui
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHJvdGF0ZSA9IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6cm90YXRlQXR0cik7CiAgICAg
aWYgKHJvdGF0ZSA9PSBhdXRvVmFsKQogICAgICAgICByZXR1cm4gUm90YXRlQXV0bzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCAzNDYyOGFkLi5lYjEy
NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC0y
ODYsMTAgKzI4NiwxMCBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnVwZGF0ZUFuaW1hdGlv
bk1vZGUoKQogCiB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnNldENhbGNNb2RlKGNvbnN0IEF0
b21pY1N0cmluZyYgY2FsY01vZGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGlzY3JldGUsICgiZGlzY3JldGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbGluZWFyLCAoImxpbmVhciIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBwYWNlZCwgKCJwYWNlZCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBzcGxpbmUsICgic3BsaW5lIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IGRpc2NyZXRlKCJkaXNjcmV0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IGxpbmVhcigibGluZWFyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gcGFjZWQoInBh
Y2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3BsaW5lKCJzcGxpbmUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoY2FsY01vZGUgPT0gZGlzY3Jl
dGUpCiAgICAgICAgIHNldENhbGNNb2RlKENhbGNNb2RlRGlzY3JldGUpOwogICAgIGVsc2UgaWYg
KGNhbGNNb2RlID09IGxpbmVhcikKQEAgLTMwNCw4ICszMDQsOCBAQCB2b2lkIFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OnNldENhbGNNb2RlKGNvbnN0IEF0b21pY1N0cmluZyYgY2FsY01vZGUpCiAKIHZv
aWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0QXR0cmlidXRlVHlwZShjb25zdCBBdG9taWNTdHJp
bmcmIGF0dHJpYnV0ZVR5cGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgY3NzLCAoIkNTUyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCB4bWwsICgiWE1MIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNz
cygiQ1NTIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4geG1sKCJYTUwiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoYXR0cmlidXRlVHlwZSA9PSBjc3Mp
CiAgICAgICAgIG1fYXR0cmlidXRlVHlwZSA9IEF0dHJpYnV0ZVR5cGVDU1M7CiAgICAgZWxzZSBp
ZiAoYXR0cmlidXRlVHlwZSA9PSB4bWwpCkBAIC0zMzIsMTQgKzMzMiwxNCBAQCBTdHJpbmcgU1ZH
QW5pbWF0aW9uRWxlbWVudDo6ZnJvbVZhbHVlKCkgY29uc3QKIAogYm9vbCBTVkdBbmltYXRpb25F
bGVtZW50Ojppc0FkZGl0aXZlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdW0sICgic3VtIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IHN1bSgic3VtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGZhc3RHZXRBdHRyaWJ1dGUoU1ZH
TmFtZXM6OmFkZGl0aXZlQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09IHN1bSB8fCBhbmltYXRp
b25Nb2RlKCkgPT0gQnlBbmltYXRpb247CiB9CiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6
aXNBY2N1bXVsYXRlZCgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VtLCAoInN1bSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBzdW0oInN1bSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKFNWR05hbWVz
OjphY2N1bXVsYXRlQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09IHN1bSAmJiBhbmltYXRpb25N
b2RlKCkgIT0gVG9BbmltYXRpb247CiB9CkBAIC02NTYsNyArNjU2LDcgQEAgdm9pZCBTVkdBbmlt
YXRpb25FbGVtZW50OjphZGp1c3RGb3JJbmhlcml0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVt
ZW50LCBjb25zdAogCiBzdGF0aWMgYm9vbCBpbmhlcml0c0Zyb21Qcm9wZXJ0eShTVkdFbGVtZW50
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBpbmhlcml0LCAoImluaGVyaXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gaW5o
ZXJpdCgiaW5oZXJpdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IAogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkgfHwgdmFsdWUgIT0gaW5oZXJpdCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5jcHAKaW5kZXggMWZhZWE1My4uZGRmOTI2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC03NSwyNSArNzUs
MjUgQEAgUmVmPFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50PiBTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50
aWZpZXIsICgiU1ZHS2VybmVsVW5pdExlbmd0aFgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19p
ZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRl
bnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0aFkiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpvcmRlclhJ
ZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHT3JkZXJYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IHNfaWRlbnRpZmllcigiU1ZHT3JkZXJYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6b3JkZXJZSWRlbnRpZmllcigpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVy
LCAoIlNWR09yZGVyWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR09y
ZGVyWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBz
X2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggYmEyYTNkNC4uMTJmYTBiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTYz
LDEzICs2MywxMyBAQCBSZWY8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50PiBTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaQogCiBjb25zdCBBdG9taWNTdHJp
bmcmIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlm
aWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBzX2lkZW50aWZpZXIsICgiU1ZHS2VybmVsVW5pdExlbmd0aFgiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjprZXJuZWxVbml0
TGVuZ3RoWUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWSIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRp
ZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
Y3BwCmluZGV4IGFlZTA4ZGQuLmY5M2RhY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgUmVmPFNWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQ+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJgogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6
OnN0ZERldmlhdGlvblhJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHU3RkRGV2aWF0aW9uWCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR1N0ZERldmlhdGlvblgiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlm
aWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN0
ZERldmlhdGlvbllJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHU3RkRGV2aWF0aW9uWSIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR1N0ZERldmlhdGlvblkiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwCmluZGV4IDIyYzE3OGIuLjdiMjFkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCkBAIC01NywxMyArNTcsMTMgQEAgUmVmPFNWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmEKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnN0ZERldmlhdGlvblhJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHU3RkRGV2aWF0
aW9uWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR1N0ZERldmlhdGlv
blgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19p
ZGVudGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudDo6c3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdTdGREZXZpYXRp
b25ZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHU3RkRGV2aWF0aW9u
WSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lk
ZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVt
ZW50LmNwcAppbmRleCA1OWYwN2QyLi4zMzcwZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC01NiwxMyArNTYsMTMgQEAgUmVmPFNWR0ZF
TW9ycGhvbG9neUVsZW1lbnQ+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJgogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQ6OnJhZGl1c1hJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHUmFkaXVzWCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR1JhZGl1c1giLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnJhZGl1c1lJZGVudGlmaWVy
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBz
X2lkZW50aWZpZXIsICgiU1ZHUmFkaXVzWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50
aWZpZXIoIlNWR1JhZGl1c1kiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggZmVmN2VlZC4uMTlmNWQz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcApAQCAtNjcsMTMgKzY3LDEzIEBAIFJlZjxTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhCiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6a2VybmVs
VW5pdExlbmd0aFhJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHS2VybmVsVW5pdExlbmd0aFgi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0TGVuZ3Ro
WCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lk
ZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHS2Vy
bmVsVW5pdExlbmd0aFkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdL
ZXJuZWxVbml0TGVuZ3RoWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmNwcAppbmRleCA4NmRjYWYxLi5iODA4YmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCkBAIC02MSwxMyArNjEs
MTMgQEAgUmVmPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVxdWVuY3lYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAo
IlNWR0Jhc2VGcmVxdWVuY3lYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigi
U1ZHQmFzZUZyZXF1ZW5jeVgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVxdWVuY3lZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAo
IlNWR0Jhc2VGcmVxdWVuY3lZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigi
U1ZHQmFzZUZyZXF1ZW5jeVkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5jcHAKaW5kZXggZjMyYzMyZi4uMGE3NWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJFbGVtZW50LmNwcApAQCAtODIsMTMgKzgyLDEzIEBAIFJlZjxTVkdGaWx0ZXJFbGVt
ZW50PiBTVkdGaWx0ZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVz
WElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdGaWx0ZXJSZXNYIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHRmlsdGVyUmVzWCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgU1ZHRmlsdGVyRWxlbWVudDo6ZmlsdGVyUmVzWUlkZW50aWZpZXIoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRp
ZmllciwgKCJTVkdGaWx0ZXJSZXNZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmll
cigiU1ZHRmlsdGVyUmVzWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHbHlwaE1hcC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKaW5k
ZXggYjc0N2M2ZC4uY2UwYjY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ds
eXBoTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKQEAgLTE0Myw3
ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU1ZHR2x5cGgmIHN2Z0dseXBoRm9yR2x5cGgo
R2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWdseXBoIHx8IGdseXBoID4g
bV9nbHlwaFRhYmxlLnNpemUoKSkgewotICAgICAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFNWR0dseXBoLCBkZWZhdWx0R2x5cGgsICgpKTsKKyAgICAgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTVkdHbHlwaD4gZGVmYXVsdEdseXBoOwogICAgICAgICAgICAgcmV0
dXJuIGRlZmF1bHRHbHlwaDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9nbHlwaFRhYmxl
W2dseXBoIC0gMV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwCmluZGV4IDQ4YmUwZGMu
LmI2NTE4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwCkBAIC0zNSw3ICszNSw3
IEBAIHZvaWQgU1ZHTGFuZ1NwYWNlOjpzZXRYbWxsYW5nKGNvbnN0IEF0b21pY1N0cmluZyYgeG1s
TGFuZykKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHTGFuZ1NwYWNlOjp4bWxzcGFjZSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3NwYWNlKSB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRlZmF1bHRTdHJpbmcsICgiZGVmYXVsdCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZGVmYXVsdFN0cmluZygiZGVmYXVsdCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gZGVmYXVs
dFN0cmluZzsKICAgICB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBTVkdMYW5nU3BhY2U6Omlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgCiB2b2lk
IFNWR0xhbmdTcGFjZTo6YWRkU3VwcG9ydGVkQXR0cmlidXRlcyhIYXNoU2V0PFF1YWxpZmllZE5h
bWU+JiBzdXBwb3J0ZWRBdHRyaWJ1dGVzKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIHhtbFByZWZpeCwgKCJ4bWwiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4geG1sUHJlZml4KCJ4bWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKIAogICAgIFF1YWxpZmllZE5hbWUgbGFuZ1dpdGhQcmVmaXggPSBYTUxOYW1lczo6bGFuZ0F0
dHI7CiAgICAgbGFuZ1dpdGhQcmVmaXguc2V0UHJlZml4KHhtbFByZWZpeCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKaW5kZXggMDY2ODdmMi4uZGY5NmVhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApAQCAtOTAsMTMgKzkwLDEzIEBAIFJl
ZjxTVkdNYXJrZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHTWFya2VyRWxl
bWVudDo6b3JpZW50VHlwZUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdPcmllbnRUeXBlIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHT3JpZW50VHlwZSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50QW5nbGVJ
ZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHT3JpZW50QW5nbGUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gc19pZGVudGlmaWVyKCJTVkdPcmllbnRBbmdsZSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKQEAgLTIzNyw3
ICsyMzcsNyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZShT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICBpZiAob3duZXJUeXBlLm1fb3JpZW50VHlw
ZS52YWx1ZSAhPSBTVkdNYXJrZXJPcmllbnRBdXRvKQogICAgICAgICByZXR1cm47CiAKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhdXRvU3RyaW5nLCAo
ImF1dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXV0b1N0cmluZygiYXV0byIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIG93bmVyVHlwZS5tX29yaWVudFR5cGUu
c3luY2hyb25pemUoJm93bmVyVHlwZSwgb3JpZW50VHlwZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1
dGVOYW1lLCBhdXRvU3RyaW5nKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50
LmNwcAppbmRleCA4YWMyOGRhLi4wNDVhZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVF
bGVtZW50LmNwcApAQCAtNjIsOSArNjIsOSBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0RGlz
YWJsZWQoYm9vbCBzZXREaXNhYmxlZCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTdHlsZUVs
ZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGRlZmF1bHRWYWx1ZSwgKCJ0ZXh0L2NzcyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBkZWZhdWx0VmFsdWUoInRleHQvY3NzIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuID0gZ2V0
QXR0cmlidXRlKFNWR05hbWVzOjp0eXBlQXR0cik7Ci0gICAgcmV0dXJuIG4uaXNOdWxsKCkgPyBk
ZWZhdWx0VmFsdWUgOiBuOworICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVlLmdl
dCgpIDogbjsKIH0KIAogdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnNldFR5cGUoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJikKQEAgLTc0LDkgKzc0LDkgQEAgdm9pZCBTVkdT
dHlsZUVsZW1lbnQ6OnNldFR5cGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25D
b2RlJikKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTdHlsZUVsZW1lbnQ6Om1lZGlhKCkgY29u
c3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBkZWZhdWx0VmFsdWUsICgiYWxsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRl
ZmF1bHRWYWx1ZSgiYWxsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBuID0gZmFzdEdldEF0dHJpYnV0ZShTVkdOYW1lczo6bWVk
aWFBdHRyKTsKLSAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZSA6IG47CisgICAg
cmV0dXJuIG4uaXNOdWxsKCkgPyBkZWZhdWx0VmFsdWUuZ2V0KCkgOiBuOwogfQogCiB2b2lkIFNW
R1N0eWxlRWxlbWVudDo6c2V0TWVkaWEoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYSwgRXhjZXB0
aW9uQ29kZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCmluZGV4IGU4YTNmMTIuLjIx
MWFmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtMTM0LDI3ICsxMzUsMjcgQEAgY29uc3QgU3RyaW5nJiBTVkdUcmFuc2Zv
cm06OnRyYW5zZm9ybVR5cGVQcmVmaXhGb3JQYXJzaW5nKFNWR1RyYW5zZm9ybVR5cGUgdHlwZSkK
ICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fVU5LTk9XTjoKICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX01BVFJJWDogewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBtYXRyaXhTdHJpbmcsIChBU0NJSUxpdGVy
YWwoIm1hdHJpeCgiKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBt
YXRyaXhTdHJpbmcoQVNDSUlMaXRlcmFsKCJtYXRyaXgoIikpOwogICAgICAgICByZXR1cm4gbWF0
cml4U3RyaW5nOwogICAgIH0KICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFOiB7Ci0g
ICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHRyYW5zbGF0ZVN0
cmluZywgKEFTQ0lJTGl0ZXJhbCgidHJhbnNsYXRlKCIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IHRyYW5zbGF0ZVN0cmluZyhBU0NJSUxpdGVyYWwoInRyYW5zbGF0
ZSgiKSk7CiAgICAgICAgIHJldHVybiB0cmFuc2xhdGVTdHJpbmc7CiAgICAgfQogICAgIGNhc2Ug
U1ZHX1RSQU5TRk9STV9TQ0FMRTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBzY2FsZVN0cmluZywgKEFTQ0lJTGl0ZXJhbCgic2NhbGUoIikpKTsKKyAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2NhbGVTdHJpbmcoQVNDSUlMaXRl
cmFsKCJzY2FsZSgiKSk7CiAgICAgICAgIHJldHVybiBzY2FsZVN0cmluZzsKICAgICB9CiAgICAg
Y2FzZSBTVkdfVFJBTlNGT1JNX1JPVEFURTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCByb3RhdGVTdHJpbmcsIChBU0NJSUxpdGVyYWwoInJvdGF0ZSgi
KSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiByb3RhdGVTdHJpbmco
QVNDSUlMaXRlcmFsKCJyb3RhdGUoIikpOwogICAgICAgICByZXR1cm4gcm90YXRlU3RyaW5nOwog
ICAgIH0gICAgCiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NLRVdYOiB7Ci0gICAgICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNrZXdYU3RyaW5nLCAoQVNDSUlMaXRl
cmFsKCJza2V3WCgiKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBz
a2V3WFN0cmluZyhBU0NJSUxpdGVyYWwoInNrZXdYKCIpKTsKICAgICAgICAgcmV0dXJuIHNrZXdY
U3RyaW5nOwogICAgIH0KICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1k6IHsKLSAgICAgICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc2tld1lTdHJpbmcsIChBU0NJ
SUxpdGVyYWwoInNrZXdZKCIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IHNrZXdZU3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2tld1koIikpOwogICAgICAgICByZXR1cm4g
c2tld1lTdHJpbmc7CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3U3BlYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCmlu
ZGV4IGFjODZlZTMuLjAwOThjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdW
aWV3U3BlYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcApAQCAt
ODQsMTkgKzg0LDE5IEBAIFNWR1ZpZXdTcGVjOjpTVkdWaWV3U3BlYyhTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdWaWV3U3BlYzo6dmlld0JveElk
ZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdWaWV3U3BlY1ZpZXdCb3hBdHRyaWJ1dGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdWaWV3U3BlY1ZpZXdCb3hBdHRyaWJ1
dGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19p
ZGVudGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1ZpZXdTcGVjOjpwcmVzZXJ2
ZUFzcGVjdFJhdGlvSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1ZpZXdTcGVjUHJlc2VydmVB
c3BlY3RSYXRpb0F0dHJpYnV0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIo
IlNWR1ZpZXdTcGVjUHJlc2VydmVBc3BlY3RSYXRpb0F0dHJpYnV0ZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgU1ZHVmlld1NwZWM6OnRyYW5zZm9ybUlkZW50aWZpZXIoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRp
ZmllciwgKCJTVkdWaWV3U3BlY1RyYW5zZm9ybUF0dHJpYnV0ZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBzX2lkZW50aWZpZXIoIlNWR1ZpZXdTcGVjVHJhbnNmb3JtQXR0cmlidXRlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNw
cAppbmRleCAzNTY4YmU0Li40NDEwYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5p
bWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIFNNSUxUaW1lIFNW
R1NNSUxFbGVtZW50OjpwYXJzZUNsb2NrVmFsdWUoY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIAog
ICAgIFN0cmluZyBwYXJzZSA9IGRhdGEuc3RyaXBXaGl0ZVNwYWNlKCk7CiAKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBpbmRlZmluaXRlVmFs
dWUsICgiaW5kZWZpbml0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBpbmRlZmluaXRl
VmFsdWUoImluZGVmaW5pdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBpZiAocGFyc2UgPT0gaW5kZWZpbml0ZVZhbHVlKQogICAgICAgICByZXR1cm4gU01JTFRp
bWU6OmluZGVmaW5pdGUoKTsKIApAQCAtNDUyLDE5ICs0NTIsMTkgQEAgdm9pZCBTVkdTTUlMRWxl
bWVudDo6cGFyc2VCZWdpbk9yRW5kKGNvbnN0IFN0cmluZyYgcGFyc2VTdHJpbmcsIEJlZ2luT3JF
bmQgYmVnaW4KIAogYm9vbCBTVkdTTUlMRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4sIHN1cHBvcnRlZEF0dHJpYnV0ZXMsICgp
KTsKLSAgICBpZiAoc3VwcG9ydGVkQXR0cmlidXRlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgc3Vw
cG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6OmJlZ2luQXR0cik7Ci0gICAgICAgIHN1cHBv
cnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjplbmRBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVk
QXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6OmR1ckF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRy
aWJ1dGVzLmFkZChTVkdOYW1lczo6cmVwZWF0RHVyQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0
dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjpyZXBlYXRDb3VudEF0dHIpOwotICAgICAgICBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6bWluQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0
dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjptYXhBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmli
dXRlcy5hZGQoU1ZHTmFtZXM6OmF0dHJpYnV0ZU5hbWVBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVk
QXR0cmlidXRlcy5hZGQoWExpbmtOYW1lczo6aHJlZkF0dHIpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PFF1YWxpZmllZE5hbWU+PiBzdXBwb3J0ZWRBdHRyaWJ1dGVzOworICAg
IGlmIChzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6YmVnaW5BdHRyKTsKKyAgICAgICAg
c3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmVuZEF0dHIpOworICAgICAg
ICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6ZHVyQXR0cik7CisgICAg
ICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpyZXBlYXREdXJBdHRy
KTsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJlcGVh
dENvdW50QXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05h
bWVzOjptaW5BdHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZH
TmFtZXM6Om1heEF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChT
VkdOYW1lczo6YXR0cmlidXRlTmFtZUF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVz
LmdldCgpLmFkZChYTGlua05hbWVzOjpocmVmQXR0cik7CiAgICAgfQotICAgIHJldHVybiBzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRy
TmFtZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuY29udGFpbnM8U1ZH
QXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0KIAogdm9pZCBTVkdTTUlMRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKQEAgLTY0Myw4ICs2NDMsOCBAQCBib29sIFNWR1NNSUxFbGVtZW50
Ojppc0Zyb3plbigpIGNvbnN0CiAgICAgCiBTVkdTTUlMRWxlbWVudDo6UmVzdGFydCBTVkdTTUlM
RWxlbWVudDo6cmVzdGFydCgpIGNvbnN0CiB7ICAgIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG5ldmVyLCAoIm5ldmVyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHdoZW5Ob3RBY3RpdmUsICgid2hlbk5vdEFjdGl2
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBuZXZlcigibmV2ZXIiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiB3aGVuTm90QWN0aXZlKCJ3aGVuTm90QWN0aXZlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSA9IGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJlc3RhcnRBdHRyKTsKICAgICBpZiAodmFs
dWUgPT0gbmV2ZXIpCiAgICAgICAgIHJldHVybiBSZXN0YXJ0TmV2ZXI7CkBAIC02NTUsNyArNjU1
LDcgQEAgU1ZHU01JTEVsZW1lbnQ6OlJlc3RhcnQgU1ZHU01JTEVsZW1lbnQ6OnJlc3RhcnQoKSBj
b25zdAogICAgIAogU1ZHU01JTEVsZW1lbnQ6OkZpbGxNb2RlIFNWR1NNSUxFbGVtZW50OjpmaWxs
KCkgY29uc3QKIHsgICAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBmcmVlemUsICgiZnJlZXplIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IGZyZWV6ZSgiZnJlZXplIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFt
ZXM6OmZpbGxBdHRyKTsKICAgICByZXR1cm4gdmFsdWUgPT0gZnJlZXplID8gRmlsbEZyZWV6ZSA6
IEZpbGxSZW1vdmU7CiB9CkBAIC02ODgsNyArNjg4LDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1l
bnQ6OnJlcGVhdENvdW50KCkgY29uc3QKICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgaW5kZWZpbml0ZVZhbHVlLCAoImluZGVm
aW5pdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gaW5kZWZpbml0ZVZhbHVlKCJpbmRl
ZmluaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKHZh
bHVlID09IGluZGVmaW5pdGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjppbmRlZmlu
aXRlKCk7CiAgICAgYm9vbCBvazsKQEAgLTExNDMsMTYgKzExNDMsMTYgQEAgYm9vbCBTVkdTTUlM
RWxlbWVudDo6cHJvZ3Jlc3MoU01JTFRpbWUgZWxhcHNlZCwgU1ZHU01JTEVsZW1lbnQqIHJlc3Vs
dEVsZW1lbnQsIGIKIHZvaWQgU1ZHU01JTEVsZW1lbnQ6Om5vdGlmeURlcGVuZGVudHNJbnRlcnZh
bENoYW5nZWQoTmV3T3JFeGlzdGluZ0ludGVydmFsIG5ld09yRXhpc3RpbmcpCiB7CiAgICAgQVNT
RVJUKG1faW50ZXJ2YWxCZWdpbi5pc0Zpbml0ZSgpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoSGFzaFNldDxTVkdTTUlMRWxlbWVudCo+LCBsb29wQnJlYWtlciwgKCkpOwot
ICAgIGlmIChsb29wQnJlYWtlci5jb250YWlucyh0aGlzKSkKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxTVkdTTUlMRWxlbWVudCo+PiBsb29wQnJlYWtlcjsKKyAgICBpZiAobG9v
cEJyZWFrZXIuZ2V0KCkuY29udGFpbnModGhpcykpCiAgICAgICAgIHJldHVybjsKLSAgICBsb29w
QnJlYWtlci5hZGQodGhpcyk7CisgICAgbG9vcEJyZWFrZXIuZ2V0KCkuYWRkKHRoaXMpOwogICAg
IAogICAgIGZvciAoYXV0byYgZGVwZW5kZW50IDogbV90aW1lRGVwZW5kZW50cykgewogICAgICAg
ICBkZXBlbmRlbnQtPmNyZWF0ZUluc3RhbmNlVGltZXNGcm9tU3luY2Jhc2UodGhpcywgbmV3T3JF
eGlzdGluZyk7CiAgICAgfQogCi0gICAgbG9vcEJyZWFrZXIucmVtb3ZlKHRoaXMpOworICAgIGxv
b3BCcmVha2VyLmdldCgpLnJlbW92ZSh0aGlzKTsKIH0KICAgICAKIHZvaWQgU1ZHU01JTEVsZW1l
bnQ6OmNyZWF0ZUluc3RhbmNlVGltZXNGcm9tU3luY2Jhc2UoU1ZHU01JTEVsZW1lbnQqIHN5bmNi
YXNlLCBOZXdPckV4aXN0aW5nSW50ZXJ2YWwpCg==
</data>
<flag name="review"
          id="293554"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268581</attachid>
            <date>2016-01-08 13:50:11 -0800</date>
            <delta_ts>2016-01-08 20:45:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152902-7.diff</filename>
            <type>text/plain</type>
            <size>265712</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KaW5k
ZXggZWY1NDYwMi4uNzIzNjg3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSVdyYXBwZXJPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSVdyYXBwZXJPYmplY3QubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NhbGxi
YWNrT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCkBAIC00MSw4ICs0Miw4IEBAIHB1YmxpYzoKIAogc3Rh
dGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmplY3RIYW5k
bGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEpTQVBJV3Jh
cHBlck9iamVjdEhhbmRsZU93bmVyLCBqc1dyYXBwZXJPYmplY3RIYW5kbGVPd25lciwgKCkpOwot
ICAgIHJldHVybiAmanNXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyPiBqc1dyYXBwZXJPYmplY3RI
YW5kbGVPd25lcjsKKyAgICByZXR1cm4gJmpzV3JhcHBlck9iamVjdEhhbmRsZU93bmVyLmdldCgp
OwogfQogCiB2b2lkIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRleCBhNzJkMTliLi4xYzFmN2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgIldlYWtIYW5kbGVPd25lci5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRy
YXMuaCIKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9OU01hcFRhYmxlU1BJLmg+CiAKIGNsYXNzIEpT
TWFuYWdlZFZhbHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpA
QCAtNDcsOCArNDgsOCBAQCBwdWJsaWM6CiAKIHN0YXRpYyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyKiBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIsIGpzTWFuYWdlZFZhbHVlSGFu
ZGxlT3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI+IGpzTWFu
YWdlZFZhbHVlSGFuZGxlT3duZXI7CisgICAgcmV0dXJuICZqc01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyLmdldCgpOwogfQogCiBjbGFzcyBXZWFrVmFsdWVSZWYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggYTFlMDlhOC4uZWJiY2NjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTYtMDEtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTAorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyOTAyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICBNb3N0bHkg
bWVjaGFuaWNhbCBjb252ZXJzaW9uIHRvIE5ldmVyRGVzdHJveWVkIHRocm91Z2hvdXQgSmF2YVNj
cmlwdENvcmUuCisKKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1tOgorICAgICAg
ICAoanNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIpOgorICAgICAgICAqIEFQSS9KU01hbmFn
ZWRWYWx1ZS5tbToKKyAgICAgICAgKG1hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24pOgorICAgICAgICAqIGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RGVtYW5kRXhlY3V0YWJs
ZUFsbG9jYXRvcjo6YWxsb2NhdG9ycyk6CisKIDIwMTYtMDEtMDYgIEFuZHkgVmFuV2Fnb25lciAg
PHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBEYXRlLnByb3RvdHlw
ZSBzaG91bGQgYmUgYSBwbGFpbiBvYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggZWM3N2E3NC4uODNkN2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgog
I2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01Miw4ICs1Myw4IEBAIGNvbnN0
IGNoYXIqIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdyb3VwID0gImJh
Y2t0cmFjZSI7CiAvLyBjcmVhdGUgb2JqZWN0cyBpbiB0aGUgc2FtZSBncm91cC4KIHN0YXRpYyBT
dHJpbmcgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9p
bnRBY3Rpb24mIGFjdGlvbikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgQXRvbWljU3RyaW5nLCBvYmplY3RHcm91cCwgKCJicmVha3BvaW50LWFjdGlvbi0iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgcmV0dXJuIG1ha2VTdHJp
bmcob2JqZWN0R3JvdXAsIFN0cmluZzo6bnVtYmVyKGFjdGlvbi5pZGVudGlmaWVyKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gb2JqZWN0R3JvdXAoQVNDSUlMaXRlcmFsKCJi
cmVha3BvaW50LWFjdGlvbi0iKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcob2JqZWN0R3JvdXAu
Z2V0KCksIFN0cmluZzo6bnVtYmVyKGFjdGlvbi5pZGVudGlmaWVyKSk7CiB9CiAKIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoQWdlbnRDb250ZXh0JiBjb250
ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRv
ci5jcHAKaW5kZXggZDI5MTFhMy4uN2FiYWViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCkBAIC0xMzQsOCArMTM0LDggQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8UGFnZVJlc2VydmF0aW9uLCAxNj4gcmVzZXJ2YXRpb25zOwogICAg
IHN0YXRpYyBIYXNoU2V0PERlbWFuZEV4ZWN1dGFibGVBbGxvY2F0b3IqPiYgYWxsb2NhdG9ycygp
CiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxE
ZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yKj4sIHNBbGxvY2F0b3JzLCAoKSk7Ci0gICAgICAgIHJl
dHVybiBzQWxsb2NhdG9yczsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8
RGVtYW5kRXhlY3V0YWJsZUFsbG9jYXRvcio+PiBzZXQ7CisgICAgICAgIHJldHVybiBzZXQ7CiAg
ICAgfQogCiAgICAgc3RhdGljIFN0YXRpY0xvY2smIGFsbG9jYXRvcnNNdXRleCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI2
ODI0MmYuLmI4ZDkwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDEtMDggIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBp
bnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTAorICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTUyOTAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJs
c3Nvbi4KKworICAgICAgICBNb3N0bHkgbWVjaGFuaWNhbCBjb252ZXJzaW9uIHRvIE5ldmVyRGVz
dHJveWVkIHRocm91Z2hvdXQgV1RGLgorCisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRo
cmVhZHMuY3BwOgorICAgICAgICAoV1RGOjp0aHJlYWRNYXBNdXRleCk6CisgICAgICAgIChXVEY6
OnRocmVhZE1hcCk6CisKIDIwMTYtMDEtMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFsbG93IHRvIHNhdmUgYW5kIHJlc3RvcmUg
c2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wLmNwcAppbmRleCBlMzUyOTBkLi43MDFjMThkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxv
b3AuaCIKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KIApAQCAtNTYs
OCArNTcsOCBAQCB2b2lkIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpCiAKIFJ1bkxv
b3AmIFJ1bkxvb3A6OmN1cnJlbnQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChXVEY6OlRocmVhZFNwZWNpZmljPFJ1bkxvb3A6OkhvbGRlcj4sIHJ1bkxvb3BIb2xkZXIs
ICgpKTsKLSAgICByZXR1cm4gcnVuTG9vcEhvbGRlci0+cnVuTG9vcCgpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzxIb2xkZXI+PiBydW5Mb29wSG9sZGVyOworICAg
IHJldHVybiBydW5Mb29wSG9sZGVyLmdldCgpLT5ydW5Mb29wKCk7CiB9CiAKIFJ1bkxvb3AmIFJ1
bkxvb3A6Om1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVh
ZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IGE5N2Nm
MzIuLjcwNWYzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRz
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbmNsdWRlICJUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgiCiAjaW5j
bHVkZSAiVGhyZWFkU3BlY2lmaWMuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SYXdQb2ludGVyLmg+CiAj
aW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtOTks
NyArMTAwLDcgQEAgdm9pZCB0aHJlYWRXYXNKb2luZWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIHN0
YXRpYyBNdXRleCYgdGhyZWFkTWFwTXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChNdXRleCwgbXV0ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
TXV0ZXg+IG11dGV4OwogICAgIHJldHVybiBtdXRleDsKIH0KIApAQCAtMTI1LDcgKzEyNiw3IEBA
IHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAKIHN0YXRpYyBUaHJlYWRNYXAmIHRocmVhZE1h
cCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRocmVhZE1hcCwgbWFw
LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRocmVhZE1hcD4gbWFwOwogICAgIHJl
dHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYzdlMmNmLi4wZTNhMjYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTI0IEBACisyMDE2LTAxLTA4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KKworICAgICAgICBVc2UgTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCBvZiBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1
MjkwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAg
TW9zdGx5IG1lY2hhbmljYWwgY29udmVyc2lvbiB0byBOZXZlckRlc3Ryb3llZCB0aHJvdWdob3V0
IFdlYkNvcmUuCisKKyAgICAgICAgKiBNb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246Om1vZGVSZWFkT25seSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
bW9kZVJlYWRXcml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVZl
cnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFk
T25seUxlZ2FjeSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRX
cml0ZUxlZ2FjeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UmVxdWVzdDo6cmVhZHlTdGF0ZSk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjplbmRlZEtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVh
bUVuZGVkV2l0aEVycm9yKToKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpxdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6c3VwcG9ydHNNaW1lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudDo6c3VwcG9ydHNGaWxlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3lu
dGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9w
ZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUpOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKToK
KyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFJlc29s
dXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNl
QXV0aG9yU3R5bGVTaGVldCk6CisgICAgICAgICogZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjdW11bGF0b3JNYXApOgorICAgICAgICAqIGRvbS9E
T01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1N1cHBvcnRlZFNWRzEw
RmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjppc1N1cHBvcnRlZFNWRzExRmVhdHVyZSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpy
ZWFkeVN0YXRlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0KToKKyAgICAgICAgKiBkb20vRXZlbnREaXNw
YXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hT
aW11bGF0ZWRDbGljayk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ1NTQ29udGVudFR5cGUpOgorICAgICAgICAqIGRv
bS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjdGl2ZU11dGF0aW9u
T2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OnN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJz
KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuY3BwOgorICAgICAgICAqIGRvbS9Qc2V1
ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBzZXVkb0VsZW1lbnRUYWdOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZl
bnRzKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpxdWFsaWZpZWROYW1lQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6bnVsbFFOYW1lKToKKyAg
ICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0xlZ2Fj
eVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
bGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZVNwYW5DbGFzc1N0cmluZyk6CisgICAg
ICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
YXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlRWxlbWVudCk6CisgICAgICAgICog
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0ludGVyY2hhbmdlTmV3bGluZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5n
ZUNvbnZlcnRlZFNwYWNlU3Bhbik6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpub25CcmVha2luZ1NwYWNlU3RyaW5nKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVs
YXRvcjo6c3R5bGVOb2RlQ2xvc2VUYWcpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3Vw
SW50ZXJuYWwpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KToKKyAgICAgICAgKiBodG1sL0Jhc2VDaG9vc2Vy
T25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaG9v
c2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAg
ICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL0RhdGVUaW1lSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFu
Z2UpOgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAg
ICAgICAqIGh0bWwvRW1haWxJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxp
ZEVtYWlsQWRkcmVzcyk6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtS2V5R2VuZXJhdG9yOjpmb3JtS2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OmZvcm1TdGF0ZVNpZ25hdHVyZSk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyb290RWRpdGFibGVFbGVtZW50TWFwKToKKyAgICAg
ICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxC
dXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Ojpm
b3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRpbmdEaXNhYmxlcjo6ZGlzYWJsZWRTdWJ0
cmVlUm9vdHMpOgorICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAg
ICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGlua0xvYWRF
dmVudFNlbmRlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRvY3VtZW50VG9FbGVtZW50U2V0TWFwKToKKyAgICAgICAgKiBodG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVjb2duaXplZFRhZ05h
bWUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAq
IGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1
dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRz
KToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dGl0bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1YnRpdGxlVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92
ZXJsYXkpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICog
aHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2
ZW50U2VuZGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRpcmVjdGlvblN0cmluZyk6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgor
ICAgICAgICAqIGh0bWwvSW5wdXRUeXBlTmFtZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OmJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6
Y2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0VHlwZU5hbWVzOjpkYXRldGltZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVO
YW1lczo6ZGF0ZXRpbWVsb2NhbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6
ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmhpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGVOYW1lczo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6
Om1vbnRoKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpudW1iZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZU5hbWVzOjpyYWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVO
YW1lczo6cmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnJlc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpzZWFyY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0aW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRU
eXBlTmFtZXM6OndlZWspOgorICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKHBsYXliYWNrU3RhdGVXYWl0aW5nKToKKyAgICAgICAgKHBsYXliYWNrU3RhdGVQbGF5
aW5nKToKKyAgICAgICAgKHBsYXliYWNrU3RhdGVFbmRlZCk6CisgICAgICAgICogaHRtbC9Nb250
aElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb250aElucHV0VHlwZTo6Y3JlYXRl
U3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL051bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICog
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlw
ZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL1N0ZXBSYW5nZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFjY2VwdGFibGVFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JTdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
ZXBSYW5nZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAg
ICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lu
cHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVw
ZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVkaWFDb250cm9sVGltZVJlbWFp
bmluZ0Rpc3BsYXlFbGVtZW50U2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudFNoYWRvd1BzZXVkb0lkKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6Ok1ldGVySW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1ldGVyVmFsdWVFbGVtZW50Ojp2YWx1ZVBzZXVkb0lkKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2xpZGVyVGh1bWJTaGFkb3dQ
c2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjptZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRv
SWQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1h
aW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlv
bktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdv
cmQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2s6OmNhcHRpb25zS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmRl
c2NyaXB0aW9uc0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpjaGFwdGVy
c0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjptZXRhZGF0YUtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpmb3JjZWRLZXl3b3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFjazo6ZGlzYWJsZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFjazo6aGlkZGVuS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OnNob3dpbmdLZXl3b3JkKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQc2V1ZG9JZCk6CisgICAg
ICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRLZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Om1pZGRsZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZW5kS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpsZWZ0S2V5d29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpyaWdodEtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6dmVydGljYWxHcm93
aW5nTGVmdEtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6dmVydGljYWxHcm93aW5nUmlnaHRL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNl
dWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVk
b0lkKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svVlRUUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJl
Z2lvbjo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6c2V0U2Nyb2xsKToK
KyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6VlRUUmVnaW9uOjp0ZXh0VHJhY2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFz
cyk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
azo6bWFpbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2lnbktleXdv
cmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCk6CisgICAgICAg
ICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVU
eXBlVG9UYWdOYW1lKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRQYXJzZXI6OmNvbGxlY3RNZXRhZGF0YUhlYWRlcik6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVQc2V1ZG9D
bGFzc01hc2spOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9y
L1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFn
ZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgor
ICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJldmVudGVkTG9hZCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmluaXRpYXRvck5hbWUpOgorICAgICAgICAqIGxvYWRlci9p
Y29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRl
ZmF1bHREYXRhYmFzZUZpbGVuYW1lKToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXBk
YXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91bmRDU1MpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MpOgor
ICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2YVNjcmlwdFVSTHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUpOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NX
aXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c1dpdGhC
ZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Zm9jdXNEaXJlY3Rpb25Gb3JLZXkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAg
KiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmFz
ZTo6cGxhdGZvcm0pOgorICAgICAgICAqIHBhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwYWdlVmlzaWJpbGl0eVN0YXRlU3RyaW5nKToKKyAgICAgICAgKiBw
YWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9yaWdpbkFjY2Vzc01h
cCk6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZSk6CisgICAgICAgICogcGFnZS9h
bmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hh
ZG93Rm9yQmxlbmRpbmcpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1h
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtl
eWZyYW1lQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnBvaW50ZXJDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpt
b3ZlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsVGV4dEN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpjZWxsQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmFsaWFzQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6Onpvb21JbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjp6b29tT3V0Q3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvcHlDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9uZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpwcm9ncmVzc0N1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
Ojpub0Ryb3BDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm90QWxsb3dlZEN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjppQmVhbUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjp3YWl0Q3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OmhlbHBDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
ZWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aFJlc2l6ZUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpub3J0aEVhc3RSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6bm9ydGhXZXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnNvdXRoUmVz
aXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnNvdXRoRWFzdFJlc2l6ZUN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzb3V0aFdlc3RSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6d2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aFNvdXRoUmVzaXpl
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVhc3RXZXN0UmVzaXplQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6Om5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29sdW1uUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnJvd1Jlc2l6ZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjptaWRkbGVQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OmVhc3RQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoUGFubmlu
Z0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aEVhc3RQYW5uaW5nQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6Om5vcnRoV2VzdFBhbm5pbmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c291dGhQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnNvdXRoRWFzdFBhbm5p
bmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6c291dGhXZXN0UGFubmluZ0N1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjp3ZXN0UGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpn
cmFiQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmdyYWJiaW5nQ3Vyc29yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRMYW5n
dWFnZXNPdmVycmlkZSk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjptZWRpYU1JTUVUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSk6
CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bG9jYWxVUkxTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BsYXlJc29sYXRlZFVS
TFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2VjdXJlU2NoZW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6ZW1w
dHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2NoZW1lc0ZvcmJpZGRlbkZy
b21Eb21haW5SZWxheGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkRpc3BsYXlPbmx5SWZD
YW5SZXF1ZXN0U2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpub3RBbGxvd2luZ0phdmFzY3Jp
cHRVUkxzU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzQWxsb3dpbmdMb2NhbFN0
b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyk6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVz
QWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkNPUlNFbmFibGVkU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dGhlbWUpOgorICAg
ICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGFua1VSTCk6Cisg
ICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb246OmluaXRpYWxOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9B
dWRpb1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRT
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldENvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXNGb3JTdWJqZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphdWRpb0Rlc3RpbmF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBhaW50UmVjdE1hcCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9u
T2N0ZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFBsYWluKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF5ZXJUb1ByaXZhdGVN
YXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3Jl
OjptaW1lQ29tbW9uVHlwZXNDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjptaW1lTW9kZXJuVHlw
ZXNDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxl
ck1lbW9yeUhhbmRsZXJJT1MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGlsZUNvbnRyb2xsZXJN
ZW1vcnlIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFn
ZXIubW06CisgICAgICAgICgrW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIHNoYXJlZE1hbmFnZXJdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dXBk
YXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9i
c2VydmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYlRocmVhZEdldE9ic2VydmVkQ29udGVudE1vZGlm
aWVycyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmZvbnRGcm9tTlNGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVRoZW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW06CisgICAgICAgIChXZWJDb3JlUmVwb3J0VGhyZWFkVmlv
bGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpwbGF0Zm9ybUNlbnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUcmFj
a0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6dHlwZSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZVhTU1Byb3RlY3Rpb25IZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpblJlc291cmNlSGFuZGxlQ29u
c3RydWN0b3JNYXApOgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpblJlc291cmNlSGFuZGxlU3lu
Y2hyb25vdXNMb2FkZXJNYXApOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlSG9zdHMpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpZW50Q2VydHMpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTo6Z2V0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2ZMb2NhbGVD
YWNoZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y291bnRlck1hcHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhlbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXN0b21Gb2N1c1JpbmdDb2xvcik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRN
YXApOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjp6ZXJvTGVuZ3RoTGluZWNhcFBhdGgp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vblNjYWxpbmdTdHJva2VQYXRoKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcHBlckZpbHRlck1hc2tl
clRhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyVGFncyk6CisgICAgICAgIChXZWJDb3Jl
OjpmaWxsQW5kU3Ryb2tlVGFncyk6CisgICAgICAgIChXZWJDb3JlOjpjaGFpbmFibGVSZXNvdXJj
ZVRhZ3MpOgorICAgICAgICAqIHN2Zy9TVkdBbmdsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmdsZTo6dmFsdWVBc1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xv
cik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3RhdGVNb2RlKToKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRp
b25FbGVtZW50OjpzZXRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
RWxlbWVudDo6aXNBY2N1bXVsYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjppbmhlcml0c0Zyb21Q
cm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0
TGVuZ3RoWElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6b3JkZXJYSWRlbnRpZmllcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6b3JkZXJZSWRlbnRpZmllcik6
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhY
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxl
bWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVE
cm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2
Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVy
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpyYWRpdXNYSWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpyYWRpdXNZSWRlbnRpZmllcik6
CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0
aFhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNl
RWxlbWVudDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVxdWVuY3lZSWRlbnRpZmllcik6CisgICAgICAg
ICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVy
RWxlbWVudDo6ZmlsdGVyUmVzWElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyRWxlbWVudDo6ZmlsdGVyUmVzWUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2Zy9TVkdHbHlw
aE1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR2x5cGhNYXA6OnN2Z0dseXBoRm9yR2x5cGgp
OgorICAgICAgICAqIHN2Zy9TVkdMYW5nU3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGFuZ1NwYWNlOjp4bWxzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OmFk
ZFN1cHBvcnRlZEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudEFuZ2xlSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6
ZU9yaWVudFR5cGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1N0eWxlRWxlbWVudDo6bWVkaWEpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFy
c2luZyk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1ZpZXdTcGVjOjp2aWV3Qm94SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdW
aWV3U3BlYzo6cHJlc2VydmVBc3BlY3RSYXRpb0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVmlld1NwZWM6OnRyYW5zZm9ybUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2Zy9hbmlt
YXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1l
bnQ6OnBhcnNlQ2xvY2tWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6
OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OmZpbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlcGVhdENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpub3RpZnlEZXBlbmRlbnRzSW50ZXJ2YWxDaGFuZ2VkKToK
KwogMjAxNi0wMS0wNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IHNob3dSZW5kZXJUcmVlOiBhZGQgaW5saW5lLWJsb2NrL2lubGluZS9ibG9jayBjb2x1bW4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBs
YXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKaW5kZXggNGFlNDI3
ZC4uOGRjMDgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
LmNwcApAQCAtMjYsMTQgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oIgogCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0
cmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5KGJvb2wgYXZhaWxhYmxlKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGF2YWlsYWJsZVN0
cmluZywgKCJhdmFpbGFibGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbm90QXZh
aWxhYmxlU3RyaW5nLCAoIm5vdC1hdmFpbGFibGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXZh
aWxhYmxlU3RyaW5nKCJhdmFpbGFibGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBub3RBdmFpbGFi
bGVTdHJpbmcoIm5vdC1hdmFpbGFibGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKIAogICAgIHJldHVybiBhdmFpbGFibGUgPyBhdmFpbGFibGVTdHJpbmcgOiBub3RBdmFp
bGFibGVTdHJpbmc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmNwcAppbmRleCA4NjM4MGUxLi4wMzY2MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0zOCwyNSArMzksMjUgQEAgSURCQ3Vyc29yOjpJREJDdXJzb3IoKQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmV4dCwgKCJuZXh0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5leHQoIm5leHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gbmV4dDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6
OmRpcmVjdGlvbk5leHRVbmlxdWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG5leHR1bmlxdWUsICgibmV4dHVuaXF1ZSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBuZXh0dW5pcXVlKCJuZXh0dW5pcXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5leHR1bmlxdWU7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2KCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwcmV2LCAoInByZXYiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gcHJldigicHJldiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiBwcmV2OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNv
cjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgcHJldnVuaXF1ZSwgKCJwcmV2dW5pcXVlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IHByZXZ1bmlxdWUoInByZXZ1bmlxdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcHJldnVuaXF1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4
IDUxNzA3NzcuLjI1OWZiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwz
MSArNDAsMzEgQEAgSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246
Om1vZGVSZWFkT25seSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgcmVhZG9ubHksICgicmVhZG9ubHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
cmVhZG9ubHkoInJlYWRvbmx5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIHJlYWRvbmx5OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5z
YWN0aW9uOjptb2RlUmVhZFdyaXRlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCByZWFkd3JpdGUsICgicmVhZHdyaXRlIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IHJlYWR3cml0ZSgicmVhZHdyaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3cml0ZTsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNpb25DaGFuZ2UoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHZlcnNpb25jaGFuZ2UsICgidmVy
c2lvbmNoYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB2ZXJzaW9uY2hhbmdlKCJ2ZXJzaW9u
Y2hhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IHZlcnNpb25jaGFuZ2U7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246
Om1vZGVSZWFkT25seUxlZ2FjeSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgiMCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBy
ZWFkb25seSgiMCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiByZWFkb25seTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6
bW9kZVJlYWRXcml0ZUxlZ2FjeSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgcmVhZHdyaXRlLCAoIjEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
cmVhZHdyaXRlKCIxIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIHJlYWR3cml0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwCmluZGV4IDhiMmYyMGQuLmJm
Y2RkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2Fj
eS9MZWdhY3lSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZWdhY3kvTGVnYWN5UmVxdWVzdC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNSwxMyArMTM2LDEzIEBAIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gTGVnYWN5UmVxdWVzdDo6dHJhbnNhY3Rpb24oKSBjb25zdAogY29uc3QgU3RyaW5nJiBM
ZWdhY3lSZXF1ZXN0OjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0
YXRlID09IElEQlJlcXVlc3RSZWFkeVN0YXRlOjpQZW5kaW5nIHx8IG1fcmVhZHlTdGF0ZSA9PSBJ
REJSZXF1ZXN0UmVhZHlTdGF0ZTo6RG9uZSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgcGVuZGluZywgKCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGRvbmUsICgiZG9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBwZW5k
aW5nKCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZG9uZSgiZG9uZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBJ
REJSZXF1ZXN0UmVhZHlTdGF0ZTo6UGVuZGluZykKLSAgICAgICAgcmV0dXJuIHBlbmRpbmc7Cisg
ICAgICAgIHJldHVybiBwZW5kaW5nLmdldCgpOwogCi0gICAgcmV0dXJuIGRvbmU7CisgICAgcmV0
dXJuIGRvbmUuZ2V0KCk7CiB9CiAKIHZvaWQgTGVnYWN5UmVxdWVzdDo6bWFya0Vhcmx5RGVhdGgo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlh
Q29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggODdiYzM4Mi4uZjhmM2VlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9s
c0hvc3QuY3BwCkBAIC00NSwxOSArNDUsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBh
dXRvbWF0aWMsICgiYXV0b21hdGljIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGF1dG9t
YXRpYygiYXV0b21hdGljIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIGF1dG9tYXRpYzsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRy
b2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZvcmNlZE9uLCAoImZvcmNlZC1vbmx5Iiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZvcmNlZE9uKCJmb3JjZWQtb25seSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBmb3JjZWRPbjsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6YWx3YXlzT25LZXl3b3Jk
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBhbHdheXNPbiwgKCJhbHdheXMtb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4g
YWx3YXlzT24oImFsd2F5cy1vbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBhbHdheXNPbjsKIH0KIApAQCAtMjMwLDEyICsyMzAsMTIgQEAgU3RyaW5n
IE1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZURpc3BsYXlOYW1lKCkgY29uc3QKIAog
U3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUoKSBjb25zdAogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5vbmUsIChBU0NJSUxp
dGVyYWwoIm5vbmUiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5vbmUo
QVNDSUlMaXRlcmFsKCJub25lIikpOwogICAgIFN0cmluZyB0eXBlID0gbm9uZTsKICAgICAKICNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGFpcnBsYXksIChBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSkp
OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHR2b3V0LCAoQVND
SUlMaXRlcmFsKCJ0dm91dCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
YWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKTsKICAgICAKICAgICBNZWRp
YVBsYXllciogcGxheWVyID0gbV9tZWRpYUVsZW1lbnQtPnBsYXllcigpOwogICAgIGlmICghcGxh
eWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCmluZGV4IDRlMTI1NDMuLjgyOWQxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC05NSwxOSArOTUsMTkg
QEAgTWVkaWFTb3VyY2U6On5NZWRpYVNvdXJjZSgpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVk
aWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcGVuLCAoIm9wZW4iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gb3Blbigib3BlbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiBvcGVuOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291
cmNlOjpjbG9zZWRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBjbG9zZWQsICgiY2xvc2VkIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IGNsb3NlZCgiY2xvc2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNsb3NlZDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYVNvdXJjZTo6ZW5kZWRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBlbmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9CiAKQEAgLTQ0MCw4ICs0NDAsOCBAQCB2
b2lkIE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShjb25zdCBBdG9taWNTdHJpbmcmIGVycm9yLCBF
eGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJy
b3IoY29uc3QgQXRvbWljU3RyaW5nJiBlcnJvciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbmV0d29y
aywgKCJuZXR3b3JrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRlY29k
ZSwgKCJkZWNvZGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbmV0d29yaygibmV0d29y
ayIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRlY29kZSgiZGVjb2RlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBMT0coTWVkaWFTb3VyY2UsICJNZWRp
YVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3IoJXApIDogJXMiLCB0aGlzLCBlcnJvci5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCBhYThi
MDUyLi41ZTE0NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC02Niw3ICs2Niw3IEBA
IHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0
YWRhdGFJdGVtVHlwZSAqLCBKU0NvbnRlCiAKIHN0YXRpYyBTdHJpbmcgcXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnRTY3JpcHQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHNjcmlwdCwgKFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCwg
c2l6ZW9mKFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCkpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3JpcHQoUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnRKYXZhU2NyaXB0LCBzaXplb2YoUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0
KSk7CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApAQCAtODksMTMgKzg5LDEzIEBAIGJvb2wgUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKICAgICAgICAgImF1ZGlvL3gtbTRyIiwgImF1ZGlvL3gtbXAzIiwgImF1ZGlvL3gt
bXBlZyIsICJhdWRpby94LW1wZWczIiwgImF1ZGlvL3gtbXBlZ3VybCIsICJhdWRpby94LXNjcGxz
IiwgImF1ZGlvL3gtd2F2IiwKICAgICAgICAgInZpZGVvLzNncHAiLCAidmlkZW8vM2dwcDIiLCAi
dmlkZW8vbXA0IiwgInZpZGVvL3F1aWNrdGltZSIsICJ2aWRlby94LW00diIKICAgICB9OwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4sIHR5cGVIYXNo
LCAoKSk7Ci0gICAgaWYgKCF0eXBlSGFzaC5zaXplKCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB0eXBlSGFzaDsKKyAgICBpZiAoIXR5cGVIYXNoLmdldCgp
LnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgodHlwZXMpOyArK2kpCi0gICAgICAgICAgICB0eXBlSGFzaC5hZGQodHlwZXNbaV0pOworICAg
ICAgICAgICAgdHlwZUhhc2guZ2V0KCkuYWRkKHR5cGVzW2ldKTsKICAgICB9CiAKLSAgICByZXR1
cm4gdHlwZUhhc2guY29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiB0eXBlSGFzaC5nZXQo
KS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTEw
NSwxMyArMTA1LDEzIEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRz
RmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKICAgICAgICAgIm0zdTgiLCAi
bTRhIiwgIm00YiIsICJtNHAiLCAibTRyIiwgIm00diIsICJtb3YiLCAibXAzIiwgIm1wMyIsICJt
cDQiLCAibXBlZyIsICJtcGciLCAibXF2IiwgInBscyIsICJxdCIsCiAgICAgICAgICJzbmQiLCAi
c3dhIiwgInRzIiwgInVsdyIsICJ3YXYiCiAgICAgfTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBleHRlbnNpb25IYXNoLCAoKSk7Ci0gICAgaWYg
KCFleHRlbnNpb25IYXNoLnNpemUoKSkgeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
U2V0PFN0cmluZz4+IGV4dGVuc2lvbkhhc2g7CisgICAgaWYgKCFleHRlbnNpb25IYXNoLmdldCgp
LnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgoZXh0ZW5zaW9ucyk7ICsraSkKLSAgICAgICAgICAgIGV4dGVuc2lvbkhhc2guYWRkKGV4dGVu
c2lvbnNbaV0pOworICAgICAgICAgICAgZXh0ZW5zaW9uSGFzaC5nZXQoKS5hZGQoZXh0ZW5zaW9u
c1tpXSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGV4dGVuc2lvbkhhc2guY29udGFpbnMoZXh0ZW5z
aW9uKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9uSGFzaC5nZXQoKS5jb250YWlucyhleHRlbnNpb24p
OwogfQogCiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6UXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCmluZGV4IDdmYjEz
ZTguLjdmMTc1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNwZWVjaFN5bnRo
ZXNpc0V2ZW50LmgiCiAjaW5jbHVkZSAiU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTE5Miw4ICsxOTMsOCBAQCB2b2lkIFNw
ZWVjaFN5bnRoZXNpczo6aGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKiB1dHRlcmFuYwogICAgIAogdm9pZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZl
bnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1
dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgd29yZEJv
dW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ3b3JkIikpKTsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nLCAo
QVNDSUlMaXRlcmFsKCJzZW50ZW5jZSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IFN0cmluZz4gd29yZEJvdW5kYXJ5U3RyaW5nKEFTQ0lJTGl0ZXJhbCgid29yZCIpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBzZW50ZW5jZUJvdW5kYXJ5U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgic2VudGVuY2UiKSk7CiAKICAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7
CiAgICAgY2FzZSBTcGVlY2hXb3JkQm91bmRhcnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA5
MWJhMzEyLi41NGFjYjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTE4NCw4ICsxODQsOCBA
QCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFt
ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAgICAgU3RyaW5nIHN0cmluZ0ZvckNhY2hlID0g
U3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZyk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
Q1NTUHJvcGVydHlJbmZvPiBDU1NQcm9wZXJ0eUluZm9NYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5SW5mb01hcCwgcHJvcGVydHlJbmZvQ2FjaGUsICgp
KTsKLSAgICBwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0eUluZm9DYWNoZS5nZXQoc3RyaW5nRm9yQ2Fj
aGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDU1NQcm9wZXJ0eUluZm9NYXA+IHByb3Bl
cnR5SW5mb0NhY2hlOworICAgIHByb3BlcnR5SW5mbyA9IHByb3BlcnR5SW5mb0NhY2hlLmdldCgp
LmdldChzdHJpbmdGb3JDYWNoZSk7CiAgICAgaWYgKHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQog
ICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogCkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGlj
IENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmEKICAgICBpZiAocHJvcGVydHlJRCkgewogICAgICAgICBwcm9wZXJ0
eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGhhZFBpeGVsT3JQb3NQcmVmaXg7CiAgICAgICAg
IHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJv
cGVydHlJRCk7Ci0gICAgICAgIHByb3BlcnR5SW5mb0NhY2hlLmFkZChzdHJpbmdGb3JDYWNoZSwg
cHJvcGVydHlJbmZvKTsKKyAgICAgICAgcHJvcGVydHlJbmZvQ2FjaGUuZ2V0KCkuYWRkKHN0cmlu
Z0ZvckNhY2hlLCBwcm9wZXJ0eUluZm8pOwogICAgIH0KICAgICByZXR1cm4gcHJvcGVydHlJbmZv
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAppbmRleCA0NGY2NGI2Li5m
YWE4OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcApAQCAtNDUsNiAr
NDUsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBA
IC01Niw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIHN0YXRpYyBTdHJpbmcmIGds
b2JhbEV4Y2VwdGlvblN0cmluZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gZXhjZXB0aW9uU3RyOwogICAgIHJldHVybiBleGNlcHRpb25TdHI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggYzU1NzdiNy4uMjgzNGY2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhTGlzdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5Lmgi
CiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjg4LDEx
ICsyODksMTEgQEAgc3RhdGljIHZvaWQgYWRkUmVzb2x1dGlvbldhcm5pbmdNZXNzYWdlVG9Db25z
b2xlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW4KICAgICBBU1NFUlQoZG9jdW1lbnQp
OwogICAgIEFTU0VSVCh2YWx1ZSk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBtZWRpYVF1ZXJ5TWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiQ29uc2lkZXIgdXNp
bmcgJ2RwcHgnIHVuaXRzIGluc3RlYWQgb2YgJyVyZXBsYWNlbWVudFVuaXRzJScsIGFzIGluIENT
UyAnJXJlcGxhY2VtZW50VW5pdHMlJyBtZWFucyBkb3RzLXBlci1DU1MtJWxlbmd0aFVuaXQlLCBu
b3QgZG90cy1wZXItcGh5c2ljYWwtJWxlbmd0aFVuaXQlLCBzbyBkb2VzIG5vdCBjb3JyZXNwb25k
IHRvIHRoZSBhY3R1YWwgJyVyZXBsYWNlbWVudFVuaXRzJScgb2YgYSBzY3JlZW4uIEluIG1lZGlh
IHF1ZXJ5IGV4cHJlc3Npb246ICIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgbWVkaWFWYWx1ZURQSSwgKEFTQ0lJTGl0ZXJhbCgiZHBpIikpKTsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBtZWRpYVZhbHVlRFBDTSwgKEFT
Q0lJTGl0ZXJhbCgiZHBjbSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgbGVuZ3RoVW5pdEluY2gsIChBU0NJSUxpdGVyYWwoImluY2giKSkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGxlbmd0aFVuaXRDZW50aW1ldGVy
LCAoQVNDSUlMaXRlcmFsKCJjZW50aW1ldGVyIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBtZWRpYVF1ZXJ5TWVzc2FnZShBU0NJSUxpdGVyYWwoIkNvbnNpZGVyIHVzaW5n
ICdkcHB4JyB1bml0cyBpbnN0ZWFkIG9mICclcmVwbGFjZW1lbnRVbml0cyUnLCBhcyBpbiBDU1Mg
JyVyZXBsYWNlbWVudFVuaXRzJScgbWVhbnMgZG90cy1wZXItQ1NTLSVsZW5ndGhVbml0JSwgbm90
IGRvdHMtcGVyLXBoeXNpY2FsLSVsZW5ndGhVbml0JSwgc28gZG9lcyBub3QgY29ycmVzcG9uZCB0
byB0aGUgYWN0dWFsICclcmVwbGFjZW1lbnRVbml0cyUnIG9mIGEgc2NyZWVuLiBJbiBtZWRpYSBx
dWVyeSBleHByZXNzaW9uOiAiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
bWVkaWFWYWx1ZURQSShBU0NJSUxpdGVyYWwoImRwaSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBtZWRpYVZhbHVlRFBDTShBU0NJSUxpdGVyYWwoImRwY20iKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbGVuZ3RoVW5pdEluY2goQVNDSUlMaXRlcmFs
KCJpbmNoIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGxlbmd0aFVuaXRD
ZW50aW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY2VudGltZXRlciIpKTsKIAogICAgIFN0cmluZyBtZXNz
YWdlOwogICAgIGlmICh2YWx1ZS0+aXNEb3RzUGVySW5jaCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCA2MGM1ZDM5Li4zZTMwMTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxlUnVsZUltcG9ydC5oIgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzE2LDExICszMTcsMTEg
QEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldChjb25zdCBD
YWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWQKIAogICAgIGlmIChtX3BhcnNlckNvbnRleHQubmVl
ZHNTaXRlU3BlY2lmaWNRdWlya3MgJiYgaXNTdHJpY3RQYXJzZXJNb2RlKG1fcGFyc2VyQ29udGV4
dC5tb2RlKSkgewogICAgICAgICAvLyBXb3JrIGFyb3VuZCA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI4MzUwPi4KLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQsIChB
U0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHlsZXNoZWV0ICovXG4vKiB3b3JrIGFyb3VuZCB0
aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4jY29sdW1uLWNvbnRlbnQgeyBtYXJnaW4tbGVm
dDogMDsgfVxuXG4iKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3Ry
aW5nPiBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVTaGVldChBU0NJSUxpdGVyYWwoIi8qIEtIVE1M
IGZpeCBzdHlsZXNoZWV0ICovXG4vKiB3b3JrIGFyb3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxi
YXJzICovXG4jY29sdW1uLWNvbnRlbnQgeyBtYXJnaW4tbGVmdDogMDsgfVxuXG4iKSk7CiAgICAg
ICAgIC8vIFRoZXJlIGFyZSB0d28gdmFyaWFudHMgb2YgS0hUTUxGaXhlcy5jc3MuIE9uZSBpcyBl
cXVhbCB0byBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVTaGVldCwKICAgICAgICAgLy8gd2hpbGUg
dGhlIG90aGVyIGxhY2tzIHRoZSBzZWNvbmQgdHJhaWxpbmcgbmV3bGluZS4KLSAgICAgICAgaWYg
KGJhc2VVUkwoKS5zdHJpbmcoKS5lbmRzV2l0aCgiL0tIVE1MRml4ZXMuY3NzIikgJiYgIXNoZWV0
VGV4dC5pc051bGwoKSAmJiBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVTaGVldC5zdGFydHNXaXRo
KHNoZWV0VGV4dCkKLSAgICAgICAgICAgICYmIHNoZWV0VGV4dC5sZW5ndGgoKSA+PSBtZWRpYVdp
a2lLSFRNTEZpeGVzU3R5bGVTaGVldC5sZW5ndGgoKSAtIDEpCisgICAgICAgIGlmIChiYXNlVVJM
KCkuc3RyaW5nKCkuZW5kc1dpdGgoIi9LSFRNTEZpeGVzLmNzcyIpICYmICFzaGVldFRleHQuaXNO
dWxsKCkgJiYgbWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQuZ2V0KCkuc3RhcnRzV2l0aChz
aGVldFRleHQpCisgICAgICAgICAgICAmJiBzaGVldFRleHQubGVuZ3RoKCkgPj0gbWVkaWFXaWtp
S0hUTUxGaXhlc1N0eWxlU2hlZXQuZ2V0KCkubGVuZ3RoKCkgLSAxKQogICAgICAgICAgICAgY2xl
YXJSdWxlcygpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGls
ZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRh
dGlvblNjb3BlLmNwcAppbmRleCAzMWU1ZjMxLi5mNmRlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCIKICNpbmNsdWRlICJNdXRhdGlv
blJlY29yZC5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVk
ZWYgSGFzaE1hcDxDb250YWluZXJOb2RlKiwgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcio+
IEFjY3VtdWxhdG9yTWFwOwogc3RhdGljIEFjY3VtdWxhdG9yTWFwJiBhY2N1bXVsYXRvck1hcCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEFjY3VtdWxhdG9yTWFwLCBt
YXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QWNjdW11bGF0b3JNYXA+IG1hcDsK
ICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9u
LmNwcAppbmRleCBmZTBiY2MxLi5mYWYyZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRl
ci5oIgogI2luY2x1ZGUgIlRleHREb2N1bWVudC5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04OCw3ICs4OSw3IEBAIHN0YXRpYyBib29s
IGlzU3VwcG9ydGVkU1ZHMTBGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkID0gZmFsc2U7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZl
YXR1cmVTZXQsIHN2Z0ZlYXR1cmVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZl
YXR1cmVTZXQ+IHN2Z0ZlYXR1cmVzOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICNpZiBFTkFC
TEUoU1ZHX0ZPTlRTKQogICAgICAgICBhZGRTdHJpbmcoc3ZnRmVhdHVyZXMsICJzdmciKTsKQEAg
LTEwOCw3ICsxMDksNyBAQCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzEwRmVhdHVyZShjb25z
dCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbgogICAgICAgICBpbml0aWFs
aXplZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmZWF0dXJlLnN0YXJ0c1dpdGgoIm9yZy53
M2MuIiwgZmFsc2UpCi0gICAgICAgICYmIHN2Z0ZlYXR1cmVzLmNvbnRhaW5zKGZlYXR1cmUucmln
aHQoZmVhdHVyZS5sZW5ndGgoKSAtIDgpKTsKKyAgICAgICAgJiYgc3ZnRmVhdHVyZXMuZ2V0KCku
Y29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gOCkpOwogfQogCiBzdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNv
bnN0IFN0cmluZyYgdmVyc2lvbikKQEAgLTExNyw3ICsxMTgsNyBAQCBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZFNWRzExRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYg
dmVyc2lvbgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZCA9IGZhbHNlOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGZWF0dXJl
U2V0LCBzdmdGZWF0dXJlcywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGZWF0dXJl
U2V0PiBzdmdGZWF0dXJlczsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAgIC8vIFNh
ZGx5LCB3ZSBjYW5ub3QgY2xhaW0gdG8gaW1wbGVtZW50IGFueSBvZiB0aGUgU1ZHIDEuMSBnZW5l
cmljIGZlYXR1cmUgc2V0cwogICAgICAgICAvLyBsYWNrIG9mIEZvbnQgYW5kIEZpbHRlciBzdXBw
b3J0LgpAQCAtMTc1LDcgKzE3Niw3IEBAIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkU1ZHMTFGZWF0
dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAg
IGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZlYXR1cmUuc3RhcnRzV2l0
aCgiaHR0cDovL3d3dy53My5vcmcvdHIvc3ZnMTEvZmVhdHVyZSMiLCBmYWxzZSkKLSAgICAgICAg
JiYgc3ZnRmVhdHVyZXMuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0g
MzUpKTsKKyAgICAgICAgJiYgc3ZnRmVhdHVyZXMuZ2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdo
dChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKIH0KIAogRE9NSW1wbGVtZW50YXRpb246OkRPTUlt
cGxlbWVudGF0aW9uKERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDI4NGU4NzcuLmQwNTYyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTc3LDYg
KzE3Nyw3IEBACiAjaW5jbHVkZSA8Y3RpbWU+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx5YXJyL1JlZ3VsYXJFeHBy
ZXNzaW9uLmg+CkBAIC0xMTE4LDkgKzExMTksOSBAQCBSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6
OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaQog
CiBTdHJpbmcgRG9jdW1lbnQ6OnJlYWR5U3RhdGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGxvYWRpbmcsIChBU0NJSUxpdGVyYWwo
ImxvYWRpbmciKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGludGVyYWN0aXZlLCAoQVNDSUlMaXRlcmFsKCJpbnRlcmFjdGl2ZSIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgY29tcGxldGUsIChB
U0NJSUxpdGVyYWwoImNvbXBsZXRlIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiBsb2FkaW5nKEFTQ0lJTGl0ZXJhbCgibG9hZGluZyIpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBpbnRlcmFjdGl2ZShBU0NJSUxpdGVyYWwoImlu
dGVyYWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNv
bXBsZXRlKEFTQ0lJTGl0ZXJhbCgiY29tcGxldGUiKSk7CiAKICAgICBzd2l0Y2ggKG1fcmVhZHlT
dGF0ZSkgewogICAgIGNhc2UgTG9hZGluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5ODll
MTRlLi5lOGNiYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC04OSw2ICs4OSw3IEBACiAj
aW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjky
OCwyMSArMjkyOSwyMSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OndlYmtpdFJlZ2lv
bk92ZXJzZXQoKSBjb25zdAogewogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCB1bmRlZmluZWRTdGF0ZSwgKCJ1bmRlZmluZWQiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gdW5kZWZpbmVkU3RhdGUoInVuZGVmaW5lZCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICghZG9jdW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgp
IHx8ICFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKQogICAgICAgICByZXR1cm4gdW5kZWZpbmVk
U3RhdGU7CiAKICAgICBzd2l0Y2ggKHJlZ2lvbk92ZXJzZXRTdGF0ZSgpKSB7CiAgICAgY2FzZSBS
ZWdpb25GaXQ6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgZml0U3RhdGUsICgiZml0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaXRT
dGF0ZSgiZml0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAg
IHJldHVybiBmaXRTdGF0ZTsKICAgICB9CiAgICAgY2FzZSBSZWdpb25FbXB0eTogewotICAgICAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbXB0eVN0YXRl
LCAoImVtcHR5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbXB0eVN0YXRlKCJlbXB0eSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gZW1w
dHlTdGF0ZTsKICAgICB9CiAgICAgY2FzZSBSZWdpb25PdmVyc2V0OiB7Ci0gICAgICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG92ZXJmbG93U3RhdGUsICgi
b3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3ZlcmZsb3dTdGF0ZSgib3ZlcnNl
dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4g
b3ZlcmZsb3dTdGF0ZTsKICAgICB9CiAgICAgY2FzZSBSZWdpb25VbmRlZmluZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDM0MTg0N2YuLmQ1NGM2N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAi
VG91Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTIxMyw4ICsyMTQsOCBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFbGVtZW50KiBlbGVtZW50LCBFdmVudCogdW5kZXJseWlu
ZwogICAgIGlmIChlbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8RWxlbWVu
dCo+LCBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLCAoKSk7Ci0gICAgaWYgKCFl
bGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLmFkZChlbGVtZW50KS5pc05ld0VudHJ5
KQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEVsZW1lbnQqPj4gZWxlbWVudHNE
aXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrczsKKyAgICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdT
aW11bGF0ZWRDbGlja3MuZ2V0KCkuYWRkKGVsZW1lbnQpLmlzTmV3RW50cnkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChtb3VzZUV2ZW50T3B0aW9ucyA9PSBTZW5kTW91c2VPdmVyVXBEb3du
RXZlbnRzKQpAQCAtMjMwLDcgKzIzMSw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aFNpbXVsYXRlZENsaWNrKEVsZW1lbnQqIGVsZW1lbnQsIEV2ZW50KiB1bmRlcmx5aW5nCiAgICAg
Ly8gYWx3YXlzIHNlbmQgY2xpY2sKICAgICBkaXNwYXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRl
ZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZWxlbWVudC0+ZG9j
dW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5aW5nRXZlbnQsIGVsZW1lbnQpKTsKIAotICAg
IGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MucmVtb3ZlKGVsZW1lbnQpOworICAg
IGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MuZ2V0KCkucmVtb3ZlKGVsZW1lbnQp
OwogfQogCiBzdGF0aWMgdm9pZCBjYWxsRGVmYXVsdEV2ZW50SGFuZGxlcnNJblRoZUJ1YmJsaW5n
T3JkZXIoRXZlbnQmIGV2ZW50LCBjb25zdCBFdmVudFBhdGgmIHBhdGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCmluZGV4IDRjYWY2MmYuLjQxYTIwNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hl
ZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHROb2RlVHJhdmVyc2FsLmgiCisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTMsNyArMTE0LDcgQEAgdm9pZCBJbmxpbmVT
dHlsZVNoZWV0T3duZXI6OmNsZWFyU2hlZXQoKQogCiBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29u
dGVudFR5cGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNz
c0NvbnRlbnRUeXBlLCAoInRleHQvY3NzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNz
c0NvbnRlbnRUeXBlKCJ0ZXh0L2NzcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIGlmICh0eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
cmV0dXJuIGVsZW1lbnQuaXNIVE1MRWxlbWVudCgpID8gZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwg
Y3NzQ29udGVudFR5cGUpIDogdHlwZSA9PSBjc3NDb250ZW50VHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBmYzE3MDhjLi44N2ZiYmJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNDUsMTMgKzE0NSwxMyBAQCB0eXBl
ZGVmIEhhc2hTZXQ8UmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+PiBNdXRhdGlvbk9ic2VydmVyU2V0
OwogCiBzdGF0aWMgTXV0YXRpb25PYnNlcnZlclNldCYgYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRhdGlvbk9ic2VydmVy
U2V0LCBhY3RpdmVPYnNlcnZlcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0
YXRpb25PYnNlcnZlclNldD4gYWN0aXZlT2JzZXJ2ZXJzOwogICAgIHJldHVybiBhY3RpdmVPYnNl
cnZlcnM7CiB9CiAKIHN0YXRpYyBNdXRhdGlvbk9ic2VydmVyU2V0JiBzdXNwZW5kZWRNdXRhdGlv
bk9ic2VydmVycygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGF0
aW9uT2JzZXJ2ZXJTZXQsIHN1c3BlbmRlZE9ic2VydmVycywgKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxNdXRhdGlvbk9ic2VydmVyU2V0PiBzdXNwZW5kZWRPYnNlcnZlcnM7CiAgICAg
cmV0dXJuIHN1c3BlbmRlZE9ic2VydmVyczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJl
Y29yZC5jcHAKaW5kZXggOTVmY2VjMi4uY2U0MWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25SZWNvcmQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJDaGFyYWN0ZXJEYXRh
LmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTE0NSwxOSArMTQ2LDE5IEBAIHByaXZhdGU6CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgQ2hpbGRMaXN0UmVjb3JkOjp0eXBlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGlsZExpc3QsICgiY2hpbGRMaXN0IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IGNoaWxkTGlzdCgiY2hpbGRMaXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNoaWxkTGlzdDsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBBdHRyaWJ1dGVzUmVjb3JkOjp0eXBlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhdHRyaWJ1dGVzLCAoImF0dHJpYnV0ZXMiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gYXR0cmlidXRlcygiYXR0cmlidXRlcyIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIENoYXJhY3RlckRhdGFSZWNvcmQ6OnR5cGUoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGNoYXJhY3RlckRhdGEs
ICgiY2hhcmFjdGVyRGF0YSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBjaGFyYWN0ZXJEYXRhKCJj
aGFyYWN0ZXJEYXRhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIGNoYXJhY3RlckRhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNw
cAppbmRleCBiMjQ5MjQxLi5jZjllYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQu
Y3BwCkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBRdWFs
aWZpZWROYW1lJiBwc2V1ZG9FbGVtZW50VGFnTmFtZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIG5hbWUsIChudWxsQXRvbSwgIjxwc2V1ZG8+
IiwgbnVsbEF0b20pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4g
bmFtZShudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVsbEF0b20pOwogICAgIHJldHVybiBuYW1lOwog
fQogCiBTdHJpbmcgUHNldWRvRWxlbWVudDo6cHNldWRvRWxlbWVudE5hbWVGb3JFdmVudHMoUHNl
dWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgYWZ0ZXIsIChBU0NJSUxpdGVyYWwoIjo6YWZ0ZXIiKSkpOwotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGJlZm9yZSwgKEFTQ0lJTGl0
ZXJhbCgiOjpiZWZvcmUiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJp
bmc+IGFmdGVyKEFTQ0lJTGl0ZXJhbCgiOjphZnRlciIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgU3RyaW5nPiBiZWZvcmUoQVNDSUlMaXRlcmFsKCI6OmJlZm9yZSIpKTsKICAg
ICBzd2l0Y2ggKHBzZXVkb0lkKSB7CiAgICAgY2FzZSBBRlRFUjoKICAgICAgICAgcmV0dXJuIGFm
dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IGZkNzliZGEuLjU2ZTRm
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvU3RhdGljQ29uc3RydWN0b3JzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCkBAIC03NCw3ICs3NSw3IEBAIHN0cnVjdCBRTmFtZUNvbXBvbmVudHNU
cmFuc2xhdG9yIHsKIAogc3RhdGljIGlubGluZSBRTmFtZVNldCYgcXVhbGlmaWVkTmFtZUNhY2hl
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUU5hbWVTZXQsIG5hbWVD
YWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRTmFtZVNldD4gbmFtZUNhY2hl
OwogICAgIHJldHVybiBuYW1lQ2FjaGU7CiB9CiAKQEAgLTExNSw3ICsxMTYsNyBAQCB2b2lkIFF1
YWxpZmllZE5hbWU6OmluaXQoKQogCiBjb25zdCBRdWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBudWxs
TmFtZSwgKG51bGxBdG9tLCBudWxsQXRvbSwgbnVsbEF0b20pKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbnVsbE5hbWUobnVsbEF0b20sIG51bGxBdG9tLCBudWxs
QXRvbSk7CiAgICAgcmV0dXJuIG51bGxOYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5jcHAKaW5kZXggNjNmNTkzZi4uMTg3OTFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
bGVtZW50LmNwcApAQCAtMTE5LDI0ICsxMTksMjQgQEAgc3RhdGljIGJvb2wgaXNMZWdhY3lTdXBw
b3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIAogICAgIC8v
IEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBIVE1MNSBjb21wbGlhbnQuIFRoZXNlIGJlbG9u
ZyBpbiB0aGUgTUlNRSByZWdpc3RyeSBhcyAidGV4dC9qYXZhc2NyaXB0PHZlcnNpb24+IiBlbnRy
aWVzLgogICAgIHR5cGVkZWYgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gTGFuZ3Vh
Z2VTZXQ7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKExhbmd1YWdlU2V0LCBs
YW5ndWFnZXMsICgpKTsKLSAgICBpZiAobGFuZ3VhZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBs
YW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFz
Y3JpcHQiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMCIpOwotICAgICAg
ICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS4xIik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQo
ImphdmFzY3JpcHQxLjIiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMyIp
OwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS40Iik7Ci0gICAgICAgIGxhbmd1
YWdlcy5hZGQoImphdmFzY3JpcHQxLjUiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNj
cmlwdDEuNiIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS43Iik7Ci0gICAg
ICAgIGxhbmd1YWdlcy5hZGQoImxpdmVzY3JpcHQiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgi
ZWNtYXNjcmlwdCIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqc2NyaXB0Iik7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPExhbmd1YWdlU2V0PiBsYW5ndWFnZXM7CisgICAgaWYgKGxhbmd1
YWdlcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2
YXNjcmlwdCIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0Iik7Cisg
ICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFzY3JpcHQxLjAiKTsKKyAgICAgICAgbGFu
Z3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuMSIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0
KCkuYWRkKCJqYXZhc2NyaXB0MS4yIik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImph
dmFzY3JpcHQxLjMiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEu
NCIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0MS41Iik7CisgICAg
ICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFzY3JpcHQxLjYiKTsKKyAgICAgICAgbGFuZ3Vh
Z2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNyIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCku
YWRkKCJsaXZlc2NyaXB0Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImVjbWFzY3Jp
cHQiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgianNjcmlwdCIpOwogICAgIH0KIAot
ICAgIHJldHVybiBsYW5ndWFnZXMuY29udGFpbnMobGFuZ3VhZ2UpOworICAgIHJldHVybiBsYW5n
dWFnZXMuZ2V0KCkuY29udGFpbnMobGFuZ3VhZ2UpOwogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6
OmRpc3BhdGNoRXJyb3JFdmVudCgpCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBTY3JpcHRFbGVt
ZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAKICAgICBpZiAo
bV9yZXF1ZXN0VXNlc0FjY2Vzc0NvbnRyb2wgJiYgIW1fY2FjaGVkU2NyaXB0LT5wYXNzZXNTYW1l
T3JpZ2luUG9saWN5Q2hlY2soKm1fZWxlbWVudC5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkp
KSB7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwotICAgICAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgi
Q3Jvc3Mtb3JpZ2luIHNjcmlwdCBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2Ug
U2hhcmluZyBwb2xpY3kuIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4gc2NyaXB0IGxvYWQg
ZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAg
ICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
CmluZGV4IDcyZTNhZDQuLjdiODllMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiVGV4dE5vZGVU
cmF2ZXJzYWwuaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlICJodG1sZWRp
dGluZy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAg
LTYyLDcgKzYzLDcgQEAgc3RhdGljIGludCB0b0lkZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gdmFsdWUpCiAKIHN0YXRpYyBTdHJpbmcmIHN0eWxlU3BhbkNsYXNzU3RyaW5nKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzdHlsZVNwYW5DbGFzc1N0
cmluZywgKChBcHBsZVN0eWxlU3BhbkNsYXNzKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHN0eWxlU3BhbkNsYXNzU3RyaW5nKEFwcGxlU3R5bGVTcGFuQ2xhc3MpOwogICAg
IHJldHVybiBzdHlsZVNwYW5DbGFzc1N0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRleCBmOTY4MmE0Li5jMTM0MDYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtNDAsNiArNDAs
NyBAQAogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCiAj
aW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0yNTksOCArMjYwLDggQEAgYm9vbCBNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRk
TmFtZXNwYWNlRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIGlmIChwcmVmaXgu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zQXRv
bSk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB4bWxuc1dp
dGhDb2xvbiwgKEFTQ0lJTGl0ZXJhbCgieG1sbnM6IikpKTsKLSAgICByZXR1cm4gIWVsZW1lbnQu
aGFzQXR0cmlidXRlKHhtbG5zV2l0aENvbG9uICsgcHJlZml4KTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiB4bWxuc1dpdGhDb2xvbihBU0NJSUxpdGVyYWwoInhtbG5zOiIpKTsK
KyAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zV2l0aENvbG9uLmdldCgpICsg
cHJlZml4KTsKIH0KIAogYm9vbCBNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNl
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlLCBOYW1lc3BhY2VzJiBuYW1lc3Bh
Y2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAppbmRleCA3ODk3MmM3Li5lYjQxMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTA0LDE0ICsxMDQsMTQg
QEAgcHJpdmF0ZToKIAogc3RhdGljIGJvb2wgaXNJbnRlcmNoYW5nZU5ld2xpbmVOb2RlKGNvbnN0
IE5vZGUgKm5vZGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmcsIChBcHBsZUludGVyY2hhbmdlTmV3bGlu
ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGludGVyY2hhbmdlTmV3bGlu
ZUNsYXNzU3RyaW5nKEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsKICAgICByZXR1cm4gbm9kZSAm
JiBub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSAmJiAKICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29u
c3QgRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikgPT0gaW50ZXJjaGFu
Z2VOZXdsaW5lQ2xhc3NTdHJpbmc7CiB9CiAKIHN0YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VDb252
ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9kZSAqbm9kZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZywgKEFw
cGxlQ29udmVydGVkU3BhY2UpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBj
b252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZyhBcHBsZUNvbnZlcnRlZFNwYWNlKTsKICAgICBy
ZXR1cm4gbm9kZS0+aXNIVE1MRWxlbWVudCgpICYmIAogICAgICAgICAgICBzdGF0aWNfY2FzdDxj
b25zdCBIVE1MRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikgPT0gY29u
dmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuY3BwCmluZGV4IDMwNmY0YjIuLjJkN2FkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgYm9vbCBpc1RhYmxlU3RydWN0dXJl
Tm9kZShjb25zdCBOb2RlICpub2RlKQogCiBjb25zdCBTdHJpbmcmIG5vbkJyZWFraW5nU3BhY2VT
dHJpbmcoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5v
bkJyZWFraW5nU3BhY2VTdHJpbmcsICgmbm9CcmVha1NwYWNlLCAxKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygmbm9CcmVha1NwYWNl
LCAxKTsKICAgICByZXR1cm4gbm9uQnJlYWtpbmdTcGFjZVN0cmluZzsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCmluZGV4IDZkMzI2NTYuLmM3YWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKQEAgLTIxMyw4ICsyMTMsOCBAQCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxh
dG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFN0cmluZ0J1aWxkZXImIG91dCwgU3R5bGVQcgog
CiBjb25zdCBTdHJpbmcmIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRh
Zyhib29sIGlzQmxvY2spCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgZGl2Q2xvc2UsIChBU0NJSUxpdGVyYWwoIjwvZGl2PiIpKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2Us
IChBU0NJSUxpdGVyYWwoIjwvc3Bhbj4iKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IGRpdkNsb3NlKEFTQ0lJTGl0ZXJhbCgiPC9kaXY+IikpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHN0eWxlU3BhbkNsb3NlKEFTQ0lJTGl0ZXJh
bCgiPC9zcGFuPiIpKTsKICAgICByZXR1cm4gaXNCbG9jayA/IGRpdkNsb3NlIDogc3R5bGVTcGFu
Q2xvc2U7CiB9CiAKQEAgLTU3Nyw3ICs1NzcsNyBAQCBzdGF0aWMgTm9kZSogaGlnaGVzdEFuY2Vz
dG9yVG9XcmFwTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaAog
c3RhdGljIFN0cmluZyBjcmVhdGVNYXJrdXBJbnRlcm5hbChEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFJhbmdlJiByYW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsCiAgICAgRUFubm90YXRlRm9y
SW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywg
RUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcsIChB
U0NJSUxpdGVyYWwoIjxiciBjbGFzcz1cIiIgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUgIlwiPiIp
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gaW50ZXJjaGFuZ2VO
ZXdsaW5lU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiPGJyIGNsYXNzPVwiIiBBcHBsZUludGVyY2hhbmdl
TmV3bGluZSAiXCI+IikpOwogCiAgICAgYm9vbCBjb2xsYXBzZWQgPSByYW5nZS5jb2xsYXBzZWQo
KTsKICAgICBpZiAoY29sbGFwc2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggNmIwMzNi
MC4uMGY0Y2U5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02MSwxMSArNjIsMTAgQEAgdm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0
ZXJVUkwoY29uc3QgVVJMJiB1cmwpCiAKIFVSTFJlZ2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJl
Z2lzdHJ5KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQmxvYlVSTFJl
Z2lzdHJ5LCBpbnN0YW5jZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCbG9iVVJM
UmVnaXN0cnk+IGluc3RhbmNlOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotCiBCbG9iOjpC
bG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApp
bmRleCBhMzJhMGI3Li5hZGIwZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4LDcgKzU5LDcgQEAgdm9p
ZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVF
dmVudChFdmVudCopCiAKIHZvaWQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHZhbHVlQ29udGFpbmVyUHNldWRvLCAoIi13ZWJraXQtZGF0ZS1h
bmQtdGltZS12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB2YWx1ZUNvbnRhaW5lclBzZXVk
bygiLXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAKICAgICBSZWY8SFRNTERpdkVsZW1lbnQ+IHZhbHVlQ29udGFpbmVyID0g
SFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCkuZG9jdW1lbnQoKSk7CiAgICAgdmFsdWVD
b250YWluZXItPnNldFBzZXVkbyh2YWx1ZUNvbnRhaW5lclBzZXVkbyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCBiMWU4MjlkLi5iMzRmN2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1M
SW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5wdXRU
eXBlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC02MSw3ICs2Miw3IEBAIERhdGVDb21wb25lbnRzOjpUeXBlIERhdGVJ
bnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIAogU3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6OmNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAoZGF0ZURlZmF1bHRTdGVwLCBkYXRlRGVmYXVs
dFN0ZXBCYXNlLCBkYXRlU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVw
UmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKGRhdGVEZWZhdWx0U3RlcCwg
ZGF0ZURlZmF1bHRTdGVwQmFzZSwgZGF0ZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJz
ZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpOwogCiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFz
ZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDAp
OwogICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVu
dHM6Om1pbmltdW1EYXRlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZVRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlw
ZS5jcHAKaW5kZXggYjJlZmU4NS4uYjI5NDUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
VGltZUlucHV0VHlwZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTYyLDcgKzYzLDcgQEAgRGVjaW1hbCBEYXRlVGltZUlucHV0VHlwZTo6ZGVmYXVs
dFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIERhdGVUaW1lSW5wdXRUeXBlOjpj
cmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVw
RGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKGRhdGVUaW1lRGVmYXVsdFN0ZXAsIGRhdGVU
aW1lRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpT
Y2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0ZXBEZXNjcmlwdGlvbihkYXRl
VGltZURlZmF1bHRTdGVwLCBkYXRlVGltZURlZmF1bHRTdGVwQmFzZSwgZGF0ZVRpbWVTdGVwU2Nh
bGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAog
ICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0
R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKICAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFs
Ojpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjptaW5pbXVtRGF0ZVRpbWUoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKaW5kZXggNGE0Mzhm
My4uODIxYzgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2Fs
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1
dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNjgsNyArNjksNyBAQCB2b2lkIERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnNldFZhbHVlQXNE
YXRlKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbgogCiBTdGVwUmFuZ2UgRGF0
ZVRpbWVMb2NhbElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlT
dGVwSGFuZGxpbmcpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVwRGVzY3JpcHRpb24sIChkYXRl
VGltZUxvY2FsRGVmYXVsdFN0ZXAsIGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcEJhc2UsIGRhdGVU
aW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3RlcFZhbHVlU2hvdWxk
QmVJbnRlZ2VyKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6
U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRpb24oZGF0ZVRpbWVMb2NhbERlZmF1bHRTdGVw
LCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZUxvY2FsU3RlcFNjYWxlRmFj
dG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcik7CiAKICAgICBj
b25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0
dHJpYnV0ZShtaW5BdHRyKSwgMCk7CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJv
bURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11bURhdGVUaW1lKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXggZGFlMTc4Mi4uZTZlMDE5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNs
dWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVn
dWxhckV4cHJlc3Npb24uaD4KIApAQCAtNDQsMTAgKzQ1LDEwIEBAIHN0YXRpYyBib29sIGlzVmFs
aWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogICAgIGlmICghYWRkcmVzc0xl
bmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24sIHJlZ0V4cCwgKGVt
YWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiByZWdFeHAoZW1haWxQYXR0
ZXJuLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKIAogICAgIGludCBtYXRjaExlbmd0aDsKLSAgICBp
bnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAubWF0Y2goYWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsK
KyAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAuZ2V0KCkubWF0Y2goYWRkcmVzcywgMCwgJm1h
dGNoTGVuZ3RoKTsKIAogICAgIHJldHVybiAhbWF0Y2hPZmZzZXQgJiYgbWF0Y2hMZW5ndGggPT0g
YWRkcmVzc0xlbmd0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5k
ZXggYjBmM2E5Mi4uY2RjN2IxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5j
cHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTMzMyw3ICszMzQsNyBAQCBBdG9taWNTdHJpbmcgRm9ybUtleUdlbmVyYXRvcjo6
Zm9ybUtleShjb25zdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlJiBjbwogewogICAg
IEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IG93bmVyRm9ybUZvclN0YXRlKGNvbnRyb2wpOwogICAg
IGlmICghZm9ybSkgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBmb3JtS2V5Rm9yTm9Pd25lciwgKCJObyBvd25lciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gZm9ybUtleUZvck5vT3duZXIoIk5vIG93bmVyIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiBmb3JtS2V5Rm9yTm9Pd25lcjsK
ICAgICB9CiAgICAgRm9ybVRvS2V5TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fZm9ybVRvS2V5
TWFwLmZpbmQoZm9ybSk7CkBAIC0zODYsNyArMzg3LDcgQEAgc3RhdGljIFN0cmluZyBmb3JtU3Rh
dGVTaWduYXR1cmUoKQogICAgIC8vIEluIHRoZSBsZWdhY3kgdmVyc2lvbiBvZiBzZXJpYWxpemVk
IHN0YXRlLCB0aGUgZmlyc3QgaXRlbSB3YXMgYSBuYW1lCiAgICAgLy8gYXR0cmlidXRlIHZhbHVl
IG9mIGEgZm9ybSBjb250cm9sLiBUaGUgZm9sbG93aW5nIHN0cmluZyBsaXRlcmFsIHNob3VsZAog
ICAgIC8vIGNvbnRhaW4gc29tZSBjaGFyYWN0ZXJzIHdoaWNoIGFyZSByYXJlbHkgdXNlZCBmb3Ig
bmFtZSBhdHRyaWJ1dGUgdmFsdWVzLgotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHNpZ25hdHVyZSwgKEFTQ0lJTGl0ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxp
emVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxuXHI9JiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gc2lnbmF0dXJlKEFTQ0lJTGl0ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJp
YWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxuXHI9JiIpKTsKICAgICByZXR1cm4gc2lnbmF0
dXJlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4
IDllYWVjZmQuLjQxOWE0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwCkBAIC02MTksNyArNjE5LDcgQEAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEhUTUxBbmNo
b3JFbGVtZW50KiwgUmVmUHRyPEVsZW1lbnQ+PiBSb290RWRpdGFibGVFbGVtZW50TWEKIAogc3Rh
dGljIFJvb3RFZGl0YWJsZUVsZW1lbnRNYXAmIHJvb3RFZGl0YWJsZUVsZW1lbnRNYXAoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChSb290RWRpdGFibGVFbGVtZW50TWFw
LCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Um9vdEVkaXRhYmxlRWxlbWVu
dE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QnV0dG9uRWxlbWVudC5jcHAKaW5kZXggMmU3M2RlZC4uZGY4ZTgzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTY1LDE1ICs2NSwxNSBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIEhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAog
ewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAg
ICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBz
dWJtaXQsICgic3VibWl0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3Vi
bWl0KCJzdWJtaXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAg
ICAgICAgIHJldHVybiBzdWJtaXQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBCVVRUT046IHsK
LSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIGJ1dHRvbiwgKCJidXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBidXR0b24oImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbjsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJF
U0VUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCByZXNldCwgKCJyZXNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
aWNTdHJpbmc+IHJlc2V0KCJyZXNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgICAgICAgICAgcmV0dXJuIHJlc2V0OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKaW5kZXggOTE2MmFmYy4uZDA4
N2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBIVE1MRmllbGRTZXRFbGVtZW50OjpzdXBwb3J0c0ZvY3Vz
KCkgY29uc3QKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGZpZWxkc2V0LCAoImZpZWxkc2V0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IGZpZWxkc2V0KCJmaWVsZHNldCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBmaWVsZHNldDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggMDFmYTcwMC4uOTY2NzFmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC0yMyw2
ICsyMyw3IEBACiAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
Q291bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBz
dGF0aWMgSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+JiBkaXNhYmxlZFN1YnRyZWVSb290
cygpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaENv
dW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+LCBub2RlcywgKCkpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaENvdW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+PiBub2RlczsKICAgICAg
ICAgcmV0dXJuIG5vZGVzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5F
bGVtZW50LmNwcAppbmRleCBhYTA5MWZiLi44OTQ0YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxLZXlnZW5FbGVtZW50LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNTTEtl
eUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0Lmgi
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgcHJv
dGVjdGVkOgogICAgIEtleWdlblNlbGVjdEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
ICAgICA6IEhUTUxTZWxlY3RFbGVtZW50KHNlbGVjdFRhZywgZG9jdW1lbnQsIDApCiAgICAgewot
ICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwc2V1
ZG9JZCwgKCItd2Via2l0LWtleWdlbi1zZWxlY3QiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IHBzZXVkb0lkKCItd2Via2l0LWtleWdlbi1zZWxlY3QiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICAgICAgc2V0UHNldWRvKHBzZXVkb0lkKTsKICAgICB9CiAKQEAg
LTExMiw3ICsxMTMsNyBAQCBib29sIEhUTUxLZXlnZW5FbGVtZW50OjphcHBlbmRGb3JtRGF0YShG
b3JtRGF0YUxpc3QmIGVuY29kZWRfdmFsdWVzLCBib29sKQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IEhUTUxLZXlnZW5FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGtleWdlbiwgKCJr
ZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4ga2V5Z2VuKCJrZXlnZW4iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4ga2V5Z2VuOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggYjU4MzIyMy4uMWM0
OWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNjIsNyAr
NjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgTGlua0V2ZW50U2Vu
ZGVyJiBsaW5rTG9hZEV2ZW50U2VuZGVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoTGlua0V2ZW50U2VuZGVyLCBzaGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5h
bWVzKCkubG9hZEV2ZW50KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExpbmtFdmVudFNl
bmRlcj4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwogICAg
IHJldHVybiBzaGFyZWRMb2FkRXZlbnRTZW5kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDgxNTE2ZmEuLjY4NGQzNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiB0eXBlZGVmIEhhc2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PEhU
TUxNZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVtZW50U2V0TWFwOwogc3RhdGljIERvY3VtZW50
RWxlbWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1lbnRTZXRNYXAoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChEb2N1bWVudEVsZW1lbnRTZXRNYXAsIG1hcCwgKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEb2N1bWVudEVsZW1lbnRTZXRNYXA+IG1hcDsKICAg
ICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwCmluZGV4IGFiYTAwMWIuLmM0NTZlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCkBAIC00MDQsOCArNDA0LDggQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVu
dDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1v
dmVkLCBhbGwgY2FsbGVycyBhcmUgYWxtb3N0IGNlcnRhaW5seSB3cm9uZy4KIHN0YXRpYyBib29s
IGlzUmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBs
Kj4sIHRhZ0xpc3QsICgpKTsKLSAgICBpZiAodGFnTGlzdC5pc0VtcHR5KCkpIHsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4+IHRhZ0xpc3Q7Cisg
ICAgaWYgKHRhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8qIHRhZ3MgPSBI
VE1MTmFtZXM6OmdldEhUTUxUYWdzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
SFRNTE5hbWVzOjpIVE1MVGFnc0NvdW50OyBpKyspIHsKICAgICAgICAgICAgIGlmICgqdGFnc1tp
XSA9PSBiZ3NvdW5kVGFnCkBAIC00MjAsMTAgKzQyMCwxMCBAQCBzdGF0aWMgYm9vbCBpc1JlY29n
bml6ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiAgICAgICAgICAgICAg
ICAgLy8gYmVjYXVzZSB0aGF0IGNoYW5nZXMgaG93IHdlIHBhcnNlIGRvY3VtZW50cy4KICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRhZ0xpc3Qu
YWRkKHRhZ3NbaV0tPmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgICAgICB0YWdMaXN0Lmdl
dCgpLmFkZCh0YWdzW2ldLT5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAgICB9CiAgICAgfQot
ICAgIHJldHVybiB0YWdMaXN0LmNvbnRhaW5zKHRhZ05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsK
KyAgICByZXR1cm4gdGFnTGlzdC5nZXQoKS5jb250YWlucyh0YWdOYW1lLmxvY2FsTmFtZSgpLmlt
cGwoKSk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAppbmRleCBlMGJk
OGNmLi44NjIyNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91
cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVu
dC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBIVE1MT3B0R3JvdXBFbGVtZW50Ojppc0ZvY3Vz
YWJsZSgpIGNvbnN0CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6
Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcHRncm91cCwgKCJvcHRncm91cCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBvcHRncm91cCgib3B0Z3JvdXAiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gb3B0Z3JvdXA7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggMmY2YmE3Yi4uZWRkYTRmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJI
VE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1NSw3
IEBAIFJlZjxIVE1MT3V0cHV0RWxlbWVudD4gSFRNTE91dHB1dEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE91
dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgb3V0cHV0LCAoIm91dHB1dCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBvdXRwdXQoIm91dHB1dCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBvdXRwdXQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggMDExNzVkOS4uNTdhNTMy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTMzNiw3
ICszMzYsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3RyYXIoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4m
KTsKIAogc3RhdGljIFZlY3RvcjxSZXBsYWNlbWVudFBsdWdpbio+JiByZWdpc3RlcmVkUGx1Z2lu
UmVwbGFjZW1lbnRzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVj
dG9yPFJlcGxhY2VtZW50UGx1Z2luKj4sIHJlZ2lzdGVyZWRSZXBsYWNlbWVudHMsICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFJlcGxhY2VtZW50UGx1Z2luKj4+IHJlZ2lz
dGVyZWRSZXBsYWNlbWVudHM7CiAgICAgc3RhdGljIGJvb2wgZW5naW5lc1F1ZXJpZWQgPSBmYWxz
ZTsKICAgICAKICAgICBpZiAoZW5naW5lc1F1ZXJpZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBkNjhhNTk5Li4wOWU3YWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTc0
LDI5ICs3NCwyOSBAQCBzdGF0aWMgY29uc3QgYXV0byByZW1vdmVTbmFwc2hvdFRpbWVyRGVsYXkg
PSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHsgMTUwMCB9OwogCiBzdGF0aWMgY29uc3QgU3Ry
aW5nIHRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJpbmcgbWltZVR5cGUpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE1pbWVUeXBlVG9Mb2NhbGl6ZWRTdHJpbmdNYXAsIG1p
bWVUeXBlVG9MYWJlbFRpdGxlTWFwLCAoKSk7Ci0gICAgU3RyaW5nIHRpdGxlVGV4dCA9IG1pbWVU
eXBlVG9MYWJlbFRpdGxlTWFwLmdldChtaW1lVHlwZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE1pbWVUeXBlVG9Mb2NhbGl6ZWRTdHJpbmdNYXA+IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFw
OworICAgIFN0cmluZyB0aXRsZVRleHQgPSBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5n
ZXQobWltZVR5cGUpOwogICAgIGlmICghdGl0bGVUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHRpdGxlVGV4dDsKIAogICAgIHRpdGxlVGV4dCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
LnBsdWdJblN0YXJ0TGFiZWxUaXRsZShtaW1lVHlwZSk7CiAgICAgaWYgKHRpdGxlVGV4dC5pc0Vt
cHR5KCkpCiAgICAgICAgIHRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgp
OwotICAgIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLnNldChtaW1lVHlwZSwgdGl0bGVUZXh0KTsK
KyAgICBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5zZXQobWltZVR5cGUsIHRpdGxlVGV4
dCk7CiAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIH07CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgc3Vi
dGl0bGVUZXh0KFBhZ2UqIHBhZ2UsIFN0cmluZyBtaW1lVHlwZSkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoTWltZVR5cGVUb0xvY2FsaXplZFN0cmluZ01hcCwgbWltZVR5
cGVUb0xhYmVsU3VidGl0bGVNYXAsICgpKTsKLSAgICBTdHJpbmcgc3VidGl0bGVUZXh0ID0gbWlt
ZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuZ2V0KG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TWltZVR5cGVUb0xvY2FsaXplZFN0cmluZ01hcD4gbWltZVR5cGVUb0xhYmVsU3Vi
dGl0bGVNYXA7CisgICAgU3RyaW5nIHN1YnRpdGxlVGV4dCA9IG1pbWVUeXBlVG9MYWJlbFN1YnRp
dGxlTWFwLmdldCgpLmdldChtaW1lVHlwZSk7CiAgICAgaWYgKCFzdWJ0aXRsZVRleHQuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gc3VidGl0bGVUZXh0OwogCiAgICAgc3VidGl0bGVUZXh0ID0g
cGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBl
KTsKICAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgc3VidGl0bGVUZXh0
ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCk7Ci0gICAgbWltZVR5cGVUb0xhYmVs
U3VidGl0bGVNYXAuc2V0KG1pbWVUeXBlLCBzdWJ0aXRsZVRleHQpOworICAgIG1pbWVUeXBlVG9M
YWJlbFN1YnRpdGxlTWFwLmdldCgpLnNldChtaW1lVHlwZSwgc3VidGl0bGVUZXh0KTsKICAgICBy
ZXR1cm4gc3VidGl0bGVUZXh0OwogfTsKIApAQCAtNDA4LDExICs0MDgsMTEgQEAgdm9pZCBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3Qq
IHJvb3QpCiAKIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVy
bGF5KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0b3IsICgiLnNuYXBzaG90LW92ZXJsYXkiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gc2VsZWN0b3IoIi5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgU2hhZG93Um9vdCogc2hhZG93ID0g
dXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlmICghc2hhZG93KQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHNuYXBzaG90TGFiZWwgPSBzaGFkb3ctPnF1ZXJ5
U2VsZWN0b3Ioc2VsZWN0b3IsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIFJlZlB0cjxFbGVt
ZW50PiBzbmFwc2hvdExhYmVsID0gc2hhZG93LT5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yLmdldCgp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICByZXR1cm4gbm9kZSAmJiBzbmFwc2hvdExhYmVs
ICYmIChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yo
c25hcHNob3RMYWJlbC5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCmluZGV4IDU3MzA0N2YuLmFlZGVkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2Ugc3R5bGVDaGFuZ2UpCiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNv
bnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgc2VsZWN0TXVsdGlwbGUsICgic2VsZWN0LW11bHRpcGxlIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHNlbGVjdE9uZSwgKCJzZWxlY3Qtb25lIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IHNlbGVjdE11bHRpcGxlKCJzZWxlY3QtbXVsdGlwbGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzZWxlY3RPbmUoInNlbGVjdC1vbmUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbV9tdWx0aXBsZSA/IHNlbGVj
dE11bHRpcGxlIDogc2VsZWN0T25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVF
bGVtZW50LmNwcAppbmRleCBhY2VkZWQ0Li41MWM2ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAogc3RhdGljIFN0eWxlRXZlbnRTZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVy
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVFdmVudFNlbmRl
ciwgc2hhcmVkTG9hZEV2ZW50U2VuZGVyLCAoZXZlbnROYW1lcygpLmxvYWRFdmVudCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHlsZUV2ZW50U2VuZGVyPiBzaGFyZWRMb2FkRXZlbnRT
ZW5kZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7CiAgICAgcmV0dXJuIHNoYXJlZExvYWRFdmVu
dFNlbmRlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKaW5kZXggNzg5NDM3Yy4uMmM4Y2U0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFF
bGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgSFRNTFRleHRBcmVhRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCB0ZXh0YXJlYSwgKCJ0ZXh0YXJlYSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiB0ZXh0YXJlYSgidGV4dGFyZWEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gdGV4dGFyZWE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggZDdmMDczNy4uMDk2MzcyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKQEAgLTM3NSw5ICszNzUsOSBAQCBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OmNvbXB1dGVTZWxlY3Rpb25FbmQoKSBjb25zdAogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBkaXJlY3Rpb25TdHJpbmcoVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBub25lLCAoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9y
d2FyZCwgKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJh
Y2t3YXJkLCAoImJhY2t3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5v
bmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBmb3J3YXJkKCJmb3J3YXJkIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21pY1N0cmluZz4gYmFja3dhcmQoImJhY2t3YXJkIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNh
c2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5
cGUuY3BwCmluZGV4IDEzMTBjZTkuLmJlYjEwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJ
bnB1dFR5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMu
aCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02NCwxMCArNjUsMTAgQEAgYm9vbCBJbWFnZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9y
bURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG90WFN0
cmluZywgKEFTQ0lJTGl0ZXJhbCgiLngiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGRvdFlTdHJpbmcsIChBU0NJSUxpdGVyYWwoIi55IikpKTsKLSAgICBl
bmNvZGluZy5hcHBlbmREYXRhKG5hbWUgKyBkb3RYU3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueCgp
KTsKLSAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUgKyBkb3RZU3RyaW5nLCBtX2NsaWNrTG9j
YXRpb24ueSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkb3RYU3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiLngiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
ZG90WVN0cmluZyhBU0NJSUxpdGVyYWwoIi55IikpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEo
bmFtZSArIGRvdFhTdHJpbmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi54KCkpOworICAgIGVuY29k
aW5nLmFwcGVuZERhdGEobmFtZSArIGRvdFlTdHJpbmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi55
KCkpOwogCiAgICAgaWYgKCFlbGVtZW50KCkudmFsdWUoKS5pc0VtcHR5KCkpCiAgICAgICAgIGVu
Y29kaW5nLmFwcGVuZERhdGEobmFtZSwgZWxlbWVudCgpLnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZU5hbWVzLmNwcAppbmRleCBhYzA4OTZhLi40Mzg3NjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcApAQCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgSW5w
dXRUeXBlTmFtZXMgewpAQCAtMzEsMTM5ICszMywxMzkgQEAgbmFtZXNwYWNlIElucHV0VHlwZU5h
bWVzIHsKIAogY29uc3QgQXRvbWljU3RyaW5nJiBidXR0b24oKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiYnV0dG9uIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IG5hbWUoImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGNo
ZWNrYm94KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBuYW1lLCAoImNoZWNrYm94IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImNoZWNr
Ym94IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5h
bWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgY29sb3IoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiY29sb3IiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gbmFtZSgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBkYXRl
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBu
YW1lLCAoImRhdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiZGF0ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImRhdGV0aW1lIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IG5hbWUoImRhdGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWVs
b2NhbCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgbmFtZSwgKCJkYXRldGltZS1sb2NhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJk
YXRldGltZS1sb2NhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImVtYWls
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImVtYWlsIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgZmlsZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgbmFtZSwgKCJmaWxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImZpbGUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBoaWRkZW4oKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiaGlkZGVuIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IG5hbWUoImhpZGRlbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdl
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBu
YW1lLCAoImltYWdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImltYWdlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgbW9udGgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgibW9udGgiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gbmFtZSgibW9udGgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBudW1iZXIoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgibnVt
YmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoIm51bWJlciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIHBhc3N3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInBhc3N3b3JkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoInBhc3N3b3JkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaW8oKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgicmFk
aW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgicmFkaW8iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiByYW5nZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgbmFtZSwgKCJyYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJy
YW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBu
YW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInJlc2V0IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IG5hbWUoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgc2Vh
cmNoKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBuYW1lLCAoInNlYXJjaCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJzZWFyY2giLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBzdWJtaXQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgic3VibWl0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5hbWUoInN1Ym1pdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHRlbGVwaG9u
ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bmFtZSwgKCJ0ZWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGVsIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgdGV4dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ0ZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5h
bWUoInRleHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiB0aW1lKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInRpbWUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGltZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHVy
bCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bmFtZSwgKCJ1cmwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidXJsIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgd2VlaygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ3ZWVrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5h
bWUoIndlZWsiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gbmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4
IGRiYjAyYWIuLjQ3YTk1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5j
cHAKQEAgLTI5MCwxOSArMjkwLDE5IEBAIHZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChi
b29sIGZsYWcpCiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBsYXliYWNrU3RhdGVXYWl0
aW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCB3YWl0aW5nLCAoIndhaXRpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gd2FpdGluZygid2Fp
dGluZyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiB3
YWl0aW5nOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwbGF5YmFja1N0YXRlUGxh
eWluZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgcGxheWluZywgKCJwbGF5aW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBsYXlpbmcoInBs
YXlpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4g
cGxheWluZzsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGxheWJhY2tTdGF0ZUVu
ZGVkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBlbmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggNDcyOTg3Mi4uNjBj
MzE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkwLDcgKzkxLDcgQEAgRGVj
aW1hbCBNb250aElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3Rl
cFJhbmdlIE1vbnRoSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFu
eVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKG1v
bnRoRGVmYXVsdFN0ZXAsIG1vbnRoRGVmYXVsdFN0ZXBCYXNlLCBtb250aFN0ZXBTY2FsZUZhY3Rv
ciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0ZXBE
ZXNjcmlwdGlvbihtb250aERlZmF1bHRTdGVwLCBtb250aERlZmF1bHRTdGVwQmFzZSwgbW9udGhT
dGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2Vy
KTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQo
KS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKG1vbnRoRGVm
YXVsdFN0ZXBCYXNlKSk7CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJl
cihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJs
ZShEYXRlQ29tcG9uZW50czo6bWluaW11bU1vbnRoKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmNwcAppbmRleCBmZDM1YmI4Li5mNjYwNGU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBOdW1iZXJJ
bnB1dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiAKIFN0ZXBSYW5nZSBOdW1iZXJJbnB1dFR5
cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25z
dAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6
OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51
bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVz
Y3JpcHRpb24obnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVy
U3RlcFNjYWxlRmFjdG9yKTsKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0Rl
Y2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBu
dW1iZXJEZWZhdWx0U3RlcEJhc2UpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVy
aWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVtYmVyIGlucHV0IHR5cGUuCiAgICAgY29uc3Qg
RGVjaW1hbCBmbG9hdE1heCA9IERlY2ltYWw6OmZyb21Eb3VibGUoc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5k
ZXggMjRmN2JiYy4uMGZkZWEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5j
cHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJTbGlkZXJUaHVtYkVsZW1lbnQuaCIKICNp
bmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVk
ZSAiVG91Y2guaCIKQEAgLTExMyw3ICsxMTQsNyBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpzdXBw
b3J0c1JlcXVpcmVkKCkgY29uc3QKIAogU3RlcFJhbmdlIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0
ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3RvcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHJhbmdl
RGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3Rvcik7
CiAKICAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5m
YXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCByYW5nZURlZmF1bHRNaW5pbXVtKTsKICAgICBjb25z
dCBEZWNpbWFsIG1heGltdW0gPSBlbnN1cmVNYXhpbXVtKHBhcnNlVG9OdW1iZXIoZWxlbWVudCgp
LmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIHJhbmdlRGVmYXVsdE1heGltdW0pLCBtaW5pbXVt
LCByYW5nZURlZmF1bHRNYXhpbXVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U3RlcFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCBj
NDc3MThhLi5lYmYzMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5n
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0yNCw2ICsy
NCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjUsMTMgKzY2LDEzIEBAIFN0
ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IERlY2ltYWwmIHN0ZXBCYXNlLCBjb25zdCBEZWNpbWFs
JiBtaW5pbXVtLCBjb25zdCBEZWNpCiBEZWNpbWFsIFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9y
KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBEQkxfTUFOVF9ESUcgaW5z
dGVhZCBvZiBGTFRfTUFOVF9ESUcgcmVnYXJkaW5nIHRvIEhUTUw1IHNwZWNpZmljYXRpb24uCi0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IERlY2ltYWwsIHR3b1Bvd2Vy
T2ZGbG9hdE1hbnRpc3NhQml0cywgKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8
PCBGTFRfTUFOVF9ESUcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgRGVjaW1h
bD4gdHdvUG93ZXJPZkZsb2F0TWFudGlzc2FCaXRzKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5U
NjRfQygxKSA8PCBGTFRfTUFOVF9ESUcpOwogICAgIHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5z
dGVwVmFsdWVTaG91bGRCZSA9PSBTdGVwVmFsdWVTaG91bGRCZVJlYWwgPyBtX3N0ZXAgLyB0d29Q
b3dlck9mRmxvYXRNYW50aXNzYUJpdHMgOiBEZWNpbWFsKDApOwogfQogCiBEZWNpbWFsIFN0ZXBS
YW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAoY29uc3QgRGVjaW1hbCYgY3VycmVudFZhbHVlLCBjb25z
dCBEZWNpbWFsJiBuZXdWYWx1ZSkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdGVuUG93ZXJPZjIxLCAoRGVjaW1hbDo6UG9zaXRpdmUs
IDIxLCAxKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IERlY2ltYWw+IHRlblBv
d2VyT2YyMShEZWNpbWFsOjpQb3NpdGl2ZSwgMjEsIDEpOwogICAgIGlmIChuZXdWYWx1ZSA+PSB0
ZW5Qb3dlck9mMjEpCiAgICAgICAgIHJldHVybiBuZXdWYWx1ZTsKIApAQCAtMTUwLDcgKzE1MSw3
IEBAIGJvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2goY29uc3QgRGVjaW1hbCYgdmFsdWVGb3JD
aGVjaykgY29uc3QKICAgICAvLyBEZWNpbWFsJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJM
X01BTl9ESUctYml0LiBJZiB0aGUgY3VycmVudCB2YWx1ZQogICAgIC8vIGlzIGdyZWF0ZXIgdGhh
biBzdGVwKjJeREJMX01BTlRfRElHLCB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIGZvcgogICAg
IC8vIHJlbWFpbmRlciBtYWtlcyBubyBzZW5zZS4KLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cywgKERl
Y2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBEQkxfTUFOVF9ESUcpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgRGVjaW1hbD4gdHdvUG93ZXJPZkRvdWJsZU1hbnRp
c3NhQml0cyhEZWNpbWFsOjpQb3NpdGl2ZSwgMCwgVUlOVDY0X0MoMSkgPDwgREJMX01BTlRfRElH
KTsKICAgICBpZiAodmFsdWUgLyB0d29Qb3dlck9mRG91YmxlTWFudGlzc2FCaXRzID4gbV9zdGVw
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gVGhlIGNvbXB1dGF0aW9uIGZvbGxvd3Mg
SFRNTDUgNC4xMC43LjIuMTAgYFRoZSBzdGVwIGF0dHJpYnV0ZScgOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZUlucHV0VHlwZS5jcHAKaW5kZXggYzA5MDQxOS4uNzRiMTRhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RpbWVJbnB1dFR5cGUuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC03Nyw3ICs3OCw3IEBAIERlY2ltYWwgVGltZUlucHV0VHlwZTo6ZGVm
YXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIFRpbWVJbnB1dFR5cGU6OmNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAodGltZURlZmF1bHRTdGVwLCB0aW1lRGVmYXVs
dFN0ZXBCYXNlLCB0aW1lU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVw
UmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHRpbWVEZWZhdWx0U3RlcCwg
dGltZURlZmF1bHRTdGVwQmFzZSwgdGltZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2Fs
ZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpOwogCiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFz
ZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDAp
OwogICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVu
dHM6Om1pbmltdW1UaW1lKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vl
a0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCmlu
ZGV4IDg0Y2E5ODguLjIzYjkwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vl
a0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNw
cApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU2LDcg
KzU3LDcgQEAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgV2Vla0lucHV0VHlwZTo6ZGF0ZVR5cGUoKSBj
b25zdAogCiBTdGVwUmFuZ2UgV2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBI
YW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVwRGVzY3Jp
cHRpb24sICh3ZWVrRGVmYXVsdFN0ZXAsIHdlZWtEZWZhdWx0U3RlcEJhc2UsIHdlZWtTdGVwU2Nh
bGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9u
PiBzdGVwRGVzY3JpcHRpb24od2Vla0RlZmF1bHRTdGVwLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlLCB3
ZWVrU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50
ZWdlcik7CiAKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb051bWJlcihlbGVt
ZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgd2Vla0RlZmF1bHRTdGVwQmFzZSk7CiAg
ICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdl
dEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6
bWluaW11bVdlZWsoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNjU0MjdhMS4uYTYwMzM3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAog
I2lmIFVTRShDRykKQEAgLTE5NTksNyArMTk2MCw3IEBAIFJlZlB0cjxJbWFnZURhdGE+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6d2Via2l0R2V0SW1hZ2VEYXRhSEQoZmxvYXQgc3gsIGZsb2F0
CiBSZWZQdHI8SW1hZ2VEYXRhPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmdldEltYWdlRGF0
YShJbWFnZUJ1ZmZlcjo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBmbG9hdCBz
eCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiB7CiAgICAgaWYgKCFjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0
ZXJhbCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzIGJlY2F1c2UgdGhlIGNh
bnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3NzLW9yaWdpbiBkYXRhLiIpKSk7CisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJh
bCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzIGJlY2F1c2UgdGhlIGNhbnZh
cyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3NzLW9yaWdpbiBkYXRhLiIpKTsKICAgICAgICAgY2Fu
dmFzKCktPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJp
dHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgZWMgPSBT
RUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCBkOWFlMTJhLi5hMTkxZjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2lu
Y2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjczLDcgKzI3NCw3IEBAIHZvaWQgWFNTQXVkaXRv
cjo6aW5pdChEb2N1bWVudCogZG9jdW1lbnQsIFhTU0F1ZGl0b3JEZWxlZ2F0ZSogYXVkaXRvckRl
bGVnYXRlKQogCiAgICAgU3RyaW5nIGh0dHBCb2R5QXNTdHJpbmc7CiAgICAgaWYgKERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGRvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpKSB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIFhTU1Byb3RlY3Rpb25IZWFkZXIsIChBU0NJSUxpdGVyYWwoIlgtWFNTLVByb3RlY3Rp
b24iKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBYU1NQcm90ZWN0
aW9uSGVhZGVyKEFTQ0lJTGl0ZXJhbCgiWC1YU1MtUHJvdGVjdGlvbiIpKTsKICAgICAgICAgU3Ry
aW5nIGhlYWRlclZhbHVlID0gZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZp
ZWxkKFhTU1Byb3RlY3Rpb25IZWFkZXIpOwogICAgICAgICBTdHJpbmcgZXJyb3JEZXRhaWxzOwog
ICAgICAgICB1bnNpZ25lZCBlcnJvclBvc2l0aW9uID0gMDsKQEAgLTUyMyw3ICs1MjQsNyBAQCBi
b29sIFhTU0F1ZGl0b3I6OmZpbHRlckJ1dHRvblRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVz
dCYgcmVxdWVzdCkKIAogYm9vbCBYU1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJ
ZkluamVjdGVkKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzYWZlSmF2YVNjcmlwdFVSTCwgKEFT
Q0lJTGl0ZXJhbCgiamF2YXNjcmlwdDp2b2lkKDApIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBzYWZlSmF2YVNjcmlwdFVSTChBU0NJSUxpdGVyYWwoImphdmFzY3JpcHQ6
dm9pZCgwKSIpKTsKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJlcXVlc3QudG9rZW4uYXR0cmlidXRlcygpLnNpemUoKTsgKytp
KSB7CkBAIC01MzgsNyArNTM5LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0
dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmUKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICByZXF1ZXN0LnRva2VuLmVyYXNlVmFsdWVPZkF0dHJpYnV0
ZShpKTsKICAgICAgICAgaWYgKHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKQotICAgICAgICAg
ICAgcmVxdWVzdC50b2tlbi5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGksIHNhZmVKYXZhU2NyaXB0
VVJMKTsKKyAgICAgICAgICAgIHJlcXVlc3QudG9rZW4uYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShp
LCBzYWZlSmF2YVNjcmlwdFVSTC5nZXQoKSk7CiAgICAgICAgIGRpZEJsb2NrU2NyaXB0ID0gdHJ1
ZTsKICAgICB9CiAgICAgcmV0dXJuIGRpZEJsb2NrU2NyaXB0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDA3OWJjMGYu
LmY3YTNjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKQEAgLTcyMSw3ICs3MjEsNyBAQCB2b2lkIE1lZGlhQ29udHJvbENs
b3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbgogdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVw
ZGF0ZURpc3BsYXkoKQogewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWxlY3RlZENsYXNzVmFsdWUsICgi
c2VsZWN0ZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc2VsZWN0ZWRDbGFzc1ZhbHVlKCJzZWxl
Y3RlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgaWYgKCFt
ZWRpYUNvbnRyb2xsZXIoKS0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTAzOCw3ICsxMDM4LDcgQEAgUmVmPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5
RWxlbWVudD4gTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGUKIAogc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgZ2V0TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50U2hhZG93UHNldWRvSWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5p
bmctZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpZCgiLXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIGlkOwogfQogCkBAIC0xMDU3LDcgKzEwNTcsNyBAQCBSZWY8
TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sQ3VycmVu
dFRpbWVEaXNwbGF5RWxlbWVudAogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50U2hhZG93UHNldWRvSWQoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gaWQoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXkiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gaWQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3Bw
CmluZGV4IDE2NDViODIuLjgwODJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIE1ldGVy
U2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
CiBNZXRlcklubmVyRWxlbWVudDo6TWV0ZXJJbm5lckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogTWV0ZXJTaGFkb3dFbGVtZW50KGRvY3VtZW50KQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHBzZXVkb0lkLCAoIi13ZWJraXQtbWV0
ZXItaW5uZXItZWxlbWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBwc2V1ZG9JZCgiLXdlYmtp
dC1tZXRlci1pbm5lci1lbGVtZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgc2V0UHNldWRvKHBzZXVkb0lkKTsKIH0KIApAQCAtODAsOSArODAsOSBAQCBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gTWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bAogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1ldGVyVmFsdWVFbGVt
ZW50Ojp2YWx1ZVBzZXVkb0lkKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvcHRpbXVtUHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1v
cHRpbXVtLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHN1Ym9wdGltdW1Q
c2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgZXZlbkxlc3NHb29kUHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1l
dmVuLWxlc3MtZ29vZC12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcHRpbXVtUHNldWRv
SWQoIi13ZWJraXQtbWV0ZXItb3B0aW11bS12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHN1
Ym9wdGltdW1Qc2V1ZG9JZCgiLXdlYmtpdC1tZXRlci1zdWJvcHRpbXVtLXZhbHVlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gZXZlbkxlc3NHb29kUHNldWRvSWQoIi13ZWJraXQtbWV0ZXItZXZlbi1s
ZXNzLWdvb2QtdmFsdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAog
ICAgIEhUTUxNZXRlckVsZW1lbnQqIG1ldGVyID0gbWV0ZXJFbGVtZW50KCk7CiAgICAgaWYgKCFt
ZXRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50
LmgKaW5kZXggNGY5YjMwNC4uNzcwNmIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUo
TUVURVJfRUxFTUVOVCkKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNzUsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIE1ldGVyQmFyRWxl
bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgICAgIDogTWV0ZXJTaGFkb3dFbGVtZW50KGRv
Y3VtZW50KQogICAgIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgcHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1iYXIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LW1ldGVyLWJhciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICBzZXRQc2V1ZG8ocHNldWRvSWQpOwogICAg
IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcAppbmRleCBmYjU4MzM2Li4wZDg5MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTU3NiwxMyArNTc2LDEzIEBA
IEhUTUxJbnB1dEVsZW1lbnQqIFNsaWRlclRodW1iRWxlbWVudDo6aG9zdElucHV0KCkgY29uc3QK
IAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
Zywgc2xpZGVyVGh1bWIsICgiLXdlYmtpdC1zbGlkZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gc2xpZGVyVGh1bWIoIi13ZWJraXQtc2xpZGVyLXRodW1iIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNsaWRlclRodW1iOwogfQog
CiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRv
SWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIG1lZGlhU2xpZGVyVGh1bWIsICgiLXdlYmtpdC1tZWRpYS1zbGlkZXItdGh1bWIiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbWVkaWFTbGlkZXJUaHVtYigiLXdlYmtpdC1tZWRp
YS1zbGlkZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gbWVkaWFTbGlkZXJUaHVtYjsKIH0KIApAQCAtNjQyLDggKzY0Miw4IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdAogICAgIC8vIHRoYXQgdmFsdWUgZGVwZW5kcyBvbiB0aGUgc3R5bGUsIHdoaWNoIG1lYW5z
IHRoZSBzdHlsZSBuZWVkcyB0byBiZSBjb21wdXRlZCB0d2ljZSB0byBnZXQKICAgICAvLyBhIGNv
cnJlY3QgdmFsdWU6IG9uY2UgdG8gZ2V0IHRoZSBJbnB1dCdzIGFwcGVhcmFuY2UsIHRoZW4gYSBz
ZWNvbmQgdGltZSB0byBzdHlsZSB0aGUgc2hhZG93IHRyZWUgY29ycmVjdGx5LgogCi0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWVkaWFTbGlk
ZXJDb250YWluZXIsICgiLXdlYmtpdC1tZWRpYS1zbGlkZXItY29udGFpbmVyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNsaWRlckNvbnRhaW5lciwgKCItd2Via2l0LXNs
aWRlci1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbWVkaWFTbGlkZXJD
b250YWluZXIoIi13ZWJraXQtbWVkaWEtc2xpZGVyLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IHNsaWRlckNvbnRhaW5lcigiLXdlYmtpdC1zbGlkZXItY29udGFpbmVyIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAoIWlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KCpzaGFkb3dIb3N0KCkpKQogICAgICAgICByZXR1cm4gc2xpZGVyQ29udGFp
bmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKaW5kZXggODczMjky
NS4uYTQyZTEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCkBA
IC0zOCw0MiArMzgsNDMgQEAKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJh
bHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBhbHRlcm5hdGl2ZSgiYWx0ZXJuYXRp
dmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gYWx0
ZXJuYXRpdmU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRp
b25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbiwgKCJkZXNjcmlwdGlvbiIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBkZXNjcmlwdGlvbigiZGVzY3JpcHRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW4sICgibWFpbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBtYWluKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1haW47CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQXVk
aW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtYWluRGVzYywgKCJtYWluLWRlc2MiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gbWFpbkRlc2MoIm1haW4tZGVzYyIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBtYWluRGVzYzsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHRyYW5zbGF0aW9u
LCAoInRyYW5zbGF0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHRyYW5zbGF0aW9uKCJ0cmFu
c2xhdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biB0cmFuc2xhdGlvbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjpjb21t
ZW50YXJ5S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IGNvbW1lbnRhcnkoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY29tbWVudGFyeTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IDBkOWEyYjYuLjcyOWY1MjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTQ5LDU1ICs0OSw1NSBAQCBzdGF0
aWMgY29uc3QgaW50IGludmFsaWRUcmFja0luZGV4ID0gLTE7CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgic3VidGl0bGVz
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHN1YnRpdGxlcygic3VidGl0bGVzIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHN1YnRpdGxlczsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
Y2FwdGlvbnMsICgiY2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2FwdGlv
bnMoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIGNhcHRpb25zOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6ZGVz
Y3JpcHRpb25zS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgZGVzY3JpcHRpb25zLCAoImRlc2NyaXB0aW9ucyIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBkZXNjcmlwdGlvbnMoImRlc2NyaXB0aW9ucyIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbnM7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpjaGFwdGVyc0tleXdvcmQoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IGNoYXB0ZXJzLCAoImNoYXB0ZXJzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNoYXB0
ZXJzKCJjaGFwdGVycyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBjaGFwdGVyczsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6Om1l
dGFkYXRhS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgbWV0YWRhdGEsICgibWV0YWRhdGEiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gbWV0YWRhdGEoIm1ldGFkYXRhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1ldGFkYXRhOwogfQogICAgIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBUZXh0VHJhY2s6OmZvcmNlZEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZvcmNlZCwgKCJmb3JjZWQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZm9yY2VkKCJmb3JjZWQiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZm9yY2VkOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFRleHRUcmFjazo6ZGlzYWJsZWRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcGVuLCAoImRpc2Fi
bGVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IG9wZW4oImRpc2FibGVkIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG9wZW47CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpoaWRkZW5LZXl3b3JkKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjbG9zZWQsICgi
aGlkZGVuIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNsb3NlZCgiaGlkZGVuIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNsb3NlZDsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBlbmRl
ZCwgKCJzaG93aW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGVuZGVkKCJzaG93aW5n
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGVuZGVk
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCA2NGU2
ZmQyLi43ZTU5MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgY3VlU2hhZG93UHNldWRvSWQoKQogICAgIHsKLSAgICAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY3VlLCAoImN1ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY3VlKCJjdWUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmV0dXJuIGN1ZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAppbmRleCA3YWM4NjYxLi4wMjMwZjQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCkBAIC03MiwzMSArNzIsMzEgQEAgQ09NUElM
RV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChkaXNwbGF5QWxpZ25tZW50TWFwKSA9PSBWVFRDdWU6
Ok51bWJlck9mQWxpZ25tZW4KIAogc3RhdGljIGNvbnN0IFN0cmluZyYgc3RhcnRLZXl3b3JkKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdGFy
dCwgKEFTQ0lJTGl0ZXJhbCgic3RhcnQiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IHN0YXJ0KEFTQ0lJTGl0ZXJhbCgic3RhcnQiKSk7CiAgICAgcmV0dXJuIHN0
YXJ0OwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiBtaWRkbGVLZXl3b3JkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBtaWRkbGUsIChBU0NJ
SUxpdGVyYWwoIm1pZGRsZSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0
cmluZz4gbWlkZGxlKEFTQ0lJTGl0ZXJhbCgibWlkZGxlIikpOwogICAgIHJldHVybiBtaWRkbGU7
CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIGVuZEtleXdvcmQoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVuZCwgKEFTQ0lJTGl0ZXJhbCgi
ZW5kIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlbmQoQVND
SUlMaXRlcmFsKCJlbmQiKSk7CiAgICAgcmV0dXJuIGVuZDsKIH0KIAogc3RhdGljIGNvbnN0IFN0
cmluZyYgbGVmdEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIGxlZnQsICgibGVmdCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgU3RyaW5nPiBsZWZ0KCJsZWZ0Iik7CiAgICAgcmV0dXJuIGxlZnQ7CiB9CiAKIHN0
YXRpYyBjb25zdCBTdHJpbmcmIHJpZ2h0S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcmlnaHQsICgicmlnaHQiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gcmlnaHQoInJpZ2h0Iik7CiAgICAgcmV0
dXJuIHJpZ2h0OwogfQogCkBAIC0xMDcsMTMgKzEwNywxMyBAQCBzdGF0aWMgY29uc3QgU3RyaW5n
JiBob3Jpem9udGFsS2V5d29yZCgpCiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHZlcnRpY2FsR3Jv
d2luZ0xlZnRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCB2ZXJ0aWNhbHJsLCAoQVNDSUlMaXRlcmFsKCJybCIpKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdmVydGljYWxybChBU0NJSUxpdGVyYWwo
InJsIikpOwogICAgIHJldHVybiB2ZXJ0aWNhbHJsOwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5n
JiB2ZXJ0aWNhbEdyb3dpbmdSaWdodEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHZlcnRpY2FsbHIsIChBU0NJSUxpdGVyYWwoImxy
IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2ZXJ0aWNhbGxy
KEFTQ0lJTGl0ZXJhbCgibHIiKSk7CiAgICAgcmV0dXJuIHZlcnRpY2FsbHI7CiB9CiAKQEAgLTIy
NSw3ICsyMjUsNyBAQCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IElu
dFNpemUmIHZpZGVvU2l6ZSkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBWVFRDdWVCb3g6OnZ0dEN1
ZUJveFNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZCwgKCIt
d2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC1tZWRpYS10ZXh0LXRy
YWNrLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBy
ZXR1cm4gdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQ7CiB9CiAKQEAgLTIzOCw3ICsyMzgs
NyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVlRUQ3VlQm94OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZUVEN1
ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9J
ZCwgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNrZHJvcCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNrZHJvcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkOwogfQog
CkBAIC01OTcsNyArNTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDdWVQYXJhZ3JhcGhTZXBhcmF0b3Io
VUNoYXIgY2hhcmFjdGVyKQogCiB2b2lkIFZUVEN1ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcnRU
YWcsIChBU0NJSUxpdGVyYWwoInJ0IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiBydFRhZyhBU0NJSUxpdGVyYWwoInJ0IikpOwogICAgIGNyZWF0ZVdlYlZUVE5v
ZGVUcmVlKCk7CiAgICAgaWYgKCFtX3dlYlZUVE5vZGVUcmVlKQogICAgICAgICByZXR1cm47CkBA
IC03NDEsNyArNzQxLDcgQEAgdm9pZCBWVFRDdWU6OmNhbGN1bGF0ZURpc3BsYXlQYXJhbWV0ZXJz
KCkKICAgICAKIHZvaWQgVlRUQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVzKENvbnRhaW5lck5v
ZGUqIHJvb3QsIGNvbnN0IE1lZGlhVGltZSYgcHJldmlvdXNUaW1lc3RhbXAsIGNvbnN0IE1lZGlh
VGltZSYgbW92aWVUaW1lKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBTdHJpbmcsIHRpbWVzdGFtcFRhZywgKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIikpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB0aW1lc3RhbXBUYWcoQVND
SUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSk7CiAgICAgCiAgICAgYm9vbCBpc1Bhc3ROb2RlID0gdHJ1
ZTsKICAgICBNZWRpYVRpbWUgY3VycmVudFRpbWVzdGFtcCA9IHByZXZpb3VzVGltZXN0YW1wOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCmluZGV4IDg1Nzk4NjguLjk0MTFm
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKQEAgLTE4OCw3ICsx
ODgsNyBAQCB2b2lkIFZUVFJlZ2lvbjo6c2V0Vmlld3BvcnRBbmNob3JZKGRvdWJsZSB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAKIGNvbnN0IEF0b21pY1N0cmluZyBWVFRSZWdpb246OnNjcm9s
bCgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgdXBTY3JvbGxWYWx1ZUtleXdvcmQsICgidXAiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gdXBTY3JvbGxWYWx1ZUtleXdvcmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAobV9zY3JvbGwpCiAgICAgICAgIHJldHVybiB1
cFNjcm9sbFZhbHVlS2V5d29yZDsKQEAgLTE5OCw3ICsxOTgsNyBAQCBjb25zdCBBdG9taWNTdHJp
bmcgVlRUUmVnaW9uOjpzY3JvbGwoKSBjb25zdAogCiB2b2lkIFZUVFJlZ2lvbjo6c2V0U2Nyb2xs
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHVwU2Nyb2xs
VmFsdWVLZXl3b3JkLCAoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHVwU2Nyb2xs
VmFsdWVLZXl3b3JkKCJ1cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
CiAgICAgaWYgKHZhbHVlICE9IGVtcHR5U3RyaW5nKCkgJiYgdmFsdWUgIT0gdXBTY3JvbGxWYWx1
ZUtleXdvcmQpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwpAQCAtMjY4LDcgKzI2OCw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZWRFbnRpcmVSdW4oY29uc3QgVlRUU2Nhbm5lciYgaW5w
dXQsIGNvbnN0IFZUVFNjYW5uZXI6OlJ1CiAKIHZvaWQgVlRUUmVnaW9uOjpwYXJzZVNldHRpbmdW
YWx1ZShSZWdpb25TZXR0aW5nIHNldHRpbmcsIFZUVFNjYW5uZXImIGlucHV0KQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNjcm9sbFVw
VmFsdWVLZXl3b3JkLCAoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNjcm9sbFVw
VmFsdWVLZXl3b3JkKCJ1cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
CiAgICAgVlRUU2Nhbm5lcjo6UnVuIHZhbHVlUnVuID0gaW5wdXQuY29sbGVjdFVudGlsPGlzSFRN
TFNwYWNlPFVDaGFyPj4oKTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgVlRUUmVnaW9uOjpw
YXJzZVNldHRpbmdWYWx1ZShSZWdpb25TZXR0aW5nIHNldHRpbmcsIFZUVFNjYW5uZXImIGlucHV0
KQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTY3JvbGw6Ci0gICAgICAgIGlmIChp
bnB1dC5zY2FuUnVuKHZhbHVlUnVuLCBzY3JvbGxVcFZhbHVlS2V5d29yZCkpCisgICAgICAgIGlm
IChpbnB1dC5zY2FuUnVuKHZhbHVlUnVuLCBzY3JvbGxVcFZhbHVlS2V5d29yZC5nZXQoKSkpCiAg
ICAgICAgICAgICBtX3Njcm9sbCA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExP
RyhNZWRpYSwgIlZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUsIGludmFsaWQgU2Nyb2xsIik7
CkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBWVFRSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVlKFJl
Z2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgVlRUUmVnaW9uOjp0ZXh0VHJhY2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcygpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
dHJhY2tSZWdpb25DdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcywgKCJzY3JvbGxpbmciLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHJhY2tSZWdpb25DdWVDb250YWluZXJTY3JvbGxpbmdD
bGFzcygic2Nyb2xsaW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICByZXR1cm4gdHJhY2tSZWdpb25DdWVDb250YWluZXJTY3JvbGxpbmdDbGFzczsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCmluZGV4IDk3NGU0OTcuLjczNDA5
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtNDcsMzcg
KzQ3LDM3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRl
b1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZlLCAoImFsdGVybmF0aXZl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHRlcm5h
dGl2ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdv
cmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIGNhcHRpb25zLCAoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IGNhcHRpb25zKCJjYXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBjYXB0aW9uczsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1Ry
YWNrOjptYWluS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlvbnMsICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bWljU3RyaW5nPiBjYXB0aW9ucygibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBjYXB0aW9uczsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBW
aWRlb1RyYWNrOjpzaWduS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2lnbiwgKCJzaWduIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IHNpZ24oInNpZ24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gc2lnbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1Ry
YWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgic3VidGl0bGVzIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IHN1YnRpdGxlcygic3VidGl0bGVzIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHN1YnRpdGxlczsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVu
dGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNvbW1lbnRh
cnkoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gY29tbWVudGFyeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRURWxlbWVudC5jcHAKaW5kZXggYTNjMDM2Ni4uMWY2MTBmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCkBAIC0zNiwxNCArMzYsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgbm9kZVR5cGVUb1Rh
Z05hbWUoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIGNUYWcsIChudWxsQXRvbSwgImMiLCBudWxsQXRv
bSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB2
VGFnLCAobnVsbEF0b20sICJ2IiwgbnVsbEF0b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgbGFuZ1RhZywgKG51bGxBdG9tLCAibGFuZyIsIG51
bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5h
bWUsIGJUYWcsIChudWxsQXRvbSwgImIiLCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB1VGFnLCAobnVsbEF0b20sICJ1IiwgbnVs
bEF0b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFt
ZSwgaVRhZywgKG51bGxBdG9tLCAiaSIsIG51bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHJ1YnlUYWcsIChudWxsQXRvbSwgInJ1Ynki
LCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZp
ZWROYW1lLCBydFRhZywgKG51bGxBdG9tLCAicnQiLCBudWxsQXRvbSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjVGFnKG51bGxBdG9tLCAiYyIsIG51bGxBdG9t
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdlRhZyhudWxsQXRv
bSwgInYiLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGxhbmdUYWcobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20pOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBiVGFnKG51bGxBdG9tLCAiYiIsIG51bGxBdG9tKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdVRhZyhudWxsQXRvbSwg
InUiLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+
IGlUYWcobnVsbEF0b20sICJpIiwgbnVsbEF0b20pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBydWJ5VGFnKG51bGxBdG9tLCAicnVieSIsIG51bGxBdG9tKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnRUYWcobnVsbEF0b20sICJy
dCIsIG51bGxBdG9tKTsKICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CiAgICAgY2FzZSBXZWJWVFRO
b2RlVHlwZUNsYXNzOgogICAgICAgICByZXR1cm4gY1RhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXggODlkM2QyYy4uNWVmZGMxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDEz
ICs2MywxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgdm9p
Y2VBdHRyaWJ1dGVOYW1lKCkKICAgICB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChRdWFsaWZpZWROYW1lLCB2b2ljZUF0dHIsIChudWxsQXRvbSwgInZvaWNlIiwgbnVs
bEF0b20pKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZv
aWNlQXR0cihudWxsQXRvbSwgInZvaWNlIiwgbnVsbEF0b20pOwogICAgICAgICByZXR1cm4gdm9p
Y2VBdHRyOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGFu
Z0F0dHJpYnV0ZU5hbWUoKQogICAgIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxBdG9tLCAibGFuZyIsIG51bGxB
dG9tKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2b2lj
ZUF0dHIobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20pOwogICAgICAgICByZXR1cm4gdm9pY2VB
dHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3Bw
CmluZGV4IDE5MjIwMTAuLjllYjE1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCBib29sIFdlYlZUVFBhcnNlcjo6aGFz
UmVxdWlyZWRGaWxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGxpbmUpCiB2b2lkIFdlYlZUVFBh
cnNlcjo6Y29sbGVjdE1ldGFkYXRhSGVhZGVyKGNvbnN0IFN0cmluZyYgbGluZSkKIHsKICAgICAv
LyBXZWJWVFQgaGVhZGVyIHBhcnNpbmcgKFdlYlZUVCBwYXJzZXIgYWxnb3JpdGhtIHN0ZXAgMTIp
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
cmVnaW9uSGVhZGVyTmFtZSwgKCJSZWdpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4g
cmVnaW9uSGVhZGVyTmFtZSgiUmVnaW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAKICAgICAvLyBTdGVwIDEyLjQgSWYgbGluZSBjb250YWlucyB0aGUgY2hhcmFjdGVy
ICI6IiAoQSBVKzAwM0EgQ09MT04pLCB0aGVuIHNldCBtZXRhZGF0YSdzCiAgICAgLy8gbmFtZSB0
byB0aGUgc3Vic3RyaW5nIG9mIGxpbmUgYmVmb3JlIHRoZSBmaXJzdCAiOiIgY2hhcmFjdGVyIGFu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5k
ZXggMTFlNTI0OS4uZTliMzJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC03OSwxMCArNzksMTAgQEAgZW51bSBGb3JjZVBzZXVkb0Ns
YXNzRmxhZ3MgewogCiBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZVBzZXVkb0NsYXNzTWFzayhjb25z
dCBJbnNwZWN0b3JBcnJheSYgcHNldWRvQ2xhc3NBcnJheSkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhY3RpdmUsIChBU0NJSUxpdGVyYWwoImFjdGl2ZSIp
KSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaG92ZXIsIChB
U0NJSUxpdGVyYWwoImhvdmVyIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBmb2N1cywgKEFTQ0lJTGl0ZXJhbCgiZm9jdXMiKSkpOwotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHZpc2l0ZWQsIChBU0NJSUxpdGVyYWwoInZp
c2l0ZWQiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFjdGl2ZShBU0NJ
SUxpdGVyYWwoImFjdGl2ZSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBo
b3ZlcihBU0NJSUxpdGVyYWwoImhvdmVyIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGZvY3VzKEFTQ0lJTGl0ZXJhbCgiZm9jdXMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gdmlzaXRlZChBU0NJSUxpdGVyYWwoInZpc2l0ZWQiKSk7CiAgICAgaWYg
KCFwc2V1ZG9DbGFzc0FycmF5Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gUHNldWRvQ2xhc3NO
b25lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IDVjZThjMjYuLmQ2NjAyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0yMzAsOCArMjMwLDggQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IEZyYW1lKiBmcmFtZSwKIC8vc3RhdGljCiBTdHJpbmcgSW5zcGVjdG9yUGFnZUFnZW50Ojpzb3Vy
Y2VNYXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc291cmNlTWFwSFRUUEhl
YWRlciwgKEFTQ0lJTGl0ZXJhbCgiU291cmNlTWFwIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRlZCwgKEFT
Q0lJTGl0ZXJhbCgiWC1Tb3VyY2VNYXAiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHNvdXJjZU1hcEhUVFBIZWFkZXIoQVNDSUlMaXRlcmFsKCJTb3VyY2VNYXAiKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc291cmNlTWFwSFRUUEhlYWRlckRlcHJl
Y2F0ZWQoQVNDSUlMaXRlcmFsKCJYLVNvdXJjZU1hcCIpKTsKIAogICAgIGlmICghY2FjaGVkUmVz
b3VyY2UpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA0MTgzMzMwLi40NzYxZTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CkBAIC04ODAsNyArODgwLDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1NlbGVjdG9yPiBidWlsZE9iamVjdEZvclNlbGVjdG9ySGVscGVyKGMKIAogc3RhdGljIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1NlbGVjdG9yPj4gc2VsZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNlRGF0YSog
c291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzaGVldFRleHQsIGNvbnN0IENTU1NlbGVjdG9yTGlz
dCYgc2VsZWN0b3JMaXN0LCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uLCBjb21tZW50LCAo
Ii9cXCpbXl0qP1xcKi8iLCBUZXh0Q2FzZVNlbnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVF
bmFibGVkKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24+IGNvbW1lbnQoIi9cXCpbXl0qP1xcKi8iLCBUZXh0Q2FzZVNlbnNpdGl2ZSwgSlND
OjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj46
OmNyZWF0ZSgpOwogICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlz
dC5maXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggZjFhZGYxZC4uMjAwZWJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2tGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CkBAIC03Myw4ICs3NCw4IEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoYm9vbCBp
c0JlaW5nRGVzdHJveWVkKQogCiBTdHJpbmcgUGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVS
TEZvclNjcmlwdChjb25zdCBTY3JpcHQmIHNjcmlwdCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIVFRQSGVhZGVyLCAoQVNDSUlMaXRlcmFs
KCJTb3VyY2VNYXAiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkLCAoQVNDSUlMaXRlcmFsKCJYLVNvdXJj
ZU1hcCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc291cmNlTWFwSFRU
UEhlYWRlcihBU0NJSUxpdGVyYWwoIlNvdXJjZU1hcCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRlZChBU0NJSUxpdGVyYWwo
IlgtU291cmNlTWFwIikpOwogCiAgICAgaWYgKCFzY3JpcHQudXJsLmlzRW1wdHkoKSkgewogICAg
ICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtX3BhZ2VBZ2VudC0+Y2FjaGVkUmVzb3Vy
Y2UoJm1fcGFnZS5tYWluRnJhbWUoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgc2NyaXB0LnVybCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggZWQxN2ZhOS4uMjhlZjA3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0yODksNyArMjg5LDcg
QEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlKQogICAgICAgICBtX2hhc1BlbmRpbmdFcnJvckV2ZW50ID0gdHJ1ZTsKICAgICAgICAgZXJy
b3JFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKCp0aGlzKTsKIAotICAgICAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJ
TGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIGltYWdlIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBS
ZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiBpbWFn
ZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikp
OwogICAgICAgICBlbGVtZW50KCkuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UpOwog
CiAgICAgICAgIEFTU0VSVCghbV9oYXNQZW5kaW5nTG9hZEV2ZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggNDBlOWFkNS4uNmRhMTA4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBA
QCB2b2lkIFRleHRUcmFja0xvYWRlcjo6ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyYwogCiB2b2lkIFRleHRUcmFja0xvYWRlcjo6Y29yc1Bv
bGljeVByZXZlbnRlZExvYWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4gdGV4
dCB0cmFjayBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xp
Y3kuIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2Fn
ZShBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiB0ZXh0IHRyYWNrIGxvYWQgZGVuaWVkIGJ5IENy
b3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAg
ICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgbV9zdGF0ZSA9IEZhaWxl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5jcHAKaW5kZXggNWFkNTdlYy4uYTA1ZGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg4LDcgQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmluaXRpYXRvck5hbWUoKSBjb25z
dAogICAgIGlmICghbV9pbml0aWF0b3JOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1f
aW5pdGlhdG9yTmFtZTsKIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIGRlZmF1bHROYW1lLCAoInJlc291cmNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGRlZmF1bHROYW1lKCJyZXNvdXJjZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiBkZWZhdWx0TmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggZmVmMzhkNy4uMmI2NDNiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiU3VkZGVuVGVybWluYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQXV0b2RyYWlu
ZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIC8vIEZvciBt
ZXRob2RzIHRoYXQgYXJlIG1lYW50IHRvIHN1cHBvcnQgQVBJIGZyb20gdGhlIG1haW4gdGhyZWFk
IC0gc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW50ZXJuYWxseQpAQCAtODc5LDggKzg4MCw4IEBAIFN0
cmluZyBJY29uRGF0YWJhc2U6OmRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKIFN0cmluZyBJY29uRGF0
YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSwgKEFTQ0lJTGl0
ZXJhbCgiV2VicGFnZUljb25zLmRiIikpKTsKLSAgICByZXR1cm4gZGVmYXVsdERhdGFiYXNlRmls
ZW5hbWUuaXNvbGF0ZWRDb3B5KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoQVNDSUlMaXRlcmFsKCJXZWJwYWdlSWNvbnMuZGIiKSk7
CisgICAgcmV0dXJuIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lLmdldCgpLmlzb2xhdGVkQ29weSgp
OwogfQogCiAvLyBVbmxpa2UgZ2V0T3JDcmVhdGVQYWdlVVJMUmVjb3JkKCksIGdldE9yQ3JlYXRl
SWNvblJlY29yZCgpIGRvZXMgbm90IG1hcmsgdGhlIGljb24gYXMgImludGVyZXN0ZWQgaW4gaW1w
b3J0IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAK
aW5kZXggYTk3NGNkOC4uMTYzZWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiVXNlclN0
eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI4NCw3ICsyODUsNyBAQCB2
b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRl
KGNvbnN0IFN0cmluZyYgb3ZlcnJpZAogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1cGRh
dGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKQogewogICAgIC8vIElkZW50aWZ5IG91ciBvdmVy
cmlkZSBzdHlsZSBzaGVldCB3aXRoIGEgdW5pcXVlIFVSTCAtIGEgbmV3IHNjaGVtZSBhbmQgYSBV
VUlELgotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkwsIGNhcHRpb25zU3R5
bGVTaGVldFVSTCwgKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFG
NkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIikpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxVUkw+IGNhcHRpb25zU3R5bGVTaGVldFVSTChQYXJzZWRVUkxTdHJpbmcsICJ1c2Vy
LWNhcHRpb25zLW92ZXJyaWRlOjAxRjZBRjEyLUMzQjAtNEY3MC1BRjVFLUEzRTAwMjM0REMyMyIp
OwogCiAgICAgYXV0byYgcGFnZXMgPSBtX3BhZ2VHcm91cC5wYWdlcygpOwogICAgIGZvciAoYXV0
byYgcGFnZSA6IHBhZ2VzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmluZGV4IDZhMWU5YjcuLjcyY2FiMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2lu
Y2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKICNpbmNsdWRlICJWVFRDdWUuaCIKKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KQEAgLTI0Niw3ICsyNDcsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUY6OmNhcHRpb25zQmFja2dyb3VuZENTUygpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBk
ZWZhdWx0IHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVk
aWFDb250cm9scy5jc3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVzCiAg
ICAgLy8gYW5kIHdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2Rlcy4KLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3Is
IChDb2xvcigwLCAwLCAwLCAwLjggKiAyNTUpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PENvbG9yPiBkZWZhdWx0QmFja2dyb3VuZENvbG9yKDAsIDAsIDAsIDAuOCAqIDI1NSk7CiAKICAg
ICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CiAKQEAgLTM0OSwxMCArMzUw
LDEwIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y29sb3JQcm9wZXJ0
eUNTUyhDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBDCiAKIFN0cmluZyBDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNUZXh0RWRnZUNTUygpIGNvbnN0CiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlUmFpc2VkLCAo
IiAtLjA1ZW0gLS4wNWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZURl
cHJlc3NlZCwgKCIgLjA1ZW0gLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRn
ZVN0eWxlRHJvcFNoYWRvdywgKCIgLjA3NWVtIC4wNzVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
U3RyaW5nLCBlZGdlU3R5bGVVbmlmb3JtLCAoIiAuMDNlbSAiLCBTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gZWRn
ZVN0eWxlUmFpc2VkKEFTQ0lJTGl0ZXJhbCgiIC0uMDVlbSAtLjA1ZW0gMCAiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gZWRnZVN0eWxlRGVwcmVzc2VkKEFTQ0lJ
TGl0ZXJhbCgiIC4wNWVtIC4wNWVtIDAgIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IGVkZ2VTdHlsZURyb3BTaGFkb3coQVNDSUlMaXRlcmFsKCIgLjA3NWVtIC4w
NzVlbSAwICIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlZGdl
U3R5bGVVbmlmb3JtKEFTQ0lJTGl0ZXJhbCgiIC4wM2VtICIpKTsKIAogICAgIGJvb2wgdW51c2Vk
OwogICAgIENvbG9yIGNvbG9yID0gY2FwdGlvbnNUZXh0Q29sb3IodW51c2VkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCBjNDYxMThkLi4w
NTliYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFj
ay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKQEAgLTk5NCw3ICs5OTUsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrU291
cmNlQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdAogCiBib29s
IENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250
ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2Us
IChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IFVSTCBiZWNhdXNl
IGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0
aXZlOiAiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNz
YWdlKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIEphdmFTY3JpcHQgVVJMIGJlY2F1
c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJl
Y3RpdmU6ICIpKTsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxp
bmVBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgp
KSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCB0cnVlKQogICAgICAg
ICA6IChtX3JlcG9ydE9ubHkgfHwgY2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2Ny
aXB0U3JjLmdldCgpKSkpOwpAQCAtMTAwMiw3ICsxMDAzLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVM
aXN0OjphbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3Qg
V1RGOjoKIAogYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRl
eHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdT
dGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBpbmxp
bmUgZXZlbnQgaGFuZGxlciBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVu
dCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVj
dXRlIGlubGluZSBldmVudCBoYW5kbGVyIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2lu
ZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKICAgICByZXR1cm4gcmVw
b3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpT
ZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0
aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRV
UkwsIGNvbnRleHRMaW5lLCB0cnVlKQogICAgICAgICA6IChtX3JlcG9ydE9ubHkgfHwgY2hlY2tJ
bmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSkpOwpAQCAtMTAxMCw3
ICsxMDExLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50SGFuZGxl
cnMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdAogCiBib29sIENTUERpcmVjdGl2ZUxp
c3Q6OmFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RG
OjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJS
ZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBm
b2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgi
UmVmdXNlZCB0byBleGVjdXRlIGlubGluZSBzY3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUg
Zm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpOwogICAgIHJl
dHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXM6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlv
bihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwg
Y29udGV4dFVSTCwgY29udGV4dExpbmUsIHRydWUpIDoKICAgICAgICAgKG1fcmVwb3J0T25seSB8
fCBjaGVja0lubGluZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpKSk7CkBA
IC0xMDE4LDcgKzEwMTksNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2Ny
aXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcgogCiBib29sIENTUERp
cmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBj
b25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxp
dGVyYWwoIlJlZnVzZWQgdG8gYXBwbHkgaW5saW5lIHN0eWxlIGJlY2F1c2UgaXQgdmlvbGF0ZXMg
dGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRl
cmFsKCJSZWZ1c2VkIHRvIGFwcGx5IGlubGluZSBzdHlsZSBiZWNhdXNlIGl0IHZpb2xhdGVzIHRo
ZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7CiAgICAg
cmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1czo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0
aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2Us
IGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBmYWxzZSkgOgogICAgICAgICAobV9yZXBvcnRPbmx5
IHx8IGNoZWNrSW5saW5lKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKSkpOwpA
QCAtMTAyNiw3ICsxMDI3LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVN0
eWxlKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmQKIAogYm9vbCBDU1BE
aXJlY3RpdmVMaXN0OjphbGxvd0V2YWwoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2Us
IChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXZhbHVhdGUgc2NyaXB0IGJlY2F1c2UgaXQgdmlv
bGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIp
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVND
SUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV2YWx1YXRlIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVz
IHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7CiAg
ICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9y
dGluZ1N0YXR1czo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrRXZhbEFuZFJlcG9ydFZpb2xh
dGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2Fn
ZSwgU3RyaW5nKCksIFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgc3RhdGUpIDoK
ICAgICAgICAgKG1fcmVwb3J0T25seSB8fCBjaGVja0V2YWwob3BlcmF0aXZlRGlyZWN0aXZlKG1f
c2NyaXB0U3JjLmdldCgpKSkpOwpAQCAtMTY3NiwxMiArMTY3NywxMiBAQCB2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4
dCwgY29uc3QgUwogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VW5zdXBwb3J0
ZWREaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFsbG93LCAoQVNDSUlMaXRlcmFsKCJhbGxvdyIp
KSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb3B0aW9ucywg
KEFTQ0lJTGl0ZXJhbCgib3B0aW9ucyIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgcG9saWN5VVJJLCAoQVNDSUlMaXRlcmFsKCJwb2xpY3ktdXJpIikpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhbGxvd01lc3NhZ2Us
IChBU0NJSUxpdGVyYWwoIlRoZSAnYWxsb3cnIGRpcmVjdGl2ZSBoYXMgYmVlbiByZXBsYWNlZCB3
aXRoICdkZWZhdWx0LXNyYycuIFBsZWFzZSB1c2UgdGhhdCBkaXJlY3RpdmUgaW5zdGVhZCwgYXMg
J2FsbG93JyBoYXMgbm8gZWZmZWN0LiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgb3B0aW9uc01lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlRoZSAnb3B0aW9u
cycgZGlyZWN0aXZlIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggJ3Vuc2FmZS1pbmxpbmUnIGFuZCAn
dW5zYWZlLWV2YWwnIHNvdXJjZSBleHByZXNzaW9ucyBmb3IgdGhlICdzY3JpcHQtc3JjJyBhbmQg
J3N0eWxlLXNyYycgZGlyZWN0aXZlcy4gUGxlYXNlIHVzZSB0aG9zZSBkaXJlY3RpdmVzIGluc3Rl
YWQsIGFzICdvcHRpb25zJyBoYXMgbm8gZWZmZWN0LiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcG9saWN5VVJJTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgi
VGhlICdwb2xpY3ktdXJpJyBkaXJlY3RpdmUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzcGVj
aWZpY2F0aW9uLiBQbGVhc2Ugc3BlY2lmeSBhIGNvbXBsZXRlIHBvbGljeSB2aWEgdGhlIENvbnRl
bnQtU2VjdXJpdHktUG9saWN5IGhlYWRlci4iKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGFsbG93KEFTQ0lJTGl0ZXJhbCgiYWxsb3ciKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gb3B0aW9ucyhBU0NJSUxpdGVyYWwoIm9wdGlvbnMiKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcG9saWN5VVJJKEFTQ0lJTGl0ZXJhbCgicG9s
aWN5LXVyaSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhbGxvd01lc3Nh
Z2UoQVNDSUlMaXRlcmFsKCJUaGUgJ2FsbG93JyBkaXJlY3RpdmUgaGFzIGJlZW4gcmVwbGFjZWQg
d2l0aCAnZGVmYXVsdC1zcmMnLiBQbGVhc2UgdXNlIHRoYXQgZGlyZWN0aXZlIGluc3RlYWQsIGFz
ICdhbGxvdycgaGFzIG5vIGVmZmVjdC4iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gb3B0aW9uc01lc3NhZ2UoQVNDSUlMaXRlcmFsKCJUaGUgJ29wdGlvbnMnIGRpcmVjdGl2
ZSBoYXMgYmVlbiByZXBsYWNlZCB3aXRoICd1bnNhZmUtaW5saW5lJyBhbmQgJ3Vuc2FmZS1ldmFs
JyBzb3VyY2UgZXhwcmVzc2lvbnMgZm9yIHRoZSAnc2NyaXB0LXNyYycgYW5kICdzdHlsZS1zcmMn
IGRpcmVjdGl2ZXMuIFBsZWFzZSB1c2UgdGhvc2UgZGlyZWN0aXZlcyBpbnN0ZWFkLCBhcyAnb3B0
aW9ucycgaGFzIG5vIGVmZmVjdC4iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gcG9saWN5VVJJTWVzc2FnZShBU0NJSUxpdGVyYWwoIlRoZSAncG9saWN5LXVyaScgZGlyZWN0
aXZlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgc3BlY2lmaWNhdGlvbi4gUGxlYXNlIHNwZWNp
ZnkgYSBjb21wbGV0ZSBwb2xpY3kgdmlhIHRoZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBoZWFk
ZXIuIikpOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsIGFsbG93KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA5OWE5ZjVhLi44
NjJiOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMTAsNiArMTEwLDcgQEAK
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTg1LDEzICsxODYsMTMgQEAg
dHlwZWRlZiBIYXNoQ291bnRlZFNldDxET01XaW5kb3cqPiBET01XaW5kb3dTZXQ7CiAKIHN0YXRp
YyBET01XaW5kb3dTZXQmIHdpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChET01XaW5kb3dTZXQsIHdpbmRvd3NXaXRo
VW5sb2FkRXZlbnRMaXN0ZW5lcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE9N
V2luZG93U2V0PiB3aW5kb3dzV2l0aFVubG9hZEV2ZW50TGlzdGVuZXJzOwogICAgIHJldHVybiB3
aW5kb3dzV2l0aFVubG9hZEV2ZW50TGlzdGVuZXJzOwogfQogCiBzdGF0aWMgRE9NV2luZG93U2V0
JiB3aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRE9NV2luZG93U2V0LCB3aW5kb3dzV2l0aEJlZm9yZVVu
bG9hZEV2ZW50TGlzdGVuZXJzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERPTVdp
bmRvd1NldD4gd2luZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVyczsKICAgICByZXR1
cm4gd2luZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVyczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDFjZTdiNTQuLjkxODJkM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTk2LDYgKzk2LDcgQEAKICNpbmNsdWRlICJXaW5k
b3dzS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFu
Z2UuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDAxLDcgKzQwMiw3IEBAIEV2ZW50
SGFuZGxlcjo6fkV2ZW50SGFuZGxlcigpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIERyYWdT
dGF0ZSYgRXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChEcmFnU3RhdGUsIHN0YXRlLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPERyYWdTdGF0ZT4gc3RhdGU7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogI2VuZGlmIC8v
IEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0zMDc2LDEwICszMDc3LDEwIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGluaXRpYWxLZXlF
dmVudCkKIAogc3RhdGljIEZvY3VzRGlyZWN0aW9uIGZvY3VzRGlyZWN0aW9uRm9yS2V5KGNvbnN0
IEF0b21pY1N0cmluZyYga2V5SWRlbnRpZmllcikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBEb3duLCAoIkRvd24iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgVXAsICgiVXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
TGVmdCwgKCJMZWZ0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIFJpZ2h0LCAoIlJp
Z2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IERvd24oIkRvd24iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBVcCgiVXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBMZWZ0KCJMZWZ0IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gUmlnaHQoIlJpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAKICAgICBGb2N1c0RpcmVjdGlvbiByZXRWYWwgPSBGb2N1c0RpcmVjdGlvbk5vbmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYjc2MzM2OC4uNzQwZTlmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBzdGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhw
cmVzc2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAg
Ly8gUkVWSUVXLSB2ZXJzaW9uIG9mIHRoaXMgY2FsbCBpbiBGcmFtZU1hYy5tbSBjYWNoZXMgYmFz
ZWQgb24gdGhlIE5TQXJyYXkgcHRycyBiZWluZwogICAgIC8vIHRoZSBzYW1lIGFjcm9zcyBjYWxs
cy4gIFdlIGNhbid0IGRvIHRoYXQuCiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiwgd29yZFJlZ0V4cCwgKCJcXHciLCBUZXh0
Q2FzZVNlbnNpdGl2ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHciLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7CiAg
ICAgU3RyaW5nQnVpbGRlciBwYXR0ZXJuOwogICAgIHBhdHRlcm4uYXBwZW5kKCcoJyk7CiAgICAg
dW5zaWduZWQgaW50IG51bUxhYmVscyA9IGxhYmVscy5zaXplKCk7CkBAIC0zMTcsOCArMzE3LDgg
QEAgc3RhdGljIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gY3JlYXRlUmVnRXhwRm9yTGFi
ZWxzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogICAgICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hh
ciA9IGZhbHNlOwogICAgICAgICBib29sIGVuZHNXaXRoV29yZENoYXIgPSBmYWxzZTsKICAgICAg
ICAgaWYgKGxhYmVsLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXIg
PSB3b3JkUmVnRXhwLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKLSAgICAgICAg
ICAgIGVuZHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLm1hdGNoKGxhYmVsLnN1YnN0cmluZyhs
YWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOworICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRD
aGFyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7
CisgICAgICAgICAgICBlbmRzV2l0aFdvcmRDaGFyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChs
YWJlbC5zdWJzdHJpbmcobGFiZWwubGVuZ3RoKCkgLSAxLCAxKSkgPj0gMDsKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKaW5kZXgg
MGY1ZTJiZS4uMGJlMmUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTmF2aWdhdG9yQmFzZS5oIgogCiAjaW5jbHVkZSAi
TmV0d29ya1N0YXRlTm90aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIE9TKExJTlVYKQpAQCAtOTMs
NyArOTQsNyBAQCBTdHJpbmcgTmF2aWdhdG9yQmFzZTo6cGxhdGZvcm0oKSBjb25zdAogICAgIGlm
ICghU3RyaW5nKFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNKS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBXRUJDT1JFX05BVklHQVRPUl9QTEFURk9STTsKICAgICBzdHJ1Y3QgdXRzbmFtZSBv
c25hbWU7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcGxhdGZv
cm1OYW1lLCAodW5hbWUoJm9zbmFtZSkgPj0gMCA/IFN0cmluZyhvc25hbWUuc3lzbmFtZSkgKyBT
dHJpbmcoIiAiKSArIFN0cmluZyhvc25hbWUubWFjaGluZSkgOiBlbXB0eVN0cmluZygpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcGxhdGZvcm1OYW1lKHVuYW1lKCZvc25h
bWUpID49IDAgPyBTdHJpbmcob3NuYW1lLnN5c25hbWUpICsgU3RyaW5nKCIgIikgKyBTdHJpbmco
b3NuYW1lLm1hY2hpbmUpIDogZW1wdHlTdHJpbmcoKSk7CiAgICAgcmV0dXJuIHBsYXRmb3JtTmFt
ZTsKICNlbHNlCiAgICAgcmV0dXJuIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAKaW5kZXggZjZjY2MxNC4uNzQ1
MGMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVmlzaWJpbGl0eVN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwCkBA
IC0zMSwxNCArMzEsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYWdlVmlz
aWJpbGl0eVN0YXRlLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgcGFnZVZpc2liaWxpdHlTdGF0ZVN0cmluZyhQYWdl
VmlzaWJpbGl0eVN0YXRlIHN0YXRlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIHZpc2libGUsIChBU0NJSUxpdGVyYWwoInZpc2libGUiKSkpOwot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGhpZGRlbiwg
KEFTQ0lJTGl0ZXJhbCgiaGlkZGVuIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RyaW5nLCBwcmVyZW5kZXIsIChBU0NJSUxpdGVyYWwoInByZXJlbmRlciIp
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdmlzaWJsZShBU0NJ
SUxpdGVyYWwoInZpc2libGUiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0
cmluZz4gaGlkZGVuKEFTQ0lJTGl0ZXJhbCgiaGlkZGVuIikpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBTdHJpbmc+IHByZXJlbmRlcihBU0NJSUxpdGVyYWwoInByZXJlbmRlciIp
KTsKIAogICAgIHN3aXRjaCAoc3RhdGUpIHsKICAgICBjYXNlIFBhZ2VWaXNpYmlsaXR5U3RhdGVW
aXNpYmxlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRleCBlMzk4MTRi
Li4zYmQzMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIk9yaWdpbkFjY2Vzc0VudHJ5LmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00NSw3ICs0Niw3IEBAIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6
dW5pcXVlX3B0cjxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+PiBPcmlnaW5BY2Nlc3NNYXA7CiAKIHN0
YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKE9yaWdpbkFjY2Vzc01hcCwgb3JpZ2luQWNjZXNzTWFwLCAo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9yaWdpbkFjY2Vzc01hcD4gb3JpZ2luQWNj
ZXNzTWFwOwogICAgIHJldHVybiBvcmlnaW5BY2Nlc3NNYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCAyZWExOGVjLi42NTY5Y2Rj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAKICNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYyLDcgKzYz
LDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhjb25zdCBV
UkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4KIAogYm9vbCBVc2VyQ29udGVudFVSTFBhdHRl
cm46OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzY2hlbWVTZXBhcmF0b3IsIChBU0NJSUxpdGVy
YWwoIjovLyIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2No
ZW1lU2VwYXJhdG9yKEFTQ0lJTGl0ZXJhbCgiOi8vIikpOwogCiAgICAgc2l6ZV90IHNjaGVtZUVu
ZFBvcyA9IHBhdHRlcm4uZmluZChzY2hlbWVTZXBhcmF0b3IpOwogICAgIGlmIChzY2hlbWVFbmRQ
b3MgPT0gbm90Rm91bmQpCkBAIC03MCw3ICs3MSw3IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0
ZXJuOjpwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiAKICAgICBtX3NjaGVtZSA9IHBhdHRl
cm4ubGVmdChzY2hlbWVFbmRQb3MpOwogCi0gICAgdW5zaWduZWQgaG9zdFN0YXJ0UG9zID0gc2No
ZW1lRW5kUG9zICsgc2NoZW1lU2VwYXJhdG9yLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIGhvc3RT
dGFydFBvcyA9IHNjaGVtZUVuZFBvcyArIHNjaGVtZVNlcGFyYXRvci5nZXQoKS5sZW5ndGgoKTsK
ICAgICBpZiAoaG9zdFN0YXJ0UG9zID49IHBhdHRlcm4ubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDc4N2YwYTAuLjQ3NDUxYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5j
cHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bv
aW50ZXJDb21wYXJpc29uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTY0NSwx
OSArNjQ2LDE4IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IHNoYWRvd0xpc3RMZW5ndGgoY29uc3Qg
U2hhZG93RGF0YSogc2hhZG93KQogCiBzdGF0aWMgaW5saW5lIGNvbnN0IFNoYWRvd0RhdGEqIHNo
YWRvd0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdywgY29uc3QgU2hhZG93
RGF0YSogb3RoZXJTaGFkb3cpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFNoYWRvd0RhdGEsIGRlZmF1bHRTaGFkb3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFs
LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFNoYWRvd0RhdGEsIGRlZmF1bHRJbnNldFNoYWRvd0RhdGEsIChJbnRQb2ludCgp
LCAwLCAwLCBJbnNldCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudCkpOwotCi0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFNoYWRvd0RhdGEsIGRlZmF1bHRXZWJLaXRCb3hTaGFk
b3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFsLCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJl
bnQpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU2hhZG93RGF0YSwgZGVm
YXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YSwgKEludFBvaW50KCksIDAsIDAsIEluc2V0LCB0
cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hh
ZG93RGF0YT4gZGVmYXVsdFNoYWRvd0RhdGEoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFsLCBmYWxz
ZSwgQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93
RGF0YT4gZGVmYXVsdEluc2V0U2hhZG93RGF0YShJbnRQb2ludCgpLCAwLCAwLCBJbnNldCwgZmFs
c2UsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRv
d0RhdGE+IGRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhKEludFBvaW50KCksIDAsIDAsIE5vcm1h
bCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YShJbnRQb2ludCgpLCAw
LCAwLCBJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50KTsKIAogICAgIGlmIChzcmNTaGFk
b3cpCiAgICAgICAgIHJldHVybiBzcmNTaGFkb3c7CiAKICAgICBpZiAob3RoZXJTaGFkb3ctPnN0
eWxlKCkgPT0gSW5zZXQpCi0gICAgICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hT
aGFkb3coKSA/ICZkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhIDogJmRlZmF1bHRJbnNl
dFNoYWRvd0RhdGE7CisgICAgICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFk
b3coKSA/ICZkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRJ
bnNldFNoYWRvd0RhdGEuZ2V0KCk7CiAKLSAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0
Qm94U2hhZG93KCkgPyAmZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEgOiAmZGVmYXVsdFNoYWRv
d0RhdGE7CisgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gJmRl
ZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRTaGFkb3dEYXRhLmdldCgp
OwogfQogCiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJTaGFkb3cgOiBwdWJsaWMgQW5pbWF0aW9uUHJv
cGVydHlXcmFwcGVyQmFzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAppbmRleCBiODIyMjU2Li42NTUxZDY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0yMjEsNyArMjIyLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246
OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgUmVuZGUK
ICAgICAgICAgLy8gVG9zcyB0aGUgYW5pbWF0aW9uIG9yZGVyIG1hcC4KICAgICAgICAgbV9rZXlm
cmFtZUFuaW1hdGlvbk9yZGVyTWFwLmNsZWFyKCk7CiAKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbm9uZSwgKCJub25lIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBub25lKCJub25lIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIAogICAgICAgICAvLyBOb3cgbWFyayBhbnkgc3Rp
bGwgYWN0aXZlIGFuaW1hdGlvbnMgYXMgYWN0aXZlIGFuZCBhZGQgYW55IG5ldyBhbmltYXRpb25z
LgogICAgICAgICBpZiAodGFyZ2V0U3R5bGUtPmFuaW1hdGlvbnMoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cnNvci5jcHAKaW5kZXggOTM1OTNhZC4uNjBhNjE5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DdXJzb3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODksMjU5
ICsxOTAsMjU5IEBAIFBsYXRmb3JtQ3Vyc29yIEN1cnNvcjo6cGxhdGZvcm1DdXJzb3IoKSBjb25z
dAogCiBjb25zdCBDdXJzb3ImIHBvaW50ZXJDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlBvaW50ZXIpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6UG9pbnRlcik7CiAgICAgcmV0dXJu
IGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY3Jvc3NDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkNyb3NzKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkNyb3NzKTsKICAgICByZXR1cm4g
YzsKIH0KIAogY29uc3QgQ3Vyc29yJiBoYW5kQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpIYW5kKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkhhbmQpOwogICAgIHJldHVybiBjOwog
fQogCiBjb25zdCBDdXJzb3ImIG1vdmVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok1vdmUpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6TW92ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAK
IGNvbnN0IEN1cnNvciYgdmVydGljYWxUZXh0Q3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpWZXJ0aWNhbFRleHQpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6VmVydGljYWxUZXh0KTsK
ICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBjZWxsQ3Vyc29yKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpDZWxsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkNlbGwpOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNvbnRleHRNZW51Q3Vyc29yKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpDb250
ZXh0TWVudSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpD
b250ZXh0TWVudSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgYWxpYXNDdXJz
b3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChD
dXJzb3I6OkFsaWFzKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OkFsaWFzKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiB6b29tSW5DdXJz
b3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChD
dXJzb3I6Olpvb21JbikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vy
c29yOjpab29tSW4pOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHpvb21PdXRD
dXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMs
IChDdXJzb3I6Olpvb21PdXQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBj
KEN1cnNvcjo6Wm9vbU91dCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY29w
eUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwg
YywgKEN1cnNvcjo6Q29weSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMo
Q3Vyc29yOjpDb3B5KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub25lQ3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpOb25lKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6Ok5vbmUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHByb2dyZXNzQ3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpQcm9ncmVzcykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMo
Q3Vyc29yOjpQcm9ncmVzcyk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9E
cm9wQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29y
LCBjLCAoQ3Vyc29yOjpOb0Ryb3ApKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29y
PiBjKEN1cnNvcjo6Tm9Ecm9wKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBu
b3RBbGxvd2VkQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Q3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3RBbGxvd2VkKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vdEFsbG93ZWQpOwogICAgIHJldHVybiBjOwogfQogCiBj
b25zdCBDdXJzb3ImIGlCZWFtQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpJQmVhbSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpJQmVhbSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNv
bnN0IEN1cnNvciYgd2FpdEN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6V2FpdCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpXYWl0KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3Qg
Q3Vyc29yJiBoZWxwQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpIZWxwKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEN1cnNvcj4gYyhDdXJzb3I6OkhlbHApOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJz
b3ImIGVhc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkVhc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6RWFzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9
CiAKIGNvbnN0IEN1cnNvciYgbm9ydGhSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoUmVzaXplKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vcnRoUmVzaXplKTsK
ICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3J0aEVhc3RSZXNpemVDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6Ok5vcnRoRWFzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+
IGMoQ3Vyc29yOjpOb3J0aEVhc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIG5vcnRoV2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhXZXN0UmVzaXplKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vcnRoV2VzdFJlc2l6ZSk7
CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgc291dGhSZXNpemVDdXJzb3IoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6
OlNvdXRoUmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OlNvdXRoUmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBzb3V0
aEVhc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChDdXJzb3IsIGMsIChDdXJzb3I6OlNvdXRoRWFzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpTb3V0aEVhc3RSZXNpemUpOwogICAgIHJldHVy
biBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6U291dGhX
ZXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6
OlNvdXRoV2VzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgd2Vz
dFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6V2VzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDdXJzb3I+IGMoQ3Vyc29yOjpXZXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiBub3J0aFNvdXRoUmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aFNvdXRoUmVzaXplKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vcnRoU291dGhS
ZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGVhc3RXZXN0UmVzaXpl
Q3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBj
LCAoQ3Vyc29yOjpFYXN0V2VzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxD
dXJzb3I+IGMoQ3Vyc29yOjpFYXN0V2VzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNv
bnN0IEN1cnNvciYgbm9ydGhFYXN0U291dGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aEVhc3RT
b3V0aFdlc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1
cnNvcjo6Tm9ydGhFYXN0U291dGhXZXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiBub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoV2VzdFNv
dXRoRWFzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vy
c29yOjpOb3J0aFdlc3RTb3V0aEVhc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25z
dCBDdXJzb3ImIGNvbHVtblJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Q29sdW1uUmVzaXplKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkNvbHVtblJlc2l6ZSk7CiAgICAg
cmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgcm93UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpSb3dSZXNp
emUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Um93UmVz
aXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBtaWRkbGVQYW5uaW5nQ3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpNaWRkbGVQYW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNv
cj4gYyhDdXJzb3I6Ok1pZGRsZVBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAogY29u
c3QgQ3Vyc29yJiBlYXN0UGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6RWFzdFBhbm5pbmcpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6RWFzdFBhbm5pbmcpOwogICAgIHJl
dHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBub3J0aFBhbm5pbmdDdXJzb3IoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5v
cnRoUGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29y
OjpOb3J0aFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBu
b3J0aEVhc3RQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aEVhc3RQYW5uaW5nKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vcnRoRWFzdFBhbm5pbmcpOwogICAg
IHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBub3J0aFdlc3RQYW5uaW5nQ3Vyc29y
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vy
c29yOjpOb3J0aFdlc3RQYW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNv
cj4gYyhDdXJzb3I6Ok5vcnRoV2VzdFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAog
Y29uc3QgQ3Vyc29yJiBzb3V0aFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlNvdXRoUGFubmluZykpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpTb3V0aFBhbm5pbmcpOwog
ICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBzb3V0aEVhc3RQYW5uaW5nQ3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpTb3V0aEVhc3RQYW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1
cnNvcj4gYyhDdXJzb3I6OlNvdXRoRWFzdFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAg
IAogY29uc3QgQ3Vyc29yJiBzb3V0aFdlc3RQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpTb3V0aFdlc3RQYW5u
aW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRo
V2VzdFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiB3ZXN0
UGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6V2VzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6V2VzdFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogCiBj
b25zdCBDdXJzb3ImIGdyYWJDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkdyYWIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6R3JhYik7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0
IEN1cnNvciYgZ3JhYmJpbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkdyYWJiaW5nKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkdyYWJiaW5nKTsKICAgICByZXR1cm4gYzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCmluZGV4IDU4OTE3ZmYuLjY1NTc4ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgU3Ry
aW5nIGRlZmF1bHRMYW5ndWFnZSgpCiAKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVk
TGFuZ3VhZ2VzT3ZlcnJpZGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChWZWN0b3I8U3RyaW5nPiwgb3ZlcnJpZGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VmVjdG9yPFN0cmluZz4+IG92ZXJyaWRlOwogICAgIHJldHVybiBvdmVycmlkZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCA5M2Qy
ZTkwLi43OTUxZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6
ZWRTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L0NoYXJhY3Rlck5hbWVzLmg+CiAKICNpZiBVU0UoQ0YpCkBAIC03OSwxMSArODAsMTEgQEAgc3Rh
dGljIFN0cmluZyB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbShjb25zdCBTdHJpbmcm
IG9yaWdpbmFsKQogCiAgICAgLy8gVHJ1bmNhdGUgdGhlIHN0cmluZyBpZiBpdCdzIHRvbyBsb25n
LiBUaGlzIGlzIGluIGNvbnNpc3RlbmN5IHdpdGggQXBwS2l0LgogICAgIHVuc2lnbmVkIG1heE51
bWJlck9mR3JhcGhlbWVDbHVzdGVyc0luTG9va3VwTWVudUl0ZW0gPSAyNDsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBlbGxpcHNpcywgKCZob3Jpem9udGFsRWxs
aXBzaXMsIDEpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbGxpcHNpcygm
aG9yaXpvbnRhbEVsbGlwc2lzLCAxKTsKIAogICAgIFN0cmluZyB0cmltbWVkID0gb3JpZ2luYWwu
c3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFyYWN0ZXJzID0gbnVt
Q2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyh0cmltbWVkLCBtYXhOdW1iZXJPZkdyYXBoZW1l
Q2x1c3RlcnNJbkxvb2t1cE1lbnVJdGVtKTsKLSAgICByZXR1cm4gbnVtYmVyT2ZDaGFyYWN0ZXJz
ID09IHRyaW1tZWQubGVuZ3RoKCkgPyB0cmltbWVkIDogdHJpbW1lZC5sZWZ0KG51bWJlck9mQ2hh
cmFjdGVycykgKyBlbGxpcHNpczsKKyAgICByZXR1cm4gbnVtYmVyT2ZDaGFyYWN0ZXJzID09IHRy
aW1tZWQubGVuZ3RoKCkgPyB0cmltbWVkIDogdHJpbW1lZC5sZWZ0KG51bWJlck9mQ2hhcmFjdGVy
cykgKyBlbGxpcHNpcy5nZXQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDEyN2NjNWEuLjYyMGYxYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIApAQCAtMzUyLDE2ICszNTMsMTYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCkKIAogc3RhdGljIE1lZGlhTUlNRVR5cGVNYXAm
IG1lZGlhTUlNRVR5cGVNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChNZWRpYU1JTUVUeXBlTWFwLCBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1lZGlhTUlNRVR5cGVNYXA+IG1lZGlhTUlNRVR5cGVG
b3JFeHRlbnNpb25NYXA7CiAKLSAgICBpZiAoIW1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAu
aXNFbXB0eSgpKQorICAgIGlmICghbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5nZXQoKS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwOwog
CiAgICAgY29uc3QgdW5zaWduZWQgbnVtUGFpcnMgPSBzaXplb2YoY29tbW9uTWVkaWFUeXBlcykg
LyBzaXplb2YoY29tbW9uTWVkaWFUeXBlc1swXSk7CiAgICAgZm9yICh1bnNpZ25lZCBuZHggPSAw
OyBuZHggPCBudW1QYWlyczsgKytuZHgpIHsKIAotICAgICAgICBpZiAobWVkaWFNSU1FVHlwZUZv
ckV4dGVuc2lvbk1hcC5jb250YWlucyhjb21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uKSkK
LSAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuZ2V0KGNvbW1vbk1lZGlh
VHlwZXNbbmR4XS5leHRlbnNpb24pLT5hcHBlbmQoY29tbW9uTWVkaWFUeXBlc1tuZHhdLnR5cGUp
OworICAgICAgICBpZiAobWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5nZXQoKS5jb250YWlu
cyhjb21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uKSkKKyAgICAgICAgICAgIG1lZGlhTUlN
RVR5cGVGb3JFeHRlbnNpb25NYXAuZ2V0KCkuZ2V0KGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRl
bnNpb24pLT5hcHBlbmQoY29tbW9uTWVkaWFUeXBlc1tuZHhdLnR5cGUpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+KiBzeW5vbnltcyA9IG5ldyBWZWN0b3I8U3Ry
aW5nPjsKIApAQCAtMzcxLDcgKzM3Miw3IEBAIHN0YXRpYyBNZWRpYU1JTUVUeXBlTWFwJiBtZWRp
YU1JTUVUeXBlTWFwKCkKICAgICAgICAgICAgIGlmICghc3lzdGVtVHlwZS5pc0VtcHR5KCkgJiYg
Y29tbW9uTWVkaWFUeXBlc1tuZHhdLnR5cGUgIT0gc3lzdGVtVHlwZSkKICAgICAgICAgICAgICAg
ICBzeW5vbnltcy0+YXBwZW5kKHN5c3RlbVR5cGUpOwogICAgICAgICAgICAgc3lub255bXMtPmFw
cGVuZChjb21tb25NZWRpYVR5cGVzW25keF0udHlwZSk7Ci0gICAgICAgICAgICBtZWRpYU1JTUVU
eXBlRm9yRXh0ZW5zaW9uTWFwLmFkZChjb21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uLCBz
eW5vbnltcyk7CisgICAgICAgICAgICBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldCgp
LmFkZChjb21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uLCBzeW5vbnltcyk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTY0Miw3ICs2NDMsNyBAQCBIYXNoU2V0PFN0cmluZz4mIE1JTUVUeXBl
UmVnaXN0cnk6OmdldFVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpCiAKIGNvbnN0IFN0cmluZyYg
ZGVmYXVsdE1JTUVUeXBlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCBkZWZhdWx0TUlNRVR5cGUsIChBU0NJSUxpdGVyYWwoImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmlu
Zz4gZGVmYXVsdE1JTUVUeXBlKEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
IikpOwogICAgIHJldHVybiBkZWZhdWx0TUlNRVR5cGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAppbmRleCBhOGIwYTExLi5iNjQ2NTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0zNiwxMiArMzYsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgbG9jYWxVUkxT
Y2hlbWVzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1l
c01hcCwgbG9jYWxTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNj
aGVtZXNNYXA+IGxvY2FsU2NoZW1lczsKIAotICAgIGlmIChsb2NhbFNjaGVtZXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoImZpbGUiKTsKKyAgICBpZiAobG9jYWxTY2hl
bWVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBsb2NhbFNjaGVtZXMuZ2V0KCkuYWRkKCJm
aWxlIik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoImFw
cGxld2ViZGF0YSIpOworICAgICAgICBsb2NhbFNjaGVtZXMuZ2V0KCkuYWRkKCJhcHBsZXdlYmRh
dGEiKTsKICNlbmRpZgogICAgIH0KIApAQCAtNTAsMjEgKzUwLDIxIEBAIHN0YXRpYyBVUkxTY2hl
bWVzTWFwJiBsb2NhbFVSTFNjaGVtZXMoKQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgZGlzcGxh
eUlzb2xhdGVkVVJMU2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFVSTFNjaGVtZXNNYXAsIGRpc3BsYXlJc29sYXRlZFNjaGVtZXMsICgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gZGlzcGxheUlzb2xhdGVkU2NoZW1lczsK
ICAgICByZXR1cm4gZGlzcGxheUlzb2xhdGVkU2NoZW1lczsKIH0KIAogc3RhdGljIFVSTFNjaGVt
ZXNNYXAmIHNlY3VyZVNjaGVtZXMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChVUkxTY2hlbWVzTWFwLCBzZWN1cmVTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNlY3VyZVNjaGVtZXM7CiAKLSAgICBpZiAoc2VjdXJl
U2NoZW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2VjdXJlU2NoZW1lcy5hZGQoImh0dHBzIik7
Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuYWRkKCJhYm91dCIpOwotICAgICAgICBzZWN1cmVTY2hl
bWVzLmFkZCgiZGF0YSIpOwotICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZCgid3NzIik7CisgICAg
aWYgKHNlY3VyZVNjaGVtZXMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNlY3VyZVNjaGVt
ZXMuZ2V0KCkuYWRkKCJodHRwcyIpOworICAgICAgICBzZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgi
YWJvdXQiKTsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoImRhdGEiKTsKKyAgICAg
ICAgc2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoIndzcyIpOwogI2lmIFVTRShRVUlDS19MT09LKQot
ICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZChRTFByZXZpZXdQcm90b2NvbCgpKTsKKyAgICAgICAg
c2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoUUxQcmV2aWV3UHJvdG9jb2woKSk7CiAjZW5kaWYKICAg
ICB9CiAKQEAgLTczLDE0ICs3MywxNCBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2No
ZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBz
Y2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VVJMU2NoZW1lc01hcD4gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zOwogCi0gICAgaWYgKHNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2NoZW1lc1dpdGhVbmlx
dWVPcmlnaW5zLmFkZCgiYWJvdXQiKTsKLSAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
LmFkZCgiamF2YXNjcmlwdCIpOworICAgIGlmIChzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuZ2V0
KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5h
ZGQoImFib3V0Iik7CisgICAgICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5hZGQo
ImphdmFzY3JpcHQiKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIHdpbGxmdWwgdmlvbGF0aW9uIG9m
IEhUTUw1LgogICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExODg1Ci0gICAgICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5hZGQoImRhdGEi
KTsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgiZGF0YSIpOwog
ICAgIH0KIAogICAgIHJldHVybiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnM7CkBAIC04OCwyNiAr
ODgsMjYgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygp
CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBlbXB0eURvY3VtZW50U2NoZW1lcygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIGVtcHR5RG9jdW1l
bnRTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+
IGVtcHR5RG9jdW1lbnRTY2hlbWVzOwogCi0gICAgaWYgKGVtcHR5RG9jdW1lbnRTY2hlbWVzLmlz
RW1wdHkoKSkKLSAgICAgICAgZW1wdHlEb2N1bWVudFNjaGVtZXMuYWRkKCJhYm91dCIpOworICAg
IGlmIChlbXB0eURvY3VtZW50U2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpCisgICAgICAgIGVtcHR5
RG9jdW1lbnRTY2hlbWVzLmdldCgpLmFkZCgiYWJvdXQiKTsKIAogICAgIHJldHVybiBlbXB0eURv
Y3VtZW50U2NoZW1lczsKIH0KIAogc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgc2NoZW1lc0ZvcmJp
ZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBzY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gc2NoZW1lczsKICAgICByZXR1cm4gc2NoZW1lczsK
IH0KIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2No
ZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNN
YXAsIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcywgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNj
aGVtZXM7CiAKLSAgICBpZiAoY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLmlzRW1w
dHkoKSkgewotICAgICAgICBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMuYWRkKCJi
bG9iIik7CisgICAgaWYgKGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcy5nZXQoKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLmdl
dCgpLmFkZCgiYmxvYiIpOwogICAgIH0KIAogICAgIHJldHVybiBjYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdFNjaGVtZXM7CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAm
IGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVz
TWFwJiBub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIG5vdEFsbG93aW5nSmF2YXNjcmlw
dFVSTHNTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNN
YXA+IG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzOwogICAgIHJldHVybiBub3RBbGxv
d2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lczsKIH0KIApAQCAtMTQyLDI0ICsxNDIsMjQgQEAgY29u
c3QgVVJMU2NoZW1lc01hcCYgU2NoZW1lUmVnaXN0cnk6OmxvY2FsU2NoZW1lcygpCiAKIHN0YXRp
YyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZh
dGVCcm93c2luZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNj
aGVtZXNNYXAsIHNjaGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dz
aW5nLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVt
ZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOwogICAgIHJldHVy
biBzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsKIH0K
IAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Q
cml2YXRlQnJvd3NpbmcoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChV
UkxTY2hlbWVzTWFwLCBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dz
aW5nLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVt
ZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiAgICAgcmV0dXJuIHNj
aGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiB9CiAKIHN0YXRp
YyBVUkxTY2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMoKQogewogICAgIC8vIEZJWE1FOiBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE2MAotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBDT1JTRW5hYmxlZFNjaGVtZXMs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gQ09SU0VuYWJs
ZWRTY2hlbWVzOwogCi0gICAgaWYgKENPUlNFbmFibGVkU2NoZW1lcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmFkZCgiaHR0cCIpOwotICAgICAgICBDT1JTRW5hYmxl
ZFNjaGVtZXMuYWRkKCJodHRwcyIpOworICAgIGlmIChDT1JTRW5hYmxlZFNjaGVtZXMuZ2V0KCku
aXNFbXB0eSgpKSB7CisgICAgICAgIENPUlNFbmFibGVkU2NoZW1lcy5nZXQoKS5hZGQoImh0dHAi
KTsKKyAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmdldCgpLmFkZCgiaHR0cHMiKTsKICAgICB9
CiAKICAgICByZXR1cm4gQ09SU0VuYWJsZWRTY2hlbWVzOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0
YXRpYyBVUkxTY2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMoKQogCiBzdGF0aWMgVVJMU2No
ZW1lc01hcCYgQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1lcygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIHNjaGVtZXMsICgp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lczsKICAg
ICByZXR1cm4gc2NoZW1lczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuY3BwCmluZGV4IGQ3MzdlMmQuLjQzOGYzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTI4LDEzICsyOCwxNCBAQAogCiAjaW5jbHVkZSAi
U2Nyb2xsYmFyVGhlbWVNb2NrLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3JvbGxiYXJU
aGVtZSYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkKIHsKICAgICBpZiAoU2V0dGluZ3M6Om1vY2tT
Y3JvbGxiYXJzRW5hYmxlZCgpKSB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChTY3JvbGxiYXJUaGVtZU1vY2ssIG1vY2tUaGVtZSwgKCkpOworICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U2Nyb2xsYmFyVGhlbWVNb2NrPiBtb2NrVGhlbWU7CiAgICAgICAgIHJl
dHVybiBtb2NrVGhlbWU7CiAgICAgfQogICAgIHJldHVybiBuYXRpdmVUaGVtZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5jcHAKaW5kZXggNGQxYzc3YS4uODg5Yjc0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkwuY3BwCkBAIC0xOTgxLDcgKzE5ODEsNyBAQCBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHko
Y29uc3QgU3RyaW5nJiB1cmwpCiAKIGNvbnN0IFVSTCYgYmxhbmtVUkwoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkwsIHN0YXRpY0JsYW5rVVJMLCAoUGFyc2VkVVJM
U3RyaW5nLCAiYWJvdXQ6YmxhbmsiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4g
c3RhdGljQmxhbmtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6YmxhbmsiKTsKICAgICByZXR1
cm4gc3RhdGljQmxhbmtVUkw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvbi5jcHAKaW5kZXggZDY3NzBhNC4uMTIwNjE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKQEAgLTIyLDYgKzIy
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBbmltYXRpb24uaCIKIAorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFu
aW1hdGlvbjo6QW5pbWF0aW9uKCkKQEAgLTE2MCw3ICsxNjIsNyBAQCBib29sIEFuaW1hdGlvbjo6
YW5pbWF0aW9uc01hdGNoKGNvbnN0IEFuaW1hdGlvbiYgb3RoZXIsIGJvb2wgbWF0Y2hQbGF5U3Rh
dGVzKSBjbwogCiBjb25zdCBTdHJpbmcmIEFuaW1hdGlvbjo6aW5pdGlhbE5hbWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGluaXRpYWxWYWx1ZSwgKEFT
Q0lJTGl0ZXJhbCgibm9uZSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
aW5pdGlhbFZhbHVlKEFTQ0lJTGl0ZXJhbCgibm9uZSIpKTsKICAgICByZXR1cm4gaW5pdGlhbFZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmNwcAppbmRleCBhZTk1NTAyLi4zYzJkYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTI5LDEyICsyOSwxMyBAQAogI2lmIFVTRShB
VURJT19TRVNTSU9OKQogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBdWRpb1Nlc3Np
b24mIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF1ZGlvU2Vzc2lvbiwgc2Vzc2lvbiwgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdWRpb1Nlc3Npb24+IHNlc3Npb247CiAgICAgcmV0dXJuIHNlc3Npb247
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKaW5k
ZXggZDFmNTI0Ni4uMGJiNGU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02
Nyw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6
ZV90KTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8QXVkaW9T
ZXNzaW9uPjsKICAgICBBdWRpb1Nlc3Npb24oKTsKICAgICB+QXVkaW9TZXNzaW9uKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKaW5kZXgg
YWY5OTJmYi4uZWEzM2VmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURkVsZXZhdGlvbi5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJIUlRGUGFubmVy
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02OCwxOCAr
NjksMTggQEAgY29uc3QgZmxvYXQgUmVzcG9uc2VTYW1wbGVSYXRlID0gNDQxMDA7CiBzdGF0aWMg
QXVkaW9CdXMqIGdldENvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXNGb3JTdWJqZWN0KGNvbnN0
IFN0cmluZyYgc3ViamVjdE5hbWUpCiB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQXVk
aW9CdXMqPiBBdWRpb0J1c01hcDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXVkaW9CdXNNYXAsIGF1ZGlvQnVzTWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF1ZGlvQnVzTWFwPiBhdWRpb0J1c01hcDsKIAogICAgIEF1ZGlvQnVzKiBidXM7Ci0gICAgQXVk
aW9CdXNNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9yID0gYXVkaW9CdXNNYXAuZmluZChzdWJqZWN0TmFt
ZSk7Ci0gICAgaWYgKGl0ZXJhdG9yID09IGF1ZGlvQnVzTWFwLmVuZCgpKSB7CisgICAgQXVkaW9C
dXNNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9yID0gYXVkaW9CdXNNYXAuZ2V0KCkuZmluZChzdWJqZWN0
TmFtZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IGF1ZGlvQnVzTWFwLmdldCgpLmVuZCgpKSB7CiAg
ICAgICAgIFJlZlB0cjxBdWRpb0J1cz4gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcyA9IEF1
ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShzdWJqZWN0TmFtZS51dGY4KCkuZGF0YSgpLCBS
ZXNwb25zZVNhbXBsZVJhdGUpOwogICAgICAgICBBU1NFUlQoY29uY2F0ZW5hdGVkSW1wdWxzZVJl
c3BvbnNlcyk7CiAgICAgICAgIGlmICghY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcykKICAg
ICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGJ1cyA9IGNvbmNhdGVuYXRlZEltcHVsc2VS
ZXNwb25zZXMucmVsZWFzZSgpLmxlYWtSZWYoKTsKLSAgICAgICAgYXVkaW9CdXNNYXAuc2V0KHN1
YmplY3ROYW1lLCBidXMpOworICAgICAgICBhdWRpb0J1c01hcC5nZXQoKS5zZXQoc3ViamVjdE5h
bWUsIGJ1cyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJ1cyA9IGl0ZXJhdG9yLT52YWx1ZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGlu
YXRpb25JT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVz
dGluYXRpb25JT1MuY3BwCmluZGV4IDlkOGQxZTEuLmFkZGI1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5j
cHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9TZXJ2aWNl
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCiBTT0ZUX0xJTksoQXVkaW9Ub29s
Ym94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1ZGlvQ29tcG9u
ZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uICppbkRlc2Mp
LCAoaW5Db21wb25lbnQsIGluRGVzYykpCkBAIC02Miw3ICs2Myw3IEBAIGNvbnN0IGludCBrUHJl
ZmVycmVkQnVmZmVyU2l6ZSA9IDI1NjsKIHR5cGVkZWYgSGFzaFNldDxBdWRpb0Rlc3RpbmF0aW9u
SU9TKj4gQXVkaW9EZXN0aW5hdGlvblNldDsKIHN0YXRpYyBBdWRpb0Rlc3RpbmF0aW9uU2V0JiBh
dWRpb0Rlc3RpbmF0aW9ucygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF1ZGlvRGVzdGluYXRpb25TZXQsIGF1ZGlvRGVzdGluYXRpb25TZXQsICgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXVkaW9EZXN0aW5hdGlvblNldD4gYXVkaW9EZXN0aW5hdGlvblNl
dDsKICAgICByZXR1cm4gYXVkaW9EZXN0aW5hdGlvblNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCBlM2VhODZh
Li5iN2JjYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJvdGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Nyw3ICs0OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBHcmFwaGljc0xheWVyKiwgVmVjdG9y
PEZsb2F0UmVjdD4+IFJlcGFpbnRNYXA7CiBzdGF0aWMgUmVwYWludE1hcCYgcmVwYWludFJlY3RN
YXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChSZXBhaW50TWFwLCBt
YXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVwYWludE1hcD4gbWFwOwogICAg
IHJldHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAppbmRleCA4MzVkZWEwLi4yYWNlNzNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODgsOCArODksOCBAQCBGbG9hdFNpemUg
SW1hZ2VCdWZmZXI6OnNpemVGb3JEZXN0aW5hdGlvblNpemUoRmxvYXRTaXplIHNpemUpIGNvbnN0
CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmND
b2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxpbnQ+LCBkZXZpY2VSZ2JMVVQsICgpKTsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPGludD4sIGxpbmVhclJnYkxVVCwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8aW50Pj4gZGV2aWNlUmdiTFVU
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8aW50Pj4gbGluZWFyUmdiTFVUOwog
CiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZHN0Q29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTAwLDI3ICsxMDEsMjcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JT
cGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2UgZHN0Q28KICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGRzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZUxpbmVhclJHQikg
ewotICAgICAgICBpZiAobGluZWFyUmdiTFVULmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobGlu
ZWFyUmdiTFVULmdldCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpICAv
IDI1NS4wZjsKICAgICAgICAgICAgICAgICBjb2xvciA9IChjb2xvciA8PSAwLjA0MDQ1ZiA/IGNv
bG9yIC8gMTIuOTJmIDogcG93KChjb2xvciArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpKTsKICAg
ICAgICAgICAgICAgICBjb2xvciA9IHN0ZDo6bWF4KDAuMGYsIGNvbG9yKTsKICAgICAgICAgICAg
ICAgICBjb2xvciA9IHN0ZDo6bWluKDEuMGYsIGNvbG9yKTsKLSAgICAgICAgICAgICAgICBsaW5l
YXJSZ2JMVVQuYXBwZW5kKHN0YXRpY19jYXN0PGludD4ocm91bmQoY29sb3IgKiAyNTUpKSk7Cisg
ICAgICAgICAgICAgICAgbGluZWFyUmdiTFVULmdldCgpLmFwcGVuZChzdGF0aWNfY2FzdDxpbnQ+
KHJvdW5kKGNvbG9yICogMjU1KSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShsaW5lYXJSZ2JMVVQpOworICAgICAgICBwbGF0
Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UobGluZWFyUmdiTFVULmdldCgpKTsKICAgICB9IGVsc2Ug
aWYgKGRzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZURldmljZVJHQikgewotICAgICAgICBpZiAo
ZGV2aWNlUmdiTFVULmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZGV2aWNlUmdiTFVULmdldCgp
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1Njsg
aSsrKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwogICAgICAg
ICAgICAgICAgIGNvbG9yID0gKHBvd2YoY29sb3IsIDEuMGYgLyAyLjRmKSAqIDEuMDU1ZikgLSAw
LjA1NWY7CiAgICAgICAgICAgICAgICAgY29sb3IgPSBzdGQ6Om1heCgwLjBmLCBjb2xvcik7CiAg
ICAgICAgICAgICAgICAgY29sb3IgPSBzdGQ6Om1pbigxLjBmLCBjb2xvcik7Ci0gICAgICAgICAg
ICAgICAgZGV2aWNlUmdiTFVULmFwcGVuZChzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKGNvbG9yICog
MjU1KSkpOworICAgICAgICAgICAgICAgIGRldmljZVJnYkxVVC5nZXQoKS5hcHBlbmQoc3RhdGlj
X2Nhc3Q8aW50Pihyb3VuZChjb2xvciAqIDI1NSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoZGV2aWNlUmdiTFVUKTsKKyAg
ICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGRldmljZVJnYkxVVC5nZXQoKSk7CiAg
ICAgfQogfQogI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAyMWQ4MGFlLi5mYmY5ZTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0y
MzUsMTkgKzIzNSwxOSBAQCBzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVu
Z2luZVBsYXllciBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwbwogCiBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhcHBsaWNhdGlvbk9jdGV0
U3RyZWFtLCAoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gYXBwbGlj
YXRpb25PY3RldFN0cmVhbTsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dFBs
YWluKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCB0ZXh0UGxhaW4sICgidGV4dC9wbGFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiB0ZXh0UGxhaW4oInRleHQvcGxhaW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gdGV4dFBsYWluOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBjb2RlY3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIGNvZGVjcywgKCJjb2RlY3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gY29kZWNzKCJjb2RlY3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gY29kZWNzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDdjMGMwNzAuLjg5OGQ2NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTE1NSw3ICsxNTYsNyBAQCBwcml2YXRlOgogCiBTY3JhdGNoQnVmZmVyJiBTY3JhdGNo
QnVmZmVyOjpzaW5nbGV0b24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTY3JhdGNoQnVmZmVyLCBzY3JhdGNoQnVmZmVyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFNjcmF0Y2hCdWZmZXI+IHNjcmF0Y2hCdWZmZXI7CiAgICAgcmV0dXJuIHNjcmF0Y2hC
dWZmZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDFmYWM3MDQuLjNkNmNlNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzkyLDcgKzM5Miw3IEBAIHN0YXRpYyBjb25z
dCBjaGFyICpib29sU3RyaW5nKGJvb2wgdmFsKQogdHlwZWRlZiBIYXNoTWFwPE1lZGlhUGxheWVy
KiwgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyo+IFBsYXllclRvUHJpdmF0ZU1h
cFR5cGU7CiBzdGF0aWMgUGxheWVyVG9Qcml2YXRlTWFwVHlwZSYgcGxheWVyVG9Qcml2YXRlTWFw
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUGxheWVyVG9Qcml2YXRl
TWFwVHlwZSwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBsYXllclRvUHJp
dmF0ZU1hcFR5cGU+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcAppbmRleCA3MjQ4OTNiLi42MTQwMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApAQCAtMjQsNiAr
MjQsNyBAQAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTM2LDcgKzM3LDcgQEAgUmVmPFNvdXJjZUFscGhhPiBTb3VyY2VBbHBo
YTo6Y3JlYXRlKEZpbHRlckVmZmVjdCYgc291cmNlRWZmZWN0KQogCiBjb25zdCBBdG9taWNTdHJp
bmcmIFNvdXJjZUFscGhhOjplZmZlY3ROYW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzX2VmZmVjdE5hbWUsICgiU291cmNlQWxw
aGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc19lZmZlY3ROYW1lKCJTb3VyY2VBbHBo
YSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2Vm
ZmVjdE5hbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCmluZGV4IDYxYmIxYjguLjIzMTNiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIkZpbHRl
ci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0u
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM1LDcgKzM2
LDcgQEAgUmVmPFNvdXJjZUdyYXBoaWM+IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZShGaWx0ZXImIGZp
bHRlcikKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBzX2VmZmVjdE5hbWUsICgiU291cmNlR3JhcGhpYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBzX2VmZmVjdE5hbWUoIlNvdXJjZUdyYXBoaWMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19lZmZlY3ROYW1lOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggMDgwYTkxMi4uMjEwMGUyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5oIgogI2ltcG9ydCA8UVRLaXQvUVRLaXQuaD4KICNpbXBvcnQgPG9iamMvcnVu
dGltZS5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIFNPRlRfTElOS19GUkFN
RVdPUksoUVRLaXQpCiAKQEAgLTEyNzEsNyArMTI3Miw3IEBAIHN0YXRpYyB2b2lkIGFkZEZpbGVU
eXBlc1RvQ2FjaGUoTlNBcnJheSAqIGZpbGVUeXBlcywgSGFzaFNldDxTdHJpbmc+ICZjYWNoZSkK
IAogc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBtaW1lQ29tbW9uVHlwZXNDYWNoZSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwgY2FjaGUsICgp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZTsKICAg
ICBzdGF0aWMgYm9vbCB0eXBlTGlzdEluaXRpYWxpemVkID0gZmFsc2U7CiAKICAgICBpZiAoIXR5
cGVMaXN0SW5pdGlhbGl6ZWQpIHsKQEAgLTEyODUsNyArMTI4Niw3IEBAIHN0YXRpYyBIYXNoU2V0
PFN0cmluZz4gbWltZUNvbW1vblR5cGVzQ2FjaGUoKQogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+
IG1pbWVNb2Rlcm5UeXBlc0NhY2hlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoSGFzaFNldDxTdHJpbmc+LCBjYWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlOwogICAgIHN0YXRpYyBib29sIHR5cGVMaXN0SW5p
dGlhbGl6ZWQgPSBmYWxzZTsKICAgICAKICAgICBpZiAoIXR5cGVMaXN0SW5pdGlhbGl6ZWQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHAKaW5kZXggZjk2YmZhZi4u
YzlmMGUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0N1cnNvcklP
Uy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHAKQEAg
LTI2LDExICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1cnNvci5o
IgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIGNvbnN0IEN1cnNvciYgY3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgQ3Vyc29yLCBjdXJzb3IsICgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQ3Vyc29yPiBjdXJzb3I7CiAgICAgcmV0dXJuIGN1cnNvcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9s
bGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGls
ZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcAppbmRleCBkZTdiNGUwLi41YzM2NjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1v
cnlIYW5kbGVySU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiVGlsZUNvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC03OSw3ICs4MCw3IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyOjp0cmlt
VW5wYXJlbnRlZFRpbGVzVG9UYXJnZXQoaW50IHRhcmdldCkKIAogVGlsZUNvbnRyb2xsZXJNZW1v
cnlIYW5kbGVyJiB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIsIHN0YXRp
Y1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXI+IHN0YXRpY1RpbGVDb250cm9sbGVyTWVt
b3J5SGFuZGxlcjsKICAgICByZXR1cm4gc3RhdGljVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRy
b2xsZXJNZW1vcnlIYW5kbGVySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGls
ZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmgKaW5kZXggZGEyZmVmODAuLjEzMjMzOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRy
b2xsZXJNZW1vcnlIYW5kbGVySU9TLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TX2gKIAogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTM1LDYgKzM2LDcgQEAgY2xhc3MgVGlsZUNvbnRyb2xsZXI7CiBjbGFzcyBUaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXIgewogcHVibGljOgogICAgIGZyaWVuZCBUaWxlQ29udHJvbGxl
ck1lbW9yeUhhbmRsZXImIHRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcigpOworICAgIGZyaWVu
ZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXI+OwogCiAg
ICAgdm9pZCByZW1vdmVUaWxlQ29udHJvbGxlcihUaWxlQ29udHJvbGxlciopOwogICAgIHZvaWQg
dGlsZUNvbnRyb2xsZXJHYWluZWRVbnBhcmVudGVkVGlsZXMoVGlsZUNvbnRyb2xsZXIqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5t
bQppbmRleCBiZTBkYzE1Li4xOGQ1NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1w
b3J0IDxDb3JlTG9jYXRpb24vQ29yZUxvY2F0aW9uLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtcnVu
dGltZS5oPgogI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIApAQCAtNjgsNyArNjksNyBAQCBzdGF0aWMgY29uc3QgZG91YmxlIGtHcmF2aXR5
ID0gOS44MDY2NTsKIAogKyAoV2ViQ29yZU1vdGlvbk1hbmFnZXIgKilzaGFyZWRNYW5hZ2VyCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxXZWJDb3JlTW90
aW9uTWFuYWdlcj4sIHNoYXJlZE1vdGlvbk1hbmFnZXIsIChbW1dlYkNvcmVNb3Rpb25NYW5hZ2Vy
IGFsbG9jXSBpbml0XSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V2Vi
Q29yZU1vdGlvbk1hbmFnZXI+PiBzaGFyZWRNb3Rpb25NYW5hZ2VyKFtbV2ViQ29yZU1vdGlvbk1h
bmFnZXIgYWxsb2NdIGluaXRdKTsKICAgICByZXR1cm4gc2hhcmVkTW90aW9uTWFuYWdlci5nZXQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDA5ZmI4Mjku
LmUzYWQzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTE1Niw4
ICsxNTYsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRh
dGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdAogICAgICAgICBTdHJpbmcgbG9jYWxp
emVkRGV2aWNlTmFtZTsKIAogICAgICAgICBpZiAobV92aWRlb0VsZW1lbnQtPm1lZGlhQ29udHJv
bHNIb3N0KCkpIHsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGFpcnBsYXksIChBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSkpOwotICAgICAgICAgICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdHZvdXQsIChBU0NJSUxpdGVy
YWwoInR2b3V0IikpKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IGFpcnBsYXkoQVNDSUlMaXRlcmFsKCJhaXJwbGF5IikpOworICAgICAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgU3RyaW5nIHR5cGUgPSBtX3ZpZGVvRWxlbWVudC0+bWVkaWFD
b250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCk7CiAgICAgICAgICAgICBpZiAodHlw
ZSA9PSBhaXJwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcAppbmRleCAwZmI4YWU5Li5kM2E2ZjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9i
c2VydmF0aW9uLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgSGFzaE1hcDx2b2lkICosIHZv
aWQgKj4gKiBXZWJUaHJlYWRHZXRPYnNlcnZlZENvbnRlbnRNb2RpZmllcnMoKQogewogICAgIEFT
U0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CiAgICAgdHlwZWRlZiBIYXNoTWFw
PHZvaWQgKiwgdm9pZCAqPiBWb2lkVm9pZE1hcDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoVm9pZFZvaWRNYXAsIG9ic2VydmVkQ29udGVudE1vZGlmaWVycywgKCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWb2lkVm9pZE1hcD4gb2JzZXJ2ZWRDb250ZW50TW9kaWZp
ZXJzOwogICAgIHJldHVybiAmb2JzZXJ2ZWRDb250ZW50TW9kaWZpZXJzOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCA0MTZkNWRkLi5mNmZj
Y2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KQEAg
LTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbXBvcnQgIlN0
cmluZ1RydW5jYXRvci5oIgogI2ltcG9ydCAiVGV4dFJ1bi5oIgorI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTYwLDcgKzE2MSw3IEBA
IGNvbnN0IGZsb2F0IERyYWdMaW5rVXJsRm9udFNpemUgPSAxMDsKIHN0YXRpYyBGb250Q2FzY2Fk
ZSYgZm9udEZyb21OU0ZvbnQoTlNGb250ICpmb250KQogewogICAgIHN0YXRpYyBOU0ZvbnQgKmN1
cnJlbnRGb250OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGb250Q2FzY2Fk
ZSwgY3VycmVudFJlbmRlcmVyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRD
YXNjYWRlPiBjdXJyZW50UmVuZGVyZXI7CiAgICAgCiAgICAgaWYgKFtmb250IGlzRXF1YWw6Y3Vy
cmVudEZvbnRdKQogICAgICAgICByZXR1cm4gY3VycmVudFJlbmRlcmVyOwpAQCAtMTY4LDcgKzE2
OSw3IEBAIHN0YXRpYyBGb250Q2FzY2FkZSYgZm9udEZyb21OU0ZvbnQoTlNGb250ICpmb250KQog
ICAgICAgICBDRlJlbGVhc2UoY3VycmVudEZvbnQpOwogICAgIGN1cnJlbnRGb250ID0gZm9udDsK
ICAgICBDRlJldGFpbihjdXJyZW50Rm9udCk7Ci0gICAgY3VycmVudFJlbmRlcmVyID0gRm9udENh
c2NhZGUoRm9udFBsYXRmb3JtRGF0YSh0b0NURm9udChmb250KSwgW2ZvbnQgcG9pbnRTaXplXSkp
OworICAgIGN1cnJlbnRSZW5kZXJlci5nZXQoKSA9IEZvbnRDYXNjYWRlKEZvbnRQbGF0Zm9ybURh
dGEodG9DVEZvbnQoZm9udCksIFtmb250IHBvaW50U2l6ZV0pKTsKICAgICByZXR1cm4gY3VycmVu
dFJlbmRlcmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5k
ZXggYThlNmExMS4uOGNkOTczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiU2Nyb2xsVmlldy5oIgogI2ltcG9ydCAi
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgorI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKIHN0YXRpYyBOU1JlY3QgZm9jdXNSaW5nQ2xpcFJlY3Q7CkBAIC0xMzIsOCArMTMzLDggQEAg
ZW51bSB7CiAKIFRoZW1lKiBwbGF0Zm9ybVRoZW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoVGhlbWVNYWMsIHRoZW1lTWFjLCAoKSk7Ci0gICAgcmV0dXJuICZ0aGVt
ZU1hYzsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGhlbWVNYWM+IHRoZW1lTWFjOworICAg
IHJldHVybiAmdGhlbWVNYWMuZ2V0KCk7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbnMgdXNlZCBi
eSBhIGJ1bmNoIG9mIGRpZmZlcmVudCBjb250cm9sIHBhcnRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCmluZGV4IDM2ODY0NTIuLmMyODRhZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW0KQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbXBvcnQgIlRocmVhZENoZWNrLmgiCiAKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1w
b3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTk4LDEyICs5OSwxMiBAQCB2
b2lkIFdlYkNvcmVSZXBvcnRUaHJlYWRWaW9sYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb24sIFdl
YkNvcmU6OlRocmVhZFZpb2xhdGlvbgogICAgIGlmIChyb3VuZCA+PSBNYXhpbXVtVGhyZWFkVmlv
bGF0aW9uUm91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4sIGxvZ2dlZEZ1bmN0aW9ucywgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGxvZ2dlZEZ1bmN0aW9uczsKICAg
ICBzd2l0Y2ggKHRocmVhZFZpb2xhdGlvbkJlaGF2aW9yW3JvdW5kXSkgewogICAgICAgICBjYXNl
IE5vVGhyZWFkQ2hlY2s6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMb2dPbkZp
cnN0VGhyZWFkVmlvbGF0aW9uOgotICAgICAgICAgICAgaWYgKGxvZ2dlZEZ1bmN0aW9ucy5hZGQo
ZnVuY3Rpb24pLmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgIGlmIChsb2dnZWRGdW5jdGlvbnMu
Z2V0KCkuYWRkKGZ1bmN0aW9uKS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgTlNMb2co
QCJXZWJLaXQgVGhyZWFkaW5nIFZpb2xhdGlvbiAtICVzIGNhbGxlZCBmcm9tIHNlY29uZGFyeSB0
aHJlYWQiLCBmdW5jdGlvbik7CiAgICAgICAgICAgICAgICAgTlNMb2coQCJBZGRpdGlvbmFsIHRo
cmVhZGluZyB2aW9sYXRpb25zIGZvciB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IGJlIGxvZ2dlZC4i
KTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IGI4
ZTQ0Y2IuLjc5NmMxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUzLDYgKzU0LDcgQEAgcHJpdmF0ZToKIH07CiAKIGNsYXNz
IEFWQ2FwdHVyZURldmljZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1hbmFn
ZXIgeworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyPjsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlSW5mbz4mIGNh
cHR1cmVEZXZpY2VMaXN0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0KaW5kZXggNTdkMjE2MC4uNzNjMzE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIubW0KQEAgLTIwOSw3ICsyMDksNyBAQCBib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OmlzQXZhaWxhYmxlKCkKIAogQVZDYXB0dXJlRGV2aWNlTWFuYWdlciYgQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2luZ2xldG9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQVZDYXB0dXJlRGV2aWNlTWFuYWdlciwgbWFuYWdlciwgKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyPiBtYW5hZ2VyOwogICAgIHJldHVybiBt
YW5hZ2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5j
cHAKaW5kZXggYjQ5ZDFmNi4uNjNjOGVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyJiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpw
bGF0Zm9ybUNlbnRlcigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYywg
Y2VudGVyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWM+IGNlbnRlcjsKICAgICByZXR1cm4gY2VudGVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcAppbmRl
eCBhZWMwNDVjLi4zMTAyODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
IDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9EYXRhVmlldy5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSW50OEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC03Niw3ICs3Nyw3IEBAIE1vY2tUcmFja0JveDo6TW9ja1RyYWNrQm94KEFy
cmF5QnVmZmVyKiBkYXRhKQogCiBjb25zdCBTdHJpbmcmIE1vY2tUcmFja0JveDo6dHlwZSgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdHJhaywgKEFTQ0lJ
TGl0ZXJhbCgidHJhayIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdHJh
ayhBU0NJSUxpdGVyYWwoInRyYWsiKSk7CiAgICAgcmV0dXJuIHRyYWs7CiB9CiAKQEAgLTEwNSw3
ICsxMDYsNyBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJbml0aWFsaXphdGlvbkJveChB
cnJheUJ1ZmZlciogZGF0YSkKIAogY29uc3QgU3RyaW5nJiBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6
OnR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGlu
aXQsIChBU0NJSUxpdGVyYWwoImluaXQiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGluaXQoQVNDSUlMaXRlcmFsKCJpbml0IikpOwogICAgIHJldHVybiBpbml0OwogfQog
CkBAIC0xMzMsNyArMTM0LDcgQEAgTW9ja1NhbXBsZUJveDo6TW9ja1NhbXBsZUJveChBcnJheUJ1
ZmZlciogZGF0YSkKIAogY29uc3QgU3RyaW5nJiBNb2NrU2FtcGxlQm94Ojp0eXBlKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzbXBsLCAoQVNDSUlMaXRl
cmFsKCJzbXBsIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzbXBsKEFT
Q0lJTGl0ZXJhbCgic21wbCIpKTsKICAgICByZXR1cm4gc21wbDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCA3N2E3MWUzLi41
ZDMwMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTM2NSwxNCArMzY2LDE0IEBAIHZvaWQgZmluZENoYXJzZXRJbk1lZGlhVHlwZShjb25zdCBTdHJp
bmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgaW50JiBjaGFyc2V0UG9zLCB1CiAKIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcGFyc2VYU1NQcm90ZWN0aW9uSGVh
ZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24sIHVuc2lnbmVk
JiBmYWlsdXJlUG9zaXRpb24sIFN0cmluZyYgcmVwb3J0VVJMKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkVG9nZ2xlLCAo
QVNDSUlMaXRlcmFsKCJleHBlY3RlZCAwIG9yIDEiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkU2VwYXJhdG9yLCAoQVND
SUlMaXRlcmFsKCJleHBlY3RlZCBzZW1pY29sb24iKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkRXF1YWxzLCAoQVNDSUlM
aXRlcmFsKCJleHBlY3RlZCBlcXVhbHMgc2lnbiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRNb2RlLCAoQVNDSUlMaXRl
cmFsKCJpbnZhbGlkIG1vZGUgZGlyZWN0aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZFJlcG9ydCwgKEFTQ0lJTGl0
ZXJhbCgiaW52YWxpZCByZXBvcnQgZGlyZWN0aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uRHVwbGljYXRlTW9kZSwgKEFTQ0lJ
TGl0ZXJhbCgiZHVwbGljYXRlIG1vZGUgZGlyZWN0aXZlIikpKTsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uRHVwbGljYXRlUmVwb3J0LCAo
QVNDSUlMaXRlcmFsKCJkdXBsaWNhdGUgcmVwb3J0IGRpcmVjdGl2ZSIpKSk7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWREaXJl
Y3RpdmUsIChBU0NJSUxpdGVyYWwoInVucmVjb2duaXplZCBkaXJlY3RpdmUiKSkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkVG9nZ2xlKEFT
Q0lJTGl0ZXJhbCgiZXhwZWN0ZWQgMCBvciAxIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkU2VwYXJhdG9yKEFTQ0lJTGl0ZXJhbCgiZXhw
ZWN0ZWQgc2VtaWNvbG9uIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZh
aWx1cmVSZWFzb25JbnZhbGlkRXF1YWxzKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgZXF1YWxzIHNp
Z24iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNvbklu
dmFsaWRNb2RlKEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBtb2RlIGRpcmVjdGl2ZSIpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZFJlcG9ydChB
U0NJSUxpdGVyYWwoImludmFsaWQgcmVwb3J0IGRpcmVjdGl2ZSIpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uRHVwbGljYXRlTW9kZShBU0NJSUxpdGVy
YWwoImR1cGxpY2F0ZSBtb2RlIGRpcmVjdGl2ZSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uRHVwbGljYXRlUmVwb3J0KEFTQ0lJTGl0ZXJhbCgiZHVw
bGljYXRlIHJlcG9ydCBkaXJlY3RpdmUiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gZmFpbHVyZVJlYXNvbkludmFsaWREaXJlY3RpdmUoQVNDSUlMaXRlcmFsKCJ1bnJlY29n
bml6ZWQgZGlyZWN0aXZlIikpOwogCiAgICAgdW5zaWduZWQgcG9zID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCA1
YTNkZDM4Li4wYTBhMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw3ICs0OSw3IEBAIHN0YXRpYyBCdWls
dGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3Rvck1hcCYgYnVpbHRpblJlc291cmNlSGFuZGxlQ29u
c3RydWN0b3JNYXAoCiAjZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAjZW5kaWYK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQnVpbHRpblJlc291cmNlSGFuZGxl
Q29uc3RydWN0b3JNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCdWls
dGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3Rvck1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9
CiAKQEAgLTYxLDcgKzYyLDcgQEAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVzb3Vy
Y2VIYW5kbGU6OkJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcj4gQnVpbHRpblIKIHN0YXRpYyBCdWls
dGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCYgYnVpbHRpblJlc291cmNlSGFu
ZGxlU3luY2hyb25vdXNMb2FkZXJNYXAoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEJ1aWx0aW5SZXNvdXJjZUhhbmRs
ZVN5bmNocm9ub3VzTG9hZGVyTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXA+IG1hcDsKICAgICBy
ZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCBlYzc1ZWRlLi45NGVkMDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTgzLDE0ICs4MywxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGFsbG93c0FueUhUVFBTQ2VydGlmaWNh
dGVIb3N0cygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8
U3RyaW5nPiwgaG9zdHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxT
dHJpbmc+PiBob3N0czsKICAgICByZXR1cm4gaG9zdHM7CiB9CiAKIHN0YXRpYyBIYXNoTWFwPFN0
cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4+JiBjbGllbnRDZXJ0cygpCiB7CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4+IENlcnRzTWFwOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDZXJ0c01hcCwgY2VydHMsICgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q2VydHNNYXA+IGNlcnRzOwogICAgIHJldHVybiBjZXJ0czsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJp
bmdLZXllZE1SVUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0
cmluZ0tleWVkTVJVQ2FjaGUuaAppbmRleCA5YTUzY2E2Li5kODkyZTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZ0tleWVkTVJVQ2Fj
aGUuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hl
X2gKICNkZWZpbmUgQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZV9oCiAKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgVCBnZXQo
Y29uc3QgQXRvbWljU3RyaW5nJiBrZXkpCiAgICAgewogICAgICAgICBpZiAoa2V5LmlzTnVsbCgp
KSB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVCwgdmFsdWVG
b3JOdWxsLCAoY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkpKTsKKyAgICAgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxUPiB2YWx1ZUZvck51bGwoY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTnVsbDsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAppbmRleCA0MGI4
YmU5Li42MGIyZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2Nm
L0h5cGhlbmF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2Yv
SHlwaGVuYXRpb25DRi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUmV0YWluUHRyPENGTG9jYWxlUmVm
PiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+OjpjcmVh
dGUKIAogc3RhdGljIEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxl
UmVmPj4mIGNmTG9jYWxlQ2FjaGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+LCBj
YWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmdLZXllZE1S
VUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDc0ZTA1
NzIuLmIyOGExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApA
QCAtMTY2MCw4ICsxNjYwLDggQEAgUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpibG9ja0VsZW1l
bnRDb250aW51YXRpb24oKSBjb25zdAogICAgIAogc3RhdGljIENvbnRpbnVhdGlvbk91dGxpbmVU
YWJsZU1hcCogY29udGludWF0aW9uT3V0bGluZVRhYmxlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ29udGludWF0aW9uT3V0bGluZVRhYmxlTWFwLCB0YWJsZSwgKCkp
OwotICAgIHJldHVybiAmdGFibGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnRpbnVh
dGlvbk91dGxpbmVUYWJsZU1hcD4gdGFibGU7CisgICAgcmV0dXJuICZ0YWJsZS5nZXQoKTsKIH0K
IAogdm9pZCBSZW5kZXJCbG9jazo6YWRkQ29udGludWF0aW9uV2l0aE91dGxpbmUoUmVuZGVySW5s
aW5lKiBmbG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmlu
ZGV4IGM3NDU2MzkuLjQwM2NhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291
bnRlck5vZGUoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmkKIAog
c3RhdGljIENvdW50ZXJNYXBzJiBjb3VudGVyTWFwcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKENvdW50ZXJNYXBzLCBzdGF0aWNDb3VudGVyTWFwcywgKCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb3VudGVyTWFwcz4gc3RhdGljQ291bnRlck1hcHM7CiAg
ICAgcmV0dXJuIHN0YXRpY0NvdW50ZXJNYXBzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IGQ5
M2IzZWQuLmFmY2RiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC05ODcsOCArOTg3LDggQEAgdm9p
ZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJdGVy
YXRvciYgaXRlcmF0b3IsIGJvb2wKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGNv
bnN0IFVDaGFyIGVsbGlwc2lzQW5kU3BhY2VbMl0gPSB7IGhvcml6b250YWxFbGxpcHNpcywgJyAn
IH07Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGVsbGlwc2lzQW5kU3BhY2VTdHIsIChlbGxpcHNpc0FuZFNwYWNlLCAyKSk7Ci0gICAgICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGVsbGlwc2lzU3RyLCAo
Jmhvcml6b250YWxFbGxpcHNpcywgMSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBlbGxpcHNpc0FuZFNwYWNlU3RyKGVsbGlwc2lzQW5kU3BhY2UsIDIpOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbGxpcHNpc1N0cigm
aG9yaXpvbnRhbEVsbGlwc2lzLCAxKTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVT
dHlsZSA9IG51bVZpc2libGVMaW5lcyA9PSAxID8gZmlyc3RMaW5lU3R5bGUoKSA6IHN0eWxlKCk7
CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gbGluZVN0eWxlLmZvbnRDYXNjYWRl
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDI1MWIw
ZWUuLmVhMzc5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtMzYzMywxMiArMzYzMywxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNp
emVySW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdQogICAgIFJlZlB0
cjxJbWFnZT4gcmVzaXplQ29ybmVySW1hZ2U7CiAgICAgRmxvYXRTaXplIGNvcm5lclJlc2l6ZXJT
aXplOwogICAgIGlmIChyZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSA+
PSAyKSB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChJbWFnZSosIHJl
c2l6ZUNvcm5lckltYWdlSGlSZXMsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRB
cmVhUmVzaXplQ29ybmVyQDJ4IikubGVha1JlZigpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IHJlc2l6ZUNvcm5lckltYWdlSGlSZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJlc2l6ZUNvcm5lckltYWdlID0gcmVzaXplQ29ybmVySW1hZ2VIaVJlczsKICAgICAgICAgY29y
bmVyUmVzaXplclNpemUgPSByZXNpemVDb3JuZXJJbWFnZS0+c2l6ZSgpOwogICAgICAgICBjb3Ju
ZXJSZXNpemVyU2l6ZS5zY2FsZSgwLjVmKTsKICAgICB9IGVsc2UgewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSW1hZ2UqLCByZXNpemVDb3JuZXJJbWFnZUxvUmVzLCAo
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lciIpLmxlYWtS
ZWYoKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3Ju
ZXJJbWFnZUxvUmVzKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVD
b3JuZXIiKS5sZWFrUmVmKCkpOwogICAgICAgICByZXNpemVDb3JuZXJJbWFnZSA9IHJlc2l6ZUNv
cm5lckltYWdlTG9SZXM7CiAgICAgICAgIGNvcm5lclJlc2l6ZXJTaXplID0gcmVzaXplQ29ybmVy
SW1hZ2UtPnNpemUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclRoZW1lLmNwcAppbmRleCA1NGZlYTBjLi4xNjkyZGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTI2
LDE0ICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9s
bGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNjcm9sbGJhclRoZW1lKiBSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhlbWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChSZW5kZXJTY3JvbGxiYXJUaGVtZSwgdGhlbWUsICgpKTsKLSAgICByZXR1cm4g
JnRoZW1lOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW5kZXJTY3JvbGxiYXJUaGVtZT4g
dGhlbWU7CisgICAgcmV0dXJuICZ0aGVtZS5nZXQoKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXImIHNjcm9sbGJhciwg
aW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCmluZGV4IGM2OGJjOGMuLjNhYjlhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtNjgsNyArNjgsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgQ29sb3ImIGN1c3RvbUZvY3VzUmluZ0NvbG9yKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGNvbG9yLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbG9yPiBjb2xvcjsKICAgICByZXR1cm4gY29sb3I7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggZTQ5
NDcxMy4uOTI0ZWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdW5zaWduZWQgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3Bl
bnNpb25TY29wZTo6c193aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ28KIAogV2lkZ2V0SGll
cmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6V2lkZ2V0VG9QYXJlbnRNYXAmIFdpZGdldEhp
ZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OndpZGdldE5ld1BhcmVudE1hcCgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFdpZGdldFRvUGFyZW50TWFwLCBtYXAs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2lkZ2V0VG9QYXJlbnRNYXA+IG1hcDsK
ICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCmluZGV4IDkxMmFhNWMuLjM5NTY0YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUgIlNoYXBl
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzAsNyArMTMxLDcgQEAgcHJpdmF0
ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjp1bmlxdWVfcHRy
PFNoYXBlT3V0c2lkZUluZm8+PiBJbmZvTWFwOwogICAgIHN0YXRpYyBJbmZvTWFwJiBpbmZvTWFw
KCkKICAgICB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChJbmZvTWFw
LCBzdGF0aWNJbmZvTWFwLCAoKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbmZv
TWFwPiBzdGF0aWNJbmZvTWFwOwogICAgICAgICByZXR1cm4gc3RhdGljSW5mb01hcDsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmlu
ZGV4IDY1OGRlZDUuLjBiZDlhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTI0OCw4ICsxMjQ4LDggQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBSZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGh5
cGhlbmF0aW9uU3RyaW5nOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGRlcGVuZCBvbiBs
b2NhbGUuCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
aHlwaGVuTWludXNTdHJpbmcsICgmaHlwaGVuTWludXMsIDEpKTsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBoeXBoZW5TdHJpbmcsICgmaHlwaGVuLCAx
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaHlwaGVuTWludXNT
dHJpbmcoJmh5cGhlbk1pbnVzLCAxKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBoeXBoZW5TdHJpbmcoJmh5cGhlbiwgMSk7CiAgICAgcmV0dXJuIGZvbnRDYXNjYWRl
KCkucHJpbWFyeUZvbnQoKS5nbHlwaEZvckNoYXJhY3RlcihoeXBoZW4pID8gaHlwaGVuU3RyaW5n
IDogaHlwaGVuTWludXNTdHJpbmc7CiB9CiAKQEAgLTEyNjEsMjggKzEyNjEsMjggQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzTWFya1N0cmluZygpIGNvbnN0
CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQ3VzdG9tOgogICAgICAgICByZXR1cm4gdGV4dEVt
cGhhc2lzQ3VzdG9tTWFyaygpOwogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0RvdDogewotICAg
ICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWxsZWRE
b3RTdHJpbmcsICgmYnVsbGV0LCAxKSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIG9wZW5Eb3RTdHJpbmcsICgmd2hpdGVCdWxsZXQsIDEpKTsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkRG90U3Ry
aW5nKCZidWxsZXQsIDEpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBvcGVuRG90U3RyaW5nKCZ3aGl0ZUJ1bGxldCwgMSk7CiAgICAgICAgIHJldHVybiB0ZXh0
RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZERvdFN0cmlu
ZyA6IG9wZW5Eb3RTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0NpcmNs
ZTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBmaWxsZWRDaXJjbGVTdHJpbmcsICgmYmxhY2tDaXJjbGUsIDEpKTsKLSAgICAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb3BlbkNpcmNsZVN0cmluZywg
KCZ3aGl0ZUNpcmNsZSwgMSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBmaWxsZWRDaXJjbGVTdHJpbmcoJmJsYWNrQ2lyY2xlLCAxKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlbkNpcmNsZVN0cmluZygmd2hpdGVD
aXJjbGUsIDEpOwogICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBo
YXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWRDaXJjbGVTdHJpbmcgOiBvcGVuQ2lyY2xlU3RyaW5nOwog
ICAgIH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3VibGVDaXJjbGU6IHsKLSAgICAgICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVkRG91Ymxl
Q2lyY2xlU3RyaW5nLCAoJmZpc2hleWUsIDEpKTsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb3BlbkRvdWJsZUNpcmNsZVN0cmluZywgKCZidWxs
c2V5ZSwgMSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBm
aWxsZWREb3VibGVDaXJjbGVTdHJpbmcoJmZpc2hleWUsIDEpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVuRG91YmxlQ2lyY2xlU3RyaW5nKCZidWxsc2V5
ZSwgMSk7CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lz
RmlsbEZpbGxlZCA/IGZpbGxlZERvdWJsZUNpcmNsZVN0cmluZyA6IG9wZW5Eb3VibGVDaXJjbGVT
dHJpbmc7CiAgICAgfQogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1RyaWFuZ2xlOiB7Ci0gICAg
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpbGxlZFRy
aWFuZ2xlU3RyaW5nLCAoJmJsYWNrVXBQb2ludGluZ1RyaWFuZ2xlLCAxKSk7Ci0gICAgICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9wZW5UcmlhbmdsZVN0
cmluZywgKCZ3aGl0ZVVwUG9pbnRpbmdUcmlhbmdsZSwgMSkpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxsZWRUcmlhbmdsZVN0cmluZygmYmxhY2tVcFBv
aW50aW5nVHJpYW5nbGUsIDEpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBvcGVuVHJpYW5nbGVTdHJpbmcoJndoaXRlVXBQb2ludGluZ1RyaWFuZ2xlLCAxKTsK
ICAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmls
bGVkID8gZmlsbGVkVHJpYW5nbGVTdHJpbmcgOiBvcGVuVHJpYW5nbGVTdHJpbmc7CiAgICAgfQog
ICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTogewotICAgICAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWxsZWRTZXNhbWVTdHJpbmcsICgmc2Vz
YW1lRG90LCAxKSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG9wZW5TZXNhbWVTdHJpbmcsICgmd2hpdGVTZXNhbWVEb3QsIDEpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkU2VzYW1lU3RyaW5n
KCZzZXNhbWVEb3QsIDEpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBvcGVuU2VzYW1lU3RyaW5nKCZ3aGl0ZVNlc2FtZURvdCwgMSk7CiAgICAgICAgIHJldHVy
biB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZFNl
c2FtZVN0cmluZyA6IG9wZW5TZXNhbWVTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgVGV4dEVtcGhh
c2lzTWFya0F1dG86CkBAIC0xMjk3LDEzICsxMjk3LDEzIEBAIGNvbnN0IEF0b21pY1N0cmluZyYg
UmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSBjb25zdAogI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkKIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIFJl
bmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4sIGVtcHR5TGlz
dCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3R5bGVEYXNoYm9hcmRS
ZWdpb24+PiBlbXB0eUxpc3Q7CiAgICAgcmV0dXJuIGVtcHR5TGlzdDsKIH0KIAogY29uc3QgVmVj
dG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdp
b25zKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0eWxl
RGFzaGJvYXJkUmVnaW9uPiwgbm9uZUxpc3QsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPj4gbm9uZUxpc3Q7CiAgICAgc3RhdGljIGJv
b2wgbm9uZUxpc3RJbml0aWFsaXplZCA9IGZhbHNlOwogCiAgICAgaWYgKCFub25lTGlzdEluaXRp
YWxpemVkKSB7CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9h
cmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKQogICAgICAgICBy
ZWdpb24ub2Zmc2V0LmJvdHRvbSgpID0gTGVuZ3RoKCk7CiAgICAgICAgIHJlZ2lvbi5vZmZzZXQu
bGVmdCgpID0gTGVuZ3RoKCk7CiAgICAgICAgIHJlZ2lvbi50eXBlID0gU3R5bGVEYXNoYm9hcmRS
ZWdpb246Ok5vbmU7Ci0gICAgICAgIG5vbmVMaXN0LmFwcGVuZChyZWdpb24pOworICAgICAgICBu
b25lTGlzdC5nZXQoKS5hcHBlbmQocmVnaW9uKTsKICAgICAgICAgbm9uZUxpc3RJbml0aWFsaXpl
ZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiBub25lTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNjU4NWM2ZS4uZWQ0OWFiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTcwLDYg
KzcwLDcgQEAKICNpbmNsdWRlICJVbmljb2RlQmlkaS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTIwMDgsNyArMjAwOSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbENvbHVtbkNvdW50KCkgeyByZXR1cm4g
MTsgfQogICAgIHN0YXRpYyBDb2x1bW5GaWxsIGluaXRpYWxDb2x1bW5GaWxsKCkgeyByZXR1cm4g
Q29sdW1uRmlsbEJhbGFuY2U7IH0KICAgICBzdGF0aWMgQ29sdW1uU3BhbiBpbml0aWFsQ29sdW1u
U3BhbigpIHsgcmV0dXJuIENvbHVtblNwYW5Ob25lOyB9Ci0gICAgc3RhdGljIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMmIGluaXRpYWxUcmFuc2Zvcm0oKSB7IERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChUcmFuc2Zvcm1PcGVyYXRpb25zLCBvcHMsICgpKTsgcmV0dXJuIG9wczsgfQor
ICAgIHN0YXRpYyBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBpbml0aWFsVHJhbnNmb3JtKCkg
eyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VHJhbnNmb3JtT3BlcmF0aW9ucz4gb3BzOyByZXR1cm4g
b3BzOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWCgpIHsgcmV0
dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxU
cmFuc2Zvcm1PcmlnaW5ZKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjBmLCBQZXJjZW50KTsgfQogICAg
IHN0YXRpYyBFUG9pbnRlckV2ZW50cyBpbml0aWFsUG9pbnRlckV2ZW50cygpIHsgcmV0dXJuIFBF
X0FVVE87IH0KQEAgLTIxMTQsOSArMjExNSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgaW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKTsK
ICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgbm9uZURhc2hi
b2FyZFJlZ2lvbnMoKTsKICNlbmRpZgotICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiBpbml0aWFsRmlsdGVyKCkgeyBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRmlsdGVy
T3BlcmF0aW9ucywgb3BzLCAoKSk7IHJldHVybiBvcHM7IH0KKyAgICBzdGF0aWMgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgaW5pdGlhbEZpbHRlcigpIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZp
bHRlck9wZXJhdGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQogI2lmIEVOQUJMRShGSUxURVJTX0xF
VkVMXzIpCi0gICAgc3RhdGljIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGluaXRpYWxCYWNrZHJv
cEZpbHRlcigpIHsgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZpbHRlck9wZXJhdGlv
bnMsIG9wcywgKCkpOyByZXR1cm4gb3BzOyB9CisgICAgc3RhdGljIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGluaXRpYWxCYWNrZHJvcEZpbHRlcigpIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZp
bHRlck9wZXJhdGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENT
U19DT01QT1NJVElORykKICAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRpYWxCbGVuZE1vZGUoKSB7
IHJldHVybiBCbGVuZE1vZGVOb3JtYWw7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguY3BwCmluZGV4IDNiZTFkN2IuLmVjMmUyODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApAQCAtMTMxLDE1ICsx
MzEsMTUgQEAgYm9vbCBSZW5kZXJTVkdQYXRoOjpzaG91bGRTdHJva2VaZXJvTGVuZ3RoU3VicGF0
aCgpIGNvbnN0CiAKIFBhdGgqIFJlbmRlclNWR1BhdGg6Onplcm9MZW5ndGhMaW5lY2FwUGF0aChj
b25zdCBGbG9hdFBvaW50JiBsaW5lY2FwUG9zaXRpb24pIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFBhdGgsIHRlbXBQYXRoLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFBhdGg+IHRlbXBQYXRoOwogCi0gICAgdGVtcFBhdGguY2xlYXIoKTsKKyAg
ICB0ZW1wUGF0aC5nZXQoKS5jbGVhcigpOwogICAgIGlmIChzdHlsZSgpLnN2Z1N0eWxlKCkuY2Fw
U3R5bGUoKSA9PSBTcXVhcmVDYXApCi0gICAgICAgIHRlbXBQYXRoLmFkZFJlY3QoemVyb0xlbmd0
aFN1YnBhdGhSZWN0KGxpbmVjYXBQb3NpdGlvbiwgdGhpcy0+c3Ryb2tlV2lkdGgoKSkpOworICAg
ICAgICB0ZW1wUGF0aC5nZXQoKS5hZGRSZWN0KHplcm9MZW5ndGhTdWJwYXRoUmVjdChsaW5lY2Fw
UG9zaXRpb24sIHRoaXMtPnN0cm9rZVdpZHRoKCkpKTsKICAgICBlbHNlCi0gICAgICAgIHRlbXBQ
YXRoLmFkZEVsbGlwc2UoemVyb0xlbmd0aFN1YnBhdGhSZWN0KGxpbmVjYXBQb3NpdGlvbiwgdGhp
cy0+c3Ryb2tlV2lkdGgoKSkpOworICAgICAgICB0ZW1wUGF0aC5nZXQoKS5hZGRFbGxpcHNlKHpl
cm9MZW5ndGhTdWJwYXRoUmVjdChsaW5lY2FwUG9zaXRpb24sIHRoaXMtPnN0cm9rZVdpZHRoKCkp
KTsKIAotICAgIHJldHVybiAmdGVtcFBhdGg7CisgICAgcmV0dXJuICZ0ZW1wUGF0aC5nZXQoKTsK
IH0KIAogRmxvYXRSZWN0IFJlbmRlclNWR1BhdGg6Onplcm9MZW5ndGhTdWJwYXRoUmVjdChjb25z
dCBGbG9hdFBvaW50JiBsaW5lY2FwUG9zaXRpb24sIGZsb2F0IHN0cm9rZVdpZHRoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRl
eCA4MjI4NTgzLi44YTFmZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMTg3LDEyICsxODcsMTIgQEAgdm9pZCBSZW5kZXJTVkdT
aGFwZTo6bGF5b3V0KCkKIAogUGF0aCogUmVuZGVyU1ZHU2hhcGU6Om5vblNjYWxpbmdTdHJva2VQ
YXRoKGNvbnN0IFBhdGgqIHBhdGgsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlVHJhbnNm
b3JtKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChQYXRoLCB0
ZW1wUGF0aCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYXRoPiB0ZW1wUGF0aDsK
IAotICAgIHRlbXBQYXRoID0gKnBhdGg7Ci0gICAgdGVtcFBhdGgudHJhbnNmb3JtKHN0cm9rZVRy
YW5zZm9ybSk7CisgICAgdGVtcFBhdGguZ2V0KCkgPSAqcGF0aDsKKyAgICB0ZW1wUGF0aC5nZXQo
KS50cmFuc2Zvcm0oc3Ryb2tlVHJhbnNmb3JtKTsKIAotICAgIHJldHVybiAmdGVtcFBhdGg7Cisg
ICAgcmV0dXJuICZ0ZW1wUGF0aC5nZXQoKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdTaGFwZTo6c2V0
dXBOb25TY2FsaW5nU3Ryb2tlQ29udGV4dChBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZVRyYW5zZm9y
bSwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciYgc3RhdGVTYXZlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDhi
YzBhOTkuLjUzN2ZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgUGFpCiAKIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0mIGN1cnJlbnRDb250ZW50VHJh
bnNmb3JtYXRpb24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBZmZp
bmVUcmFuc2Zvcm0sIHNfY3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlvbiwgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBZmZpbmVUcmFuc2Zvcm0+IHNfY3VycmVudENvbnRlbnRUcmFu
c2Zvcm1hdGlvbjsKICAgICByZXR1cm4gc19jdXJyZW50Q29udGVudFRyYW5zZm9ybWF0aW9uOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKaW5k
ZXggZTY4Y2UzOC4uMmUxZjJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZXNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVzb3VyY2VzLmNwcApAQCAtNDUsNDQgKzQ1LDQ0IEBAIFNWR1Jlc291cmNlczo6U1ZHUmVz
b3VyY2VzKCkKIAogc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgY2xpcHBlckZpbHRlck1h
c2tlclRhZ3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0
PEF0b21pY1N0cmluZz4sIHNfdGFnTGlzdCwgKCkpOwotICAgIGlmIChzX3RhZ0xpc3QuaXNFbXB0
eSgpKSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4g
c190YWdMaXN0OworICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vICJjb250YWluZXIgZWxlbWVudHMiOiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9pbnRy
by5odG1sI1Rlcm1Db250YWluZXJFbGVtZW50CiAgICAgICAgIC8vICJncmFwaGljcyBlbGVtZW50
cyIgOiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9pbnRyby5odG1sI1Rlcm1HcmFwaGljc0Vs
ZW1lbnQKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6YVRhZy5sb2NhbE5hbWUoKSk7
Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmNpcmNsZVRhZy5sb2NhbE5hbWUoKSk7
Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmVsbGlwc2VUYWcubG9jYWxOYW1lKCkp
OwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpnbHlwaFRhZy5sb2NhbE5hbWUoKSk7
Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmdUYWcubG9jYWxOYW1lKCkpOwotICAg
ICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjppbWFnZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjptYXJrZXJUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjptYXNrVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZy5sb2NhbE5hbWUoKSk7Ci0g
ICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxOYW1lKCkpOwotICAg
ICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5Z29uVGFnLmxvY2FsTmFtZSgpKTsKLSAg
ICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWxpbmVUYWcubG9jYWxOYW1lKCkpOwot
ICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpyZWN0VGFnLmxvY2FsTmFtZSgpKTsKLSAg
ICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6c3ZnVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAg
ICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnVzZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNf
dGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmFUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBz
X3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpjaXJjbGVUYWcubG9jYWxOYW1lKCkpOworICAg
ICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjplbGxpcHNlVGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6Z2x5cGhUYWcubG9jYWxO
YW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpnVGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6aW1hZ2VUYWcu
bG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpsaW5l
VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6
bWFya2VyVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdO
YW1lczo6bWFza1RhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6Om1pc3NpbmdfZ2x5cGhUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xp
c3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190
YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5hbWUoKSk7CisgICAg
ICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgp
KTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cmVjdFRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnN2Z1RhZy5sb2Nh
bE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRleHRUYWcu
bG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp1c2VU
YWcubG9jYWxOYW1lKCkpOwogCiAgICAgICAgIC8vIE5vdCBsaXN0ZWQgaW4gdGhlIGRlZmluaXRp
b25zIGlzIHRoZSBjbGlwUGF0aCBlbGVtZW50LCB0aGUgU1ZHIHNwZWMgc2F5cyB0aG91Z2g6CiAg
ICAgICAgIC8vIFRoZSAiY2xpcFBhdGgiIGVsZW1lbnQgb3IgYW55IG9mIGl0cyBjaGlsZHJlbiBj
YW4gc3BlY2lmeSBwcm9wZXJ0eSAiY2xpcC1wYXRoIi4KICAgICAgICAgLy8gU28gd2UgaGF2ZSB0
byBhZGQgY2xpcFBhdGhUYWcgaGVyZSwgb3RoZXJ3aGlzZSBjbGlwLXBhdGggb24gY2xpcFBhdGgg
d2lsbCBmYWlsLgogICAgICAgICAvLyAoQWxyZWFkeSBtYWlsZWQgU1ZHIFdHLCB3YWl0aW5nIGZv
ciBhIHNvbHV0aW9uKQotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpjbGlwUGF0aFRh
Zy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmNs
aXBQYXRoVGFnLmxvY2FsTmFtZSgpKTsKIAogICAgICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBk
ZWZpbml0aW9ucyBhcmUgdGhlIHRleHQgY29udGVudCBlbGVtZW50cywgdGhvdWdoIGZpbHRlci9j
bGlwcGVyL21hc2tlciBvbiB0c3Bhbi90ZXh0Ly4uIGlzIGFsbG93ZWQuCiAgICAgICAgIC8vIChB
bHJlYWR5IG1haWxlZCBTVkcgV0csIHdhaXRpbmcgZm9yIGEgc29sdXRpb24pCi0gICAgICAgIHNf
dGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFBhdGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0cmVmVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6dHNwYW5UYWcubG9jYWxOYW1lKCkpOworICAgICAgICBz
X3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjphbHRHbHlwaFRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRleHRQYXRoVGFnLmxvY2FsTmFt
ZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dHJlZlRhZy5sb2Nh
bE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRzcGFuVGFn
LmxvY2FsTmFtZSgpKTsKIAogICAgICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBkZWZpbml0aW9u
cyBpcyB0aGUgZm9yZWlnbk9iamVjdCBlbGVtZW50LCBidXQgY2xpcC1wYXRoCiAgICAgICAgIC8v
IGlzIGEgc3VwcG9ydGVkIGF0dHJpYnV0ZS4KLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1l
czo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQo
KS5hZGQoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcubG9jYWxOYW1lKCkpOwogCiAgICAgICAg
IC8vIEVsZW1lbnRzIHRoYXQgd2UgaWdub3JlLCBhcyBpdCBkb2Vzbid0IG1ha2UgYW55IHNlbnNl
LgogICAgICAgICAvLyBkZWZzLCBwYXR0ZXJuLCBzd2l0Y2ggKEZJWE1FOiBNYWlsIFNWRyBXRyBh
Ym91dCB0aGVzZSkKQEAgLTk0LDEyICs5NCwxMiBAQCBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJp
bmc+JiBjbGlwcGVyRmlsdGVyTWFza2VyVGFncygpCiAKIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0
cmluZz4mIG1hcmtlclRhZ3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChIYXNoU2V0PEF0b21pY1N0cmluZz4sIHNfdGFnTGlzdCwgKCkpOwotICAgIGlmIChzX3RhZ0xp
c3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcu
bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxv
Y2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5s
b2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFn
LmxvY2FsTmFtZSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNT
dHJpbmc+PiBzX3RhZ0xpc3Q7CisgICAgaWYgKHNfdGFnTGlzdC5nZXQoKS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6bGluZVRhZy5sb2NhbE5hbWUo
KSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBhdGhUYWcubG9jYWxO
YW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5Z29uVGFn
LmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9s
eWxpbmVUYWcubG9jYWxOYW1lKCkpOwogICAgIH0KIAogICAgIHJldHVybiBzX3RhZ0xpc3Q7CkBA
IC0xMDcsMjAgKzEwNywyMCBAQCBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBtYXJrZXJU
YWdzKCkKIAogc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgZmlsbEFuZFN0cm9rZVRhZ3Mo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PEF0b21pY1N0
cmluZz4sIHNfdGFnTGlzdCwgKCkpOwotICAgIGlmIChzX3RhZ0xpc3QuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Y2lyY2xlVGFnLmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6ZWxsaXBzZVRhZy5sb2NhbE5hbWUoKSk7
Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxOYW1lKCkpOwot
ICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpKTsKLSAg
ICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5hbWUoKSk7Ci0g
ICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cmVjdFRhZy5sb2NhbE5hbWUoKSk7Ci0g
ICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRleHRUYWcubG9jYWxOYW1lKCkpOwotICAg
ICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0ZXh0UGF0aFRhZy5sb2NhbE5hbWUoKSk7Ci0g
ICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnRyZWZUYWcubG9jYWxOYW1lKCkpOwotICAg
ICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0c3BhblRhZy5sb2NhbE5hbWUoKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4gc190YWdMaXN0Owor
ICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190
YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6Y2lyY2xlVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAg
ICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6ZWxsaXBzZVRhZy5sb2NhbE5hbWUoKSk7
CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxOYW1l
KCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWdvblRh
Zy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBv
bHlsaW5lVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdO
YW1lczo6cmVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6OnRleHRUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCku
YWRkKFNWR05hbWVzOjp0ZXh0UGF0aFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlz
dC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRyZWZUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3Rh
Z0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0c3BhblRhZy5sb2NhbE5hbWUoKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHNfdGFnTGlzdDsKQEAgLTEyOCwxMiArMTI4LDEyIEBAIHN0YXRpYyBIYXNo
U2V0PEF0b21pY1N0cmluZz4mIGZpbGxBbmRTdHJva2VUYWdzKCkKIAogc3RhdGljIEhhc2hTZXQ8
QXRvbWljU3RyaW5nPiYgY2hhaW5hYmxlUmVzb3VyY2VUYWdzKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBzX3RhZ0xpc3QsICgp
KTsKLSAgICBpZiAoc190YWdMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICBzX3RhZ0xpc3QuYWRk
KFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFn
TGlzdC5hZGQoU1ZHTmFtZXM6OmZpbHRlclRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFn
TGlzdC5hZGQoU1ZHTmFtZXM6OnBhdHRlcm5UYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3Rh
Z0xpc3QuYWRkKFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZy5sb2NhbE5hbWUoKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4gc190YWdMaXN0Owor
ICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAg
ICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6ZmlsdGVyVGFnLmxvY2FsTmFtZSgpKTsK
KyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cGF0dGVyblRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJhZGlhbEdyYWRp
ZW50VGFnLmxvY2FsTmFtZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gc190YWdMaXN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmdsZS5jcHAKaW5kZXggNTg4ZjI3Ny4uOWE2OTRkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5nbGUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgog
I2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTIsMTYgKzExMywxNiBA
QCBTdHJpbmcgU1ZHQW5nbGU6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewogICAgIHN3aXRjaCAo
bV91bml0VHlwZSkgewogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9ERUc6IHsKLSAgICAgICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZGVnU3RyaW5nLCAoQVNDSUlMaXRl
cmFsKCJkZWciKSkpOwotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMpICsgZGVnU3RyaW5nOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBkZWdTdHJpbmcoQVNDSUlMaXRlcmFsKCJkZWciKSk7CisgICAgICAgIHJldHVybiBT
dHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyBkZWdTdHJpbmcuZ2V0KCk7
CiAgICAgfQogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9SQUQ6IHsKLSAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcmFkU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJy
YWQiKSkpOwotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVk
VW5pdHMpICsgcmFkU3RyaW5nOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiByYWRTdHJpbmcoQVNDSUlMaXRlcmFsKCJyYWQiKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6
Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyByYWRTdHJpbmcuZ2V0KCk7CiAgICAg
fQogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9HUkFEOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGdyYWRTdHJpbmcsIChBU0NJSUxpdGVyYWwoImdyYWQi
KSkpOwotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5p
dHMpICsgZ3JhZFN0cmluZzsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
Z3JhZFN0cmluZyhBU0NJSUxpdGVyYWwoImdyYWQiKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6
Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyBncmFkU3RyaW5nLmdldCgpOwogICAg
IH0KICAgICBjYXNlIFNWR19BTkdMRVRZUEVfVU5TUEVDSUZJRUQ6CiAgICAgY2FzZSBTVkdfQU5H
TEVUWVBFX1VOS05PV046CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUNvbG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxl
bWVudC5jcHAKaW5kZXggZDQ0OTJhZC4uMGZiNmQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcApAQCAtMzksNyArMzksNyBAQCBSZWY8U1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudD4gU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmCiAKIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlSXNDdXJyZW50Q29sb3Io
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBjdXJyZW50Q29sb3IsICgiY3VycmVudENvbG9yIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGN1cnJlbnRDb2xvcigiY3VycmVudENvbG9yIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHZhbHVlID09IGN1
cnJlbnRDb2xvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9u
RWxlbWVudC5jcHAKaW5kZXggNDk2YzJmMy4uNzljMDRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0xMDgsOCArMTA4LDggQEAgdm9p
ZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXQKICAgICAKIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpSb3Rh
dGVNb2RlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3RhdGVNb2RlKCkgY29uc3QKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhdXRv
VmFsLCAoImF1dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYXV0b1Jl
dmVyc2UsICgiYXV0by1yZXZlcnNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGF1dG9W
YWwoImF1dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBhdXRvUmV2ZXJzZSgiYXV0by1y
ZXZlcnNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiByb3RhdGUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIp
OwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1ZhbCkKICAgICAgICAgcmV0dXJuIFJvdGF0ZUF1dG87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKaW5kZXggMzQ2Mjhh
ZC4uZWIxMjQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cApAQCAtMjg2LDEwICsyODYsMTAgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50Ojp1cGRhdGVB
bmltYXRpb25Nb2RlKCkKIAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZShj
b25zdCBBdG9taWNTdHJpbmcmIGNhbGNNb2RlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRpc2NyZXRlLCAoImRpc2NyZXRlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGxpbmVhciwgKCJsaW5lYXIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgcGFjZWQsICgicGFjZWQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3BsaW5lLCAoInNwbGluZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBkaXNjcmV0ZSgiZGlzY3JldGUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bWljU3RyaW5nPiBsaW5lYXIoImxpbmVhciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHBh
Y2VkKCJwYWNlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNwbGluZSgic3BsaW5lIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGNhbGNNb2RlID09
IGRpc2NyZXRlKQogICAgICAgICBzZXRDYWxjTW9kZShDYWxjTW9kZURpc2NyZXRlKTsKICAgICBl
bHNlIGlmIChjYWxjTW9kZSA9PSBsaW5lYXIpCkBAIC0zMDQsOCArMzA0LDggQEAgdm9pZCBTVkdB
bmltYXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZShjb25zdCBBdG9taWNTdHJpbmcmIGNhbGNNb2Rl
KQogCiB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnNldEF0dHJpYnV0ZVR5cGUoY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVUeXBlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNzcywgKCJDU1MiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgeG1sLCAoIlhNTCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBjc3MoIkNTUyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHhtbCgiWE1MIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYgKGF0dHJpYnV0ZVR5cGUg
PT0gY3NzKQogICAgICAgICBtX2F0dHJpYnV0ZVR5cGUgPSBBdHRyaWJ1dGVUeXBlQ1NTOwogICAg
IGVsc2UgaWYgKGF0dHJpYnV0ZVR5cGUgPT0geG1sKQpAQCAtMzMyLDE0ICszMzIsMTQgQEAgU3Ry
aW5nIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmZyb21WYWx1ZSgpIGNvbnN0CiAKIGJvb2wgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6aXNBZGRpdGl2ZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VtLCAoInN1bSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBzdW0oInN1bSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBmYXN0R2V0QXR0cmli
dXRlKFNWR05hbWVzOjphZGRpdGl2ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBzdW0gfHwg
YW5pbWF0aW9uTW9kZSgpID09IEJ5QW5pbWF0aW9uOwogfQogCiBib29sIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzQWNjdW11bGF0ZWQoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1bSwgKCJzdW0iLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21pY1N0cmluZz4gc3VtKCJzdW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShT
VkdOYW1lczo6YWNjdW11bGF0ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBzdW0gJiYgYW5p
bWF0aW9uTW9kZSgpICE9IFRvQW5pbWF0aW9uOwogfQpAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQg
U1ZHQW5pbWF0aW9uRWxlbWVudDo6YWRqdXN0Rm9ySW5oZXJpdGFuY2UoU1ZHRWxlbWVudCogdGFy
Z2V0RWxlbWVudCwgY29uc3QKIAogc3RhdGljIGJvb2wgaW5oZXJpdHNGcm9tUHJvcGVydHkoU1ZH
RWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgaW5oZXJpdCwgKCJpbmhlcml0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IGluaGVyaXQoImluaGVyaXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICAKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpIHx8IHZhbHVlICE9IGluaGVyaXQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDFmYWVhNTMuLmRkZjkyNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApAQCAtNzUs
MjUgKzc1LDI1IEBAIFJlZjxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudD4gU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpCiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmll
cigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
c19pZGVudGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0aFgiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVu
Z3RoWUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmll
cjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
b3JkZXJYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR09yZGVyWCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR09yZGVyWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om9yZGVyWUlkZW50aWZpZXIoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRl
bnRpZmllciwgKCJTVkdPcmRlclkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVy
KCJTVkdPcmRlclkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBy
ZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IGJhMmEzZDQuLjEyZmEwYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
CkBAIC02MywxMyArNjMsMTMgQEAgUmVmPFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudD4gU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGkKIAogY29uc3QgQXRv
bWljU3RyaW5nJiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhY
SWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0aFgiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6a2Vy
bmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHS2VybmVsVW5pdExlbmd0
aFkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0TGVu
Z3RoWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBz
X2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcAppbmRleCBhZWUwOGRkLi5mOTNkYWNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcApAQCAtNjIsMTMgKzYyLDEzIEBAIFJlZjxT
VkdGRURyb3BTaGFkb3dFbGVtZW50PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURyb3BTaGFkb3dF
bGVtZW50OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1N0ZERldmlh
dGlvblgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGREZXZpYXRp
b25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNf
aWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRURyb3BTaGFkb3dFbGVt
ZW50OjpzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1N0ZERldmlhdGlv
blkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGREZXZpYXRpb25Z
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRl
bnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcAppbmRleCAyMmMxNzhiLi43YjIxZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcApAQCAtNTcsMTMgKzU3LDEzIEBAIFJl
ZjxTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1N0
ZERldmlhdGlvblgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGRE
ZXZpYXRpb25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHU3Rk
RGV2aWF0aW9uWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR1N0ZERl
dmlhdGlvblkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHAKaW5kZXggNTlmMDdkMi4uMzM3MGUxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtNTYsMTMgKzU2LDEzIEBAIFJl
ZjxTVkdGRU1vcnBob2xvZ3lFbGVtZW50PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRU1vcnBob2xv
Z3lFbGVtZW50OjpyYWRpdXNYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1JhZGl1c1giLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdSYWRpdXNYIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpyYWRpdXNZSWRl
bnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1JhZGl1c1kiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
c19pZGVudGlmaWVyKCJTVkdSYWRpdXNZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IGZlZjdlZWQu
LjE5ZjVkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudC5jcHAKQEAgLTY3LDEzICs2NywxMyBAQCBSZWY8U1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6
Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRM
ZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5p
dExlbmd0aFgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gc19pZGVudGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAo
IlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmll
cigiU1ZHS2VybmVsVW5pdExlbmd0aFkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKaW5kZXggODZkY2FmMS4uYjgwOGJkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcApAQCAtNjEs
MTMgKzYxLDEzIEBAIFJlZjxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50PiBTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpiYXNlRnJlcXVlbmN5WElkZW50aWZpZXIoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRp
ZmllciwgKCJTVkdCYXNlRnJlcXVlbmN5WCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50
aWZpZXIoIlNWR0Jhc2VGcmVxdWVuY3lYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpiYXNlRnJlcXVlbmN5WUlkZW50aWZpZXIoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRp
ZmllciwgKCJTVkdCYXNlRnJlcXVlbmN5WSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50
aWZpZXIoIlNWR0Jhc2VGcmVxdWVuY3lZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlckVsZW1lbnQuY3BwCmluZGV4IGYzMmMzMmYuLjBhNzVmNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTgyLDEzICs4MiwxMyBAQCBSZWY8U1ZHRmls
dGVyRWxlbWVudD4gU1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvYwogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZpbHRlckVsZW1lbnQ6OmZp
bHRlclJlc1hJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHRmlsdGVyUmVzWCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0ZpbHRlclJlc1giLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIFNWR0ZpbHRlckVsZW1lbnQ6OmZpbHRlclJlc1lJZGVudGlmaWVy
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBz
X2lkZW50aWZpZXIsICgiU1ZHRmlsdGVyUmVzWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lk
ZW50aWZpZXIoIlNWR0ZpbHRlclJlc1kiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1h
cC5oCmluZGV4IGI3NDdjNmQuLmNlMGI2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHbHlwaE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCkBA
IC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFNWR0dseXBoJiBzdmdHbHlwaEZv
ckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFnbHlwaCB8fCBn
bHlwaCA+IG1fZ2x5cGhUYWJsZS5zaXplKCkpIHsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTVkdHbHlwaCwgZGVmYXVsdEdseXBoLCAoKSk7CisgICAgICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U1ZHR2x5cGg+IGRlZmF1bHRHbHlwaDsKICAgICAgICAg
ICAgIHJldHVybiBkZWZhdWx0R2x5cGg7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fZ2x5
cGhUYWJsZVtnbHlwaCAtIDFdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xh
bmdTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcAppbmRleCA0
OGJlMGRjLi5iNjUxODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1Nw
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcApAQCAtMzUs
NyArMzUsNyBAQCB2b2lkIFNWR0xhbmdTcGFjZTo6c2V0WG1sbGFuZyhjb25zdCBBdG9taWNTdHJp
bmcmIHhtbExhbmcpCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0xhbmdTcGFjZTo6eG1sc3BhY2Uo
KSBjb25zdAogewogICAgIGlmICghbV9zcGFjZSkgewotICAgICAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZWZhdWx0U3RyaW5nLCAoImRlZmF1
bHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRlZmF1bHRTdHJpbmcoImRlZmF1
bHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmV0dXJu
IGRlZmF1bHRTdHJpbmc7CiAgICAgfQogCkBAIC02Miw3ICs2Miw3IEBAIGJvb2wgU1ZHTGFuZ1Nw
YWNlOjppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAg
IAogdm9pZCBTVkdMYW5nU3BhY2U6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGFzaFNldDxRdWFs
aWZpZWROYW1lPiYgc3VwcG9ydGVkQXR0cmlidXRlcykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4bWxQcmVmaXgsICgieG1sIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IHhtbFByZWZpeCgieG1sIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAKICAgICBRdWFsaWZpZWROYW1lIGxhbmdXaXRoUHJlZml4ID0gWE1MTmFtZXM6
OmxhbmdBdHRyOwogICAgIGxhbmdXaXRoUHJlZml4LnNldFByZWZpeCh4bWxQcmVmaXgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCmluZGV4IDA2Njg3ZjIuLmRmOTZlYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKQEAgLTkwLDEzICs5MCwx
MyBAQCBSZWY8U1ZHTWFya2VyRWxlbWVudD4gU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR01h
cmtlckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHT3JpZW50
VHlwZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR09yaWVudFR5cGUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVu
dGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR01hcmtlckVsZW1lbnQ6Om9yaWVu
dEFuZ2xlSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR09yaWVudEFuZ2xlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHT3JpZW50QW5nbGUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCkBA
IC0yMzcsNyArMjM3LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVu
dFR5cGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgaWYgKG93bmVyVHlwZS5tX29y
aWVudFR5cGUudmFsdWUgIT0gU1ZHTWFya2VyT3JpZW50QXV0bykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYXV0b1N0
cmluZywgKCJhdXRvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1dG9TdHJpbmcoImF1dG8iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBvd25lclR5cGUubV9vcmll
bnRUeXBlLnN5bmNocm9uaXplKCZvd25lclR5cGUsIG9yaWVudFR5cGVQcm9wZXJ0eUluZm8oKS0+
YXR0cmlidXRlTmFtZSwgYXV0b1N0cmluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
RWxlbWVudC5jcHAKaW5kZXggOGFjMjhkYS4uMDQ1YWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlRWxlbWVudC5jcHAKQEAgLTYyLDkgKzYyLDkgQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6
OnNldERpc2FibGVkKGJvb2wgc2V0RGlzYWJsZWQpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZH
U3R5bGVFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZWZhdWx0VmFsdWUsICgidGV4dC9jc3MiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZGVmYXVsdFZhbHVlKCJ0ZXh0L2NzcyIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
biA9IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6dHlwZUF0dHIpOwotICAgIHJldHVybiBuLmlzTnVs
bCgpID8gZGVmYXVsdFZhbHVlIDogbjsKKyAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRW
YWx1ZS5nZXQoKSA6IG47CiB9CiAKIHZvaWQgU1ZHU3R5bGVFbGVtZW50OjpzZXRUeXBlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC03NCw5ICs3NCw5IEBAIHZv
aWQgU1ZHU3R5bGVFbGVtZW50OjpzZXRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRXhj
ZXB0aW9uQ29kZSYpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU3R5bGVFbGVtZW50OjptZWRp
YSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgZGVmYXVsdFZhbHVlLCAoImFsbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBkZWZhdWx0VmFsdWUoImFsbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbiA9IGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFt
ZXM6Om1lZGlhQXR0cik7Ci0gICAgcmV0dXJuIG4uaXNOdWxsKCkgPyBkZWZhdWx0VmFsdWUgOiBu
OworICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVlLmdldCgpIDogbjsKIH0KIAog
dm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnNldE1lZGlhKGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWEs
IEV4Y2VwdGlvbkNvZGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5z
Zm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcAppbmRleCBlOGEz
ZjEyLi4yMTFhZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3Jt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTEzNCwyNyArMTM1LDI3IEBAIGNvbnN0IFN0cmluZyYgU1ZH
VHJhbnNmb3JtOjp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyhTVkdUcmFuc2Zvcm1UeXBl
IHR5cGUpCiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1VOS05PV046CiAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9NQVRSSVg6IHsKLSAgICAgICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbWF0cml4U3RyaW5nLCAoQVND
SUlMaXRlcmFsKCJtYXRyaXgoIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gbWF0cml4U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWF0cml4KCIpKTsKICAgICAgICAgcmV0
dXJuIG1hdHJpeFN0cmluZzsKICAgICB9CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1RSQU5TTEFU
RTogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0cmFu
c2xhdGVTdHJpbmcsIChBU0NJSUxpdGVyYWwoInRyYW5zbGF0ZSgiKSkpOworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB0cmFuc2xhdGVTdHJpbmcoQVNDSUlMaXRlcmFsKCJ0
cmFuc2xhdGUoIikpOwogICAgICAgICByZXR1cm4gdHJhbnNsYXRlU3RyaW5nOwogICAgIH0KICAg
ICBjYXNlIFNWR19UUkFOU0ZPUk1fU0NBTEU6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgc2NhbGVTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNjYWxlKCIp
KSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNjYWxlU3RyaW5nKEFT
Q0lJTGl0ZXJhbCgic2NhbGUoIikpOwogICAgICAgICByZXR1cm4gc2NhbGVTdHJpbmc7CiAgICAg
fQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9ST1RBVEU6IHsKLSAgICAgICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcm90YXRlU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJy
b3RhdGUoIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcm90YXRl
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicm90YXRlKCIpKTsKICAgICAgICAgcmV0dXJuIHJvdGF0ZVN0
cmluZzsKICAgICB9ICAgIAogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWDogewotICAgICAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBza2V3WFN0cmluZywgKEFT
Q0lJTGl0ZXJhbCgic2tld1goIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gc2tld1hTdHJpbmcoQVNDSUlMaXRlcmFsKCJza2V3WCgiKSk7CiAgICAgICAgIHJldHVy
biBza2V3WFN0cmluZzsKICAgICB9CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NLRVdZOiB7Ci0g
ICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNrZXdZU3RyaW5n
LCAoQVNDSUlMaXRlcmFsKCJza2V3WSgiKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBza2V3WVN0cmluZyhBU0NJSUxpdGVyYWwoInNrZXdZKCIpKTsKICAgICAgICAg
cmV0dXJuIHNrZXdZU3RyaW5nOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVj
LmNwcAppbmRleCBhYzg2ZWUzLi4wMDk4Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVmlld1NwZWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5j
cHAKQEAgLTg0LDE5ICs4NCwxOSBAQCBTVkdWaWV3U3BlYzo6U1ZHVmlld1NwZWMoU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHVmlld1NwZWM6OnZp
ZXdCb3hJZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHVmlld1NwZWNWaWV3Qm94QXR0cmlidXRl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHVmlld1NwZWNWaWV3Qm94
QXR0cmlidXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdWaWV3U3BlYzo6
cHJlc2VydmVBc3BlY3RSYXRpb0lkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdWaWV3U3BlY1By
ZXNlcnZlQXNwZWN0UmF0aW9BdHRyaWJ1dGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVu
dGlmaWVyKCJTVkdWaWV3U3BlY1ByZXNlcnZlQXNwZWN0UmF0aW9BdHRyaWJ1dGUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1ZpZXdTcGVjOjp0cmFuc2Zvcm1JZGVudGlmaWVy
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBz
X2lkZW50aWZpZXIsICgiU1ZHVmlld1NwZWNUcmFuc2Zvcm1BdHRyaWJ1dGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdWaWV3U3BlY1RyYW5zZm9ybUF0dHJpYnV0ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50
aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5jcHAKaW5kZXggMzU2OGJlNC4uNDQxMGI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBTTUlM
VGltZSBTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKGNvbnN0IFN0cmluZyYgZGF0YSkK
ICAgICAKICAgICBTdHJpbmcgcGFyc2UgPSBkYXRhLnN0cmlwV2hpdGVTcGFjZSgpOwogCi0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgaW5kZWZp
bml0ZVZhbHVlLCAoImluZGVmaW5pdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gaW5k
ZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAgICAgaWYgKHBhcnNlID09IGluZGVmaW5pdGVWYWx1ZSkKICAgICAgICAgcmV0dXJu
IFNNSUxUaW1lOjppbmRlZmluaXRlKCk7CiAKQEAgLTQ1MiwxOSArNDUyLDE5IEBAIHZvaWQgU1ZH
U01JTEVsZW1lbnQ6OnBhcnNlQmVnaW5PckVuZChjb25zdCBTdHJpbmcmIHBhcnNlU3RyaW5nLCBC
ZWdpbk9yRW5kIGJlZ2luCiAKIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFF1YWxpZmllZE5hbWU+LCBzdXBwb3J0ZWRBdHRyaWJ1
dGVzLCAoKSk7Ci0gICAgaWYgKHN1cHBvcnRlZEF0dHJpYnV0ZXMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjpiZWdpbkF0dHIpOwotICAgICAg
ICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6ZW5kQXR0cik7Ci0gICAgICAgIHN1
cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjpkdXJBdHRyKTsKLSAgICAgICAgc3VwcG9y
dGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6OnJlcGVhdER1ckF0dHIpOwotICAgICAgICBzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6cmVwZWF0Q291bnRBdHRyKTsKLSAgICAgICAg
c3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6Om1pbkF0dHIpOwotICAgICAgICBzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6bWF4QXR0cik7Ci0gICAgICAgIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjphdHRyaWJ1dGVOYW1lQXR0cik7Ci0gICAgICAgIHN1
cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVkQXR0cmlidXRl
czsKKyAgICBpZiAoc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmJlZ2luQXR0cik7Cisg
ICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjplbmRBdHRyKTsK
KyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmR1ckF0dHIp
OworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6cmVwZWF0
RHVyQXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVz
OjpyZXBlYXRDb3VudEF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFk
ZChTVkdOYW1lczo6bWluQXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCku
YWRkKFNWR05hbWVzOjptYXhBdHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQo
KS5hZGQoU1ZHTmFtZXM6OmF0dHJpYnV0ZU5hbWVBdHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0
cmlidXRlcy5nZXQoKS5hZGQoWExpbmtOYW1lczo6aHJlZkF0dHIpOwogICAgIH0KLSAgICByZXR1
cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRv
cj4oYXR0ck5hbWUpOworICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRh
aW5zPFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKIHZvaWQgU1ZH
U01JTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC02NDMsOCArNjQzLDggQEAgYm9vbCBTVkdTTUlM
RWxlbWVudDo6aXNGcm96ZW4oKSBjb25zdAogICAgIAogU1ZHU01JTEVsZW1lbnQ6OlJlc3RhcnQg
U1ZHU01JTEVsZW1lbnQ6OnJlc3RhcnQoKSBjb25zdAogeyAgICAKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBuZXZlciwgKCJuZXZlciIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB3aGVuTm90QWN0aXZlLCAoIndoZW5O
b3RBY3RpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbmV2ZXIoIm5ldmVyIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gd2hlbk5vdEFjdGl2ZSgid2hlbk5vdEFjdGl2ZSIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKFNWR05hbWVzOjpyZXN0YXJ0QXR0cik7CiAgICAg
aWYgKHZhbHVlID09IG5ldmVyKQogICAgICAgICByZXR1cm4gUmVzdGFydE5ldmVyOwpAQCAtNjU1
LDcgKzY1NSw3IEBAIFNWR1NNSUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NNSUxFbGVtZW50OjpyZXN0
YXJ0KCkgY29uc3QKICAgICAKIFNWR1NNSUxFbGVtZW50OjpGaWxsTW9kZSBTVkdTTUlMRWxlbWVu
dDo6ZmlsbCgpIGNvbnN0CiB7ICAgCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgZnJlZXplLCAoImZyZWV6ZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bWljU3RyaW5nPiBmcmVlemUoImZyZWV6ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBmYXN0R2V0QXR0cmlidXRl
KFNWR05hbWVzOjpmaWxsQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09IGZyZWV6ZSA/IEZpbGxG
cmVlemUgOiBGaWxsUmVtb3ZlOwogfQpAQCAtNjg4LDcgKzY4OCw3IEBAIFNNSUxUaW1lIFNWR1NN
SUxFbGVtZW50OjpyZXBlYXRDb3VudCgpIGNvbnN0CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKIAotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGluZGVmaW5pdGVWYWx1ZSwg
KCJpbmRlZmluaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGluZGVmaW5pdGVWYWx1
ZSgiaW5kZWZpbml0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IGlmICh2YWx1ZSA9PSBpbmRlZmluaXRlVmFsdWUpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6
aW5kZWZpbml0ZSgpOwogICAgIGJvb2wgb2s7CkBAIC0xMTQzLDE2ICsxMTQzLDE2IEBAIGJvb2wg
U1ZHU01JTEVsZW1lbnQ6OnByb2dyZXNzKFNNSUxUaW1lIGVsYXBzZWQsIFNWR1NNSUxFbGVtZW50
KiByZXN1bHRFbGVtZW50LCBiCiB2b2lkIFNWR1NNSUxFbGVtZW50Ojpub3RpZnlEZXBlbmRlbnRz
SW50ZXJ2YWxDaGFuZ2VkKE5ld09yRXhpc3RpbmdJbnRlcnZhbCBuZXdPckV4aXN0aW5nKQogewog
ICAgIEFTU0VSVChtX2ludGVydmFsQmVnaW4uaXNGaW5pdGUoKSk7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U1ZHU01JTEVsZW1lbnQqPiwgbG9vcEJyZWFrZXIs
ICgpKTsKLSAgICBpZiAobG9vcEJyZWFrZXIuY29udGFpbnModGhpcykpCisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8U1ZHU01JTEVsZW1lbnQqPj4gbG9vcEJyZWFrZXI7CisgICAg
aWYgKGxvb3BCcmVha2VyLmdldCgpLmNvbnRhaW5zKHRoaXMpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbG9vcEJyZWFrZXIuYWRkKHRoaXMpOworICAgIGxvb3BCcmVha2VyLmdldCgpLmFkZCh0aGlz
KTsKICAgICAKICAgICBmb3IgKGF1dG8mIGRlcGVuZGVudCA6IG1fdGltZURlcGVuZGVudHMpIHsK
ICAgICAgICAgZGVwZW5kZW50LT5jcmVhdGVJbnN0YW5jZVRpbWVzRnJvbVN5bmNiYXNlKHRoaXMs
IG5ld09yRXhpc3RpbmcpOwogICAgIH0KIAotICAgIGxvb3BCcmVha2VyLnJlbW92ZSh0aGlzKTsK
KyAgICBsb29wQnJlYWtlci5nZXQoKS5yZW1vdmUodGhpcyk7CiB9CiAgICAgCiB2b2lkIFNWR1NN
SUxFbGVtZW50OjpjcmVhdGVJbnN0YW5jZVRpbWVzRnJvbVN5bmNiYXNlKFNWR1NNSUxFbGVtZW50
KiBzeW5jYmFzZSwgTmV3T3JFeGlzdGluZ0ludGVydmFsKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268608</attachid>
            <date>2016-01-08 20:45:51 -0800</date>
            <delta_ts>2016-01-09 05:14:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152902-8.diff</filename>
            <type>text/plain</type>
            <size>266844</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KaW5k
ZXggZWY1NDYwMi4uNzIzNjg3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSVdyYXBwZXJPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSVdyYXBwZXJPYmplY3QubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NhbGxi
YWNrT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCkBAIC00MSw4ICs0Miw4IEBAIHB1YmxpYzoKIAogc3Rh
dGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmplY3RIYW5k
bGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEpTQVBJV3Jh
cHBlck9iamVjdEhhbmRsZU93bmVyLCBqc1dyYXBwZXJPYmplY3RIYW5kbGVPd25lciwgKCkpOwot
ICAgIHJldHVybiAmanNXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyPiBqc1dyYXBwZXJPYmplY3RI
YW5kbGVPd25lcjsKKyAgICByZXR1cm4gJmpzV3JhcHBlck9iamVjdEhhbmRsZU93bmVyLmdldCgp
OwogfQogCiB2b2lkIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRleCBhNzJkMTliLi4xYzFmN2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgIldlYWtIYW5kbGVPd25lci5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRy
YXMuaCIKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9OU01hcFRhYmxlU1BJLmg+CiAKIGNsYXNzIEpT
TWFuYWdlZFZhbHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpA
QCAtNDcsOCArNDgsOCBAQCBwdWJsaWM6CiAKIHN0YXRpYyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyKiBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIsIGpzTWFuYWdlZFZhbHVlSGFu
ZGxlT3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI+IGpzTWFu
YWdlZFZhbHVlSGFuZGxlT3duZXI7CisgICAgcmV0dXJuICZqc01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyLmdldCgpOwogfQogCiBjbGFzcyBXZWFrVmFsdWVSZWYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggYTFlMDlhOC4uZWJiY2NjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTYtMDEtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTAorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyOTAyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICBNb3N0bHkg
bWVjaGFuaWNhbCBjb252ZXJzaW9uIHRvIE5ldmVyRGVzdHJveWVkIHRocm91Z2hvdXQgSmF2YVNj
cmlwdENvcmUuCisKKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1tOgorICAgICAg
ICAoanNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIpOgorICAgICAgICAqIEFQSS9KU01hbmFn
ZWRWYWx1ZS5tbToKKyAgICAgICAgKG1hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24pOgorICAgICAgICAqIGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RGVtYW5kRXhlY3V0YWJs
ZUFsbG9jYXRvcjo6YWxsb2NhdG9ycyk6CisKIDIwMTYtMDEtMDYgIEFuZHkgVmFuV2Fnb25lciAg
PHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBEYXRlLnByb3RvdHlw
ZSBzaG91bGQgYmUgYSBwbGFpbiBvYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggZWM3N2E3NC4uODNkN2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgog
I2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01Miw4ICs1Myw4IEBAIGNvbnN0
IGNoYXIqIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdyb3VwID0gImJh
Y2t0cmFjZSI7CiAvLyBjcmVhdGUgb2JqZWN0cyBpbiB0aGUgc2FtZSBncm91cC4KIHN0YXRpYyBT
dHJpbmcgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9p
bnRBY3Rpb24mIGFjdGlvbikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgQXRvbWljU3RyaW5nLCBvYmplY3RHcm91cCwgKCJicmVha3BvaW50LWFjdGlvbi0iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgcmV0dXJuIG1ha2VTdHJp
bmcob2JqZWN0R3JvdXAsIFN0cmluZzo6bnVtYmVyKGFjdGlvbi5pZGVudGlmaWVyKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gb2JqZWN0R3JvdXAoQVNDSUlMaXRlcmFsKCJi
cmVha3BvaW50LWFjdGlvbi0iKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcob2JqZWN0R3JvdXAu
Z2V0KCksIFN0cmluZzo6bnVtYmVyKGFjdGlvbi5pZGVudGlmaWVyKSk7CiB9CiAKIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoQWdlbnRDb250ZXh0JiBjb250
ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRv
ci5jcHAKaW5kZXggZDI5MTFhMy4uN2FiYWViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCkBAIC0xMzQsOCArMTM0LDggQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8UGFnZVJlc2VydmF0aW9uLCAxNj4gcmVzZXJ2YXRpb25zOwogICAg
IHN0YXRpYyBIYXNoU2V0PERlbWFuZEV4ZWN1dGFibGVBbGxvY2F0b3IqPiYgYWxsb2NhdG9ycygp
CiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxE
ZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yKj4sIHNBbGxvY2F0b3JzLCAoKSk7Ci0gICAgICAgIHJl
dHVybiBzQWxsb2NhdG9yczsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8
RGVtYW5kRXhlY3V0YWJsZUFsbG9jYXRvcio+PiBzZXQ7CisgICAgICAgIHJldHVybiBzZXQ7CiAg
ICAgfQogCiAgICAgc3RhdGljIFN0YXRpY0xvY2smIGFsbG9jYXRvcnNNdXRleCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI2
ODI0MmYuLmI4ZDkwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDEtMDggIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBp
bnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTAorICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTUyOTAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJs
c3Nvbi4KKworICAgICAgICBNb3N0bHkgbWVjaGFuaWNhbCBjb252ZXJzaW9uIHRvIE5ldmVyRGVz
dHJveWVkIHRocm91Z2hvdXQgV1RGLgorCisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRo
cmVhZHMuY3BwOgorICAgICAgICAoV1RGOjp0aHJlYWRNYXBNdXRleCk6CisgICAgICAgIChXVEY6
OnRocmVhZE1hcCk6CisKIDIwMTYtMDEtMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFsbG93IHRvIHNhdmUgYW5kIHJlc3RvcmUg
c2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wLmNwcAppbmRleCBlMzUyOTBkLi43MDFjMThkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxv
b3AuaCIKIAorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KIApAQCAtNTYs
OCArNTcsOCBAQCB2b2lkIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpCiAKIFJ1bkxv
b3AmIFJ1bkxvb3A6OmN1cnJlbnQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChXVEY6OlRocmVhZFNwZWNpZmljPFJ1bkxvb3A6OkhvbGRlcj4sIHJ1bkxvb3BIb2xkZXIs
ICgpKTsKLSAgICByZXR1cm4gcnVuTG9vcEhvbGRlci0+cnVuTG9vcCgpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzxIb2xkZXI+PiBydW5Mb29wSG9sZGVyOworICAg
IHJldHVybiBydW5Mb29wSG9sZGVyLmdldCgpLT5ydW5Mb29wKCk7CiB9CiAKIFJ1bkxvb3AmIFJ1
bkxvb3A6Om1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVh
ZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IGE5N2Nm
MzIuLjcwNWYzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRz
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbmNsdWRlICJUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgiCiAjaW5j
bHVkZSAiVGhyZWFkU3BlY2lmaWMuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SYXdQb2ludGVyLmg+CiAj
aW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtOTks
NyArMTAwLDcgQEAgdm9pZCB0aHJlYWRXYXNKb2luZWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIHN0
YXRpYyBNdXRleCYgdGhyZWFkTWFwTXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChNdXRleCwgbXV0ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
TXV0ZXg+IG11dGV4OwogICAgIHJldHVybiBtdXRleDsKIH0KIApAQCAtMTI1LDcgKzEyNiw3IEBA
IHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAKIHN0YXRpYyBUaHJlYWRNYXAmIHRocmVhZE1h
cCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRocmVhZE1hcCwgbWFw
LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRocmVhZE1hcD4gbWFwOwogICAgIHJl
dHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYzdlMmNmLi4wZTNhMjYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTI0IEBACisyMDE2LTAxLTA4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KKworICAgICAgICBVc2UgTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCBvZiBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1
MjkwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAg
TW9zdGx5IG1lY2hhbmljYWwgY29udmVyc2lvbiB0byBOZXZlckRlc3Ryb3llZCB0aHJvdWdob3V0
IFdlYkNvcmUuCisKKyAgICAgICAgKiBNb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmRpcmVjdGlvbk5leHRVbmlxdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246Om1vZGVSZWFkT25seSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
bW9kZVJlYWRXcml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVZl
cnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om1vZGVSZWFk
T25seUxlZ2FjeSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRX
cml0ZUxlZ2FjeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UmVxdWVzdDo6cmVhZHlTdGF0ZSk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Om9wZW5LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU291cmNlOjpjbG9zZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjplbmRlZEtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVh
bUVuZGVkV2l0aEVycm9yKToKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpxdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudDo6c3VwcG9ydHNNaW1lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudDo6c3VwcG9ydHNGaWxlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3lu
dGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9w
ZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUpOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKToK
KyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFJlc29s
dXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNl
QXV0aG9yU3R5bGVTaGVldCk6CisgICAgICAgICogZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjdW11bGF0b3JNYXApOgorICAgICAgICAqIGRvbS9E
T01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1N1cHBvcnRlZFNWRzEw
RmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjppc1N1cHBvcnRlZFNWRzExRmVhdHVyZSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpy
ZWFkeVN0YXRlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0KToKKyAgICAgICAgKiBkb20vRXZlbnREaXNw
YXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hT
aW11bGF0ZWRDbGljayk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ1NTQ29udGVudFR5cGUpOgorICAgICAgICAqIGRv
bS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjdGl2ZU11dGF0aW9u
T2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OnN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJz
KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuY3BwOgorICAgICAgICAqIGRvbS9Qc2V1
ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBzZXVkb0VsZW1lbnRUYWdOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZl
bnRzKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpxdWFsaWZpZWROYW1lQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6bnVsbFFOYW1lKToKKyAg
ICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0xlZ2Fj
eVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
bGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZVNwYW5DbGFzc1N0cmluZyk6CisgICAg
ICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
YXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlRWxlbWVudCk6CisgICAgICAgICog
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0ludGVyY2hhbmdlTmV3bGluZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5n
ZUNvbnZlcnRlZFNwYWNlU3Bhbik6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpub25CcmVha2luZ1NwYWNlU3RyaW5nKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVs
YXRvcjo6c3R5bGVOb2RlQ2xvc2VUYWcpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3Vw
SW50ZXJuYWwpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KToKKyAgICAgICAgKiBodG1sL0Jhc2VDaG9vc2Vy
T25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaG9v
c2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAg
ICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL0RhdGVUaW1lSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFu
Z2UpOgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgorICAg
ICAgICAqIGh0bWwvRW1haWxJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxp
ZEVtYWlsQWRkcmVzcyk6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtS2V5R2VuZXJhdG9yOjpmb3JtS2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OmZvcm1TdGF0ZVNpZ25hdHVyZSk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyb290RWRpdGFibGVFbGVtZW50TWFwKToKKyAgICAg
ICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxC
dXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Ojpm
b3JtQ29udHJvbFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRpbmdEaXNhYmxlcjo6ZGlzYWJsZWRTdWJ0
cmVlUm9vdHMpOgorICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAg
ICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGlua0xvYWRF
dmVudFNlbmRlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRvY3VtZW50VG9FbGVtZW50U2V0TWFwKToKKyAgICAgICAgKiBodG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVjb2duaXplZFRhZ05h
bWUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUpOgorICAgICAgICAq
IGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1
dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRz
KToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dGl0bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1YnRpdGxlVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92
ZXJsYXkpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSk6CisgICAgICAgICog
aHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2
ZW50U2VuZGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRpcmVjdGlvblN0cmluZyk6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgor
ICAgICAgICAqIGh0bWwvSW5wdXRUeXBlTmFtZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRUeXBlTmFtZXM6OmJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6
Y2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0VHlwZU5hbWVzOjpkYXRldGltZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVO
YW1lczo6ZGF0ZXRpbWVsb2NhbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6
ZW1haWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OmhpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGVOYW1lczo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6
Om1vbnRoKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpudW1iZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZU5hbWVzOjpyYWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGVO
YW1lczo6cmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlTmFtZXM6OnJlc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjpzZWFyY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGVOYW1lczo6dGVsZXBob25lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp0aW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZU5hbWVzOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRU
eXBlTmFtZXM6OndlZWspOgorICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKHBsYXliYWNrU3RhdGVXYWl0aW5nKToKKyAgICAgICAgKHBsYXliYWNrU3RhdGVQbGF5
aW5nKToKKyAgICAgICAgKHBsYXliYWNrU3RhdGVFbmRlZCk6CisgICAgICAgICogaHRtbC9Nb250
aElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb250aElucHV0VHlwZTo6Y3JlYXRl
U3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL051bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICog
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlw
ZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL1N0ZXBSYW5nZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFjY2VwdGFibGVFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JTdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
ZXBSYW5nZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAg
ICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lu
cHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVw
ZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVkaWFDb250cm9sVGltZVJlbWFp
bmluZ0Rpc3BsYXlFbGVtZW50U2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudFNoYWRvd1BzZXVkb0lkKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWV0ZXJJbm5lckVsZW1lbnQ6Ok1ldGVySW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1ldGVyVmFsdWVFbGVtZW50Ojp2YWx1ZVBzZXVkb0lkKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2xpZGVyVGh1bWJTaGFkb3dQ
c2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjptZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRv
SWQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1h
aW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlv
bktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdv
cmQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2s6OmNhcHRpb25zS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmRl
c2NyaXB0aW9uc0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpjaGFwdGVy
c0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjptZXRhZGF0YUtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpmb3JjZWRLZXl3b3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFjazo6ZGlzYWJsZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFjazo6aGlkZGVuS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OnNob3dpbmdLZXl3b3JkKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQc2V1ZG9JZCk6CisgICAg
ICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRLZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Om1pZGRsZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZW5kS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpsZWZ0S2V5d29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpyaWdodEtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6dmVydGljYWxHcm93
aW5nTGVmdEtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6dmVydGljYWxHcm93aW5nUmlnaHRL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNl
dWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVk
b0lkKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svVlRUUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJl
Z2lvbjo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6c2V0U2Nyb2xsKToK
KyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6VlRUUmVnaW9uOjp0ZXh0VHJhY2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFz
cyk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
azo6bWFpbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2lnbktleXdv
cmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCk6CisgICAgICAg
ICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVU
eXBlVG9UYWdOYW1lKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRQYXJzZXI6OmNvbGxlY3RNZXRhZGF0YUhlYWRlcik6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVQc2V1ZG9D
bGFzc01hc2spOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9y
L1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFn
ZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgor
ICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJldmVudGVkTG9hZCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmluaXRpYXRvck5hbWUpOgorICAgICAgICAqIGxvYWRlci9p
Y29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRl
ZmF1bHREYXRhYmFzZUZpbGVuYW1lKToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXBk
YXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91bmRDU1MpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MpOgor
ICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2YVNjcmlwdFVSTHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUpOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NX
aXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c1dpdGhC
ZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Zm9jdXNEaXJlY3Rpb25Gb3JLZXkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAg
KiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmFz
ZTo6cGxhdGZvcm0pOgorICAgICAgICAqIHBhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwYWdlVmlzaWJpbGl0eVN0YXRlU3RyaW5nKToKKyAgICAgICAgKiBw
YWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9yaWdpbkFjY2Vzc01h
cCk6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZSk6CisgICAgICAgICogcGFnZS9h
bmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hh
ZG93Rm9yQmxlbmRpbmcpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1h
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtl
eWZyYW1lQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnBvaW50ZXJDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpt
b3ZlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsVGV4dEN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpjZWxsQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmFsaWFzQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6Onpvb21JbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjp6b29tT3V0Q3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvcHlDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9uZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpwcm9ncmVzc0N1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
Ojpub0Ryb3BDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm90QWxsb3dlZEN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjppQmVhbUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjp3YWl0Q3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OmhlbHBDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
ZWFzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aFJlc2l6ZUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpub3J0aEVhc3RSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6bm9ydGhXZXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnNvdXRoUmVz
aXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnNvdXRoRWFzdFJlc2l6ZUN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzb3V0aFdlc3RSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6d2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aFNvdXRoUmVzaXpl
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVhc3RXZXN0UmVzaXplQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6Om5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29sdW1uUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnJvd1Jlc2l6ZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjptaWRkbGVQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OmVhc3RQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoUGFubmlu
Z0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aEVhc3RQYW5uaW5nQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6Om5vcnRoV2VzdFBhbm5pbmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c291dGhQYW5uaW5nQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnNvdXRoRWFzdFBhbm5p
bmdDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6c291dGhXZXN0UGFubmluZ0N1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjp3ZXN0UGFubmluZ0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpn
cmFiQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmdyYWJiaW5nQ3Vyc29yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRMYW5n
dWFnZXNPdmVycmlkZSk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjptZWRpYU1JTUVUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSk6
CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bG9jYWxVUkxTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BsYXlJc29sYXRlZFVS
TFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2VjdXJlU2NoZW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6ZW1w
dHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2NoZW1lc0ZvcmJpZGRlbkZy
b21Eb21haW5SZWxheGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkRpc3BsYXlPbmx5SWZD
YW5SZXF1ZXN0U2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpub3RBbGxvd2luZ0phdmFzY3Jp
cHRVUkxzU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVzQWxsb3dpbmdMb2NhbFN0
b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyk6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVz
QWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkNPUlNFbmFibGVkU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dGhlbWUpOgorICAg
ICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGFua1VSTCk6Cisg
ICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb246OmluaXRpYWxOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9B
dWRpb1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRT
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldENvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXNGb3JTdWJqZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphdWRpb0Rlc3RpbmF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBhaW50UmVjdE1hcCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9u
T2N0ZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFBsYWluKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF5ZXJUb1ByaXZhdGVN
YXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OmVmZmVjdE5hbWUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3Jl
OjptaW1lQ29tbW9uVHlwZXNDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjptaW1lTW9kZXJuVHlw
ZXNDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxl
ck1lbW9yeUhhbmRsZXJJT1MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGlsZUNvbnRyb2xsZXJN
ZW1vcnlIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFn
ZXIubW06CisgICAgICAgICgrW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIHNoYXJlZE1hbmFnZXJdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dXBk
YXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9i
c2VydmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYlRocmVhZEdldE9ic2VydmVkQ29udGVudE1vZGlm
aWVycyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmZvbnRGcm9tTlNGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVRoZW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW06CisgICAgICAgIChXZWJDb3JlUmVwb3J0VGhyZWFkVmlv
bGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpwbGF0Zm9ybUNlbnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUcmFj
a0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6dHlwZSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZVhTU1Byb3RlY3Rpb25IZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpblJlc291cmNlSGFuZGxlQ29u
c3RydWN0b3JNYXApOgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpblJlc291cmNlSGFuZGxlU3lu
Y2hyb25vdXNMb2FkZXJNYXApOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlSG9zdHMpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpZW50Q2VydHMpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTo6Z2V0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2ZMb2NhbGVD
YWNoZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y291bnRlck1hcHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhlbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXN0b21Gb2N1c1JpbmdDb2xvcik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRN
YXApOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjp6ZXJvTGVuZ3RoTGluZWNhcFBhdGgp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vblNjYWxpbmdTdHJva2VQYXRoKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcHBlckZpbHRlck1hc2tl
clRhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyVGFncyk6CisgICAgICAgIChXZWJDb3Jl
OjpmaWxsQW5kU3Ryb2tlVGFncyk6CisgICAgICAgIChXZWJDb3JlOjpjaGFpbmFibGVSZXNvdXJj
ZVRhZ3MpOgorICAgICAgICAqIHN2Zy9TVkdBbmdsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmdsZTo6dmFsdWVBc1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xv
cik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3RhdGVNb2RlKToKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRpb25FbGVtZW50OjpzZXRDYWxjTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRp
b25FbGVtZW50OjpzZXRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
RWxlbWVudDo6aXNBY2N1bXVsYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjppbmhlcml0c0Zyb21Q
cm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0
TGVuZ3RoWElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6b3JkZXJYSWRlbnRpZmllcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6b3JkZXJZSWRlbnRpZmllcik6
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhY
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxl
bWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVE
cm9wU2hhZG93RWxlbWVudDo6c3RkRGV2aWF0aW9uWUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2
Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50OjpzdGREZXZpYXRpb25YSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN0ZERldmlhdGlvbllJZGVudGlmaWVy
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpyYWRpdXNYSWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpyYWRpdXNZSWRlbnRpZmllcik6
CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0
aFhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNl
RWxlbWVudDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJhc2VGcmVxdWVuY3lZSWRlbnRpZmllcik6CisgICAgICAg
ICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVy
RWxlbWVudDo6ZmlsdGVyUmVzWElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyRWxlbWVudDo6ZmlsdGVyUmVzWUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2Zy9TVkdHbHlw
aE1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR2x5cGhNYXA6OnN2Z0dseXBoRm9yR2x5cGgp
OgorICAgICAgICAqIHN2Zy9TVkdMYW5nU3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGFuZ1NwYWNlOjp4bWxzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OmFk
ZFN1cHBvcnRlZEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudEFuZ2xlSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6
ZU9yaWVudFR5cGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1N0eWxlRWxlbWVudDo6bWVkaWEpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFy
c2luZyk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1ZpZXdTcGVjOjp2aWV3Qm94SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdW
aWV3U3BlYzo6cHJlc2VydmVBc3BlY3RSYXRpb0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVmlld1NwZWM6OnRyYW5zZm9ybUlkZW50aWZpZXIpOgorICAgICAgICAqIHN2Zy9hbmlt
YXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1l
bnQ6OnBhcnNlQ2xvY2tWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6
OnJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OmZpbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnJlcGVhdENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpub3RpZnlEZXBlbmRlbnRzSW50ZXJ2YWxDaGFuZ2VkKToK
KwogMjAxNi0wMS0wNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IHNob3dSZW5kZXJUcmVlOiBhZGQgaW5saW5lLWJsb2NrL2lubGluZS9ibG9jayBjb2x1bW4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBs
YXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKaW5kZXggNGFlNDI3
ZC4uOGRjMDgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
LmNwcApAQCAtMjYsMTQgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oIgogCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0
cmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5KGJvb2wgYXZhaWxhYmxlKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGF2YWlsYWJsZVN0
cmluZywgKCJhdmFpbGFibGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbm90QXZh
aWxhYmxlU3RyaW5nLCAoIm5vdC1hdmFpbGFibGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXZh
aWxhYmxlU3RyaW5nKCJhdmFpbGFibGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBub3RBdmFpbGFi
bGVTdHJpbmcoIm5vdC1hdmFpbGFibGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKIAogICAgIHJldHVybiBhdmFpbGFibGUgPyBhdmFpbGFibGVTdHJpbmcgOiBub3RBdmFp
bGFibGVTdHJpbmc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmNwcAppbmRleCA4NjM4MGUxLi4wMzY2MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0zOCwyNSArMzksMjUgQEAgSURCQ3Vyc29yOjpJREJDdXJzb3IoKQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmV4dCwgKCJuZXh0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5leHQoIm5leHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gbmV4dDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6
OmRpcmVjdGlvbk5leHRVbmlxdWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG5leHR1bmlxdWUsICgibmV4dHVuaXF1ZSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBuZXh0dW5pcXVlKCJuZXh0dW5pcXVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5leHR1bmlxdWU7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2KCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwcmV2LCAoInByZXYiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gcHJldigicHJldiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiBwcmV2OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNv
cjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgcHJldnVuaXF1ZSwgKCJwcmV2dW5pcXVlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IHByZXZ1bmlxdWUoInByZXZ1bmlxdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcHJldnVuaXF1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4
IDUxNzA3NzcuLjI1OWZiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwz
MSArNDAsMzEgQEAgSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246
Om1vZGVSZWFkT25seSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgcmVhZG9ubHksICgicmVhZG9ubHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
cmVhZG9ubHkoInJlYWRvbmx5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIHJlYWRvbmx5OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5z
YWN0aW9uOjptb2RlUmVhZFdyaXRlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCByZWFkd3JpdGUsICgicmVhZHdyaXRlIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IHJlYWR3cml0ZSgicmVhZHdyaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlYWR3cml0ZTsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVZlcnNpb25DaGFuZ2UoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHZlcnNpb25jaGFuZ2UsICgidmVy
c2lvbmNoYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB2ZXJzaW9uY2hhbmdlKCJ2ZXJzaW9u
Y2hhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IHZlcnNpb25jaGFuZ2U7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246
Om1vZGVSZWFkT25seUxlZ2FjeSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgcmVhZG9ubHksICgiMCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBy
ZWFkb25seSgiMCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiByZWFkb25seTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6
bW9kZVJlYWRXcml0ZUxlZ2FjeSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgcmVhZHdyaXRlLCAoIjEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
cmVhZHdyaXRlKCIxIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIHJlYWR3cml0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwCmluZGV4IDhiMmYyMGQuLmJm
Y2RkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2Fj
eS9MZWdhY3lSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZWdhY3kvTGVnYWN5UmVxdWVzdC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNSwxMyArMTM2LDEzIEBAIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gTGVnYWN5UmVxdWVzdDo6dHJhbnNhY3Rpb24oKSBjb25zdAogY29uc3QgU3RyaW5nJiBM
ZWdhY3lSZXF1ZXN0OjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0
YXRlID09IElEQlJlcXVlc3RSZWFkeVN0YXRlOjpQZW5kaW5nIHx8IG1fcmVhZHlTdGF0ZSA9PSBJ
REJSZXF1ZXN0UmVhZHlTdGF0ZTo6RG9uZSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgcGVuZGluZywgKCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGRvbmUsICgiZG9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBwZW5k
aW5nKCJwZW5kaW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZG9uZSgiZG9uZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBJ
REJSZXF1ZXN0UmVhZHlTdGF0ZTo6UGVuZGluZykKLSAgICAgICAgcmV0dXJuIHBlbmRpbmc7Cisg
ICAgICAgIHJldHVybiBwZW5kaW5nLmdldCgpOwogCi0gICAgcmV0dXJuIGRvbmU7CisgICAgcmV0
dXJuIGRvbmUuZ2V0KCk7CiB9CiAKIHZvaWQgTGVnYWN5UmVxdWVzdDo6bWFya0Vhcmx5RGVhdGgo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlh
Q29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggODdiYzM4Mi4uZjhmM2VlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9s
c0hvc3QuY3BwCkBAIC00NSwxOSArNDUsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBh
dXRvbWF0aWMsICgiYXV0b21hdGljIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGF1dG9t
YXRpYygiYXV0b21hdGljIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIGF1dG9tYXRpYzsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRy
b2xzSG9zdDo6Zm9yY2VkT25seUtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZvcmNlZE9uLCAoImZvcmNlZC1vbmx5Iiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZvcmNlZE9uKCJmb3JjZWQtb25seSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBmb3JjZWRPbjsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6YWx3YXlzT25LZXl3b3Jk
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBhbHdheXNPbiwgKCJhbHdheXMtb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4g
YWx3YXlzT24oImFsd2F5cy1vbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBhbHdheXNPbjsKIH0KIApAQCAtMjMwLDEyICsyMzAsMTIgQEAgU3RyaW5n
IE1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZURpc3BsYXlOYW1lKCkgY29uc3QKIAog
U3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUoKSBjb25zdAogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5vbmUsIChBU0NJSUxp
dGVyYWwoIm5vbmUiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IG5vbmUo
QVNDSUlMaXRlcmFsKCJub25lIikpOwogICAgIFN0cmluZyB0eXBlID0gbm9uZTsKICAgICAKICNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGFpcnBsYXksIChBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSkp
OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHR2b3V0LCAoQVND
SUlMaXRlcmFsKCJ0dm91dCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
YWlycGxheShBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKTsKICAgICAKICAgICBNZWRp
YVBsYXllciogcGxheWVyID0gbV9tZWRpYUVsZW1lbnQtPnBsYXllcigpOwogICAgIGlmICghcGxh
eWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCmluZGV4IDRlMTI1NDMuLjgyOWQxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC05NSwxOSArOTUsMTkg
QEAgTWVkaWFTb3VyY2U6On5NZWRpYVNvdXJjZSgpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVk
aWFTb3VyY2U6Om9wZW5LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcGVuLCAoIm9wZW4iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gb3Blbigib3BlbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiBvcGVuOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291
cmNlOjpjbG9zZWRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBjbG9zZWQsICgiY2xvc2VkIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IGNsb3NlZCgiY2xvc2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNsb3NlZDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYVNvdXJjZTo6ZW5kZWRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBlbmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9CiAKQEAgLTQ0MCw4ICs0NDAsOCBAQCB2
b2lkIE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShjb25zdCBBdG9taWNTdHJpbmcmIGVycm9yLCBF
eGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJy
b3IoY29uc3QgQXRvbWljU3RyaW5nJiBlcnJvciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbmV0d29y
aywgKCJuZXR3b3JrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRlY29k
ZSwgKCJkZWNvZGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbmV0d29yaygibmV0d29y
ayIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRlY29kZSgiZGVjb2RlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBMT0coTWVkaWFTb3VyY2UsICJNZWRp
YVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3IoJXApIDogJXMiLCB0aGlzLCBlcnJvci5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCBhYThi
MDUyLi41ZTE0NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC02Niw3ICs2Niw3IEBA
IHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0
YWRhdGFJdGVtVHlwZSAqLCBKU0NvbnRlCiAKIHN0YXRpYyBTdHJpbmcgcXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnRTY3JpcHQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHNjcmlwdCwgKFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCwg
c2l6ZW9mKFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCkpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3JpcHQoUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnRKYXZhU2NyaXB0LCBzaXplb2YoUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRKYXZhU2NyaXB0
KSk7CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApAQCAtODksMTMgKzg5LDEzIEBAIGJvb2wgUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKICAgICAgICAgImF1ZGlvL3gtbTRyIiwgImF1ZGlvL3gtbXAzIiwgImF1ZGlvL3gt
bXBlZyIsICJhdWRpby94LW1wZWczIiwgImF1ZGlvL3gtbXBlZ3VybCIsICJhdWRpby94LXNjcGxz
IiwgImF1ZGlvL3gtd2F2IiwKICAgICAgICAgInZpZGVvLzNncHAiLCAidmlkZW8vM2dwcDIiLCAi
dmlkZW8vbXA0IiwgInZpZGVvL3F1aWNrdGltZSIsICJ2aWRlby94LW00diIKICAgICB9OwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4sIHR5cGVIYXNo
LCAoKSk7Ci0gICAgaWYgKCF0eXBlSGFzaC5zaXplKCkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB0eXBlSGFzaDsKKyAgICBpZiAoIXR5cGVIYXNoLmdldCgp
LnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgodHlwZXMpOyArK2kpCi0gICAgICAgICAgICB0eXBlSGFzaC5hZGQodHlwZXNbaV0pOworICAg
ICAgICAgICAgdHlwZUhhc2guZ2V0KCkuYWRkKHR5cGVzW2ldKTsKICAgICB9CiAKLSAgICByZXR1
cm4gdHlwZUhhc2guY29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiB0eXBlSGFzaC5nZXQo
KS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTEw
NSwxMyArMTA1LDEzIEBAIGJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRz
RmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKICAgICAgICAgIm0zdTgiLCAi
bTRhIiwgIm00YiIsICJtNHAiLCAibTRyIiwgIm00diIsICJtb3YiLCAibXAzIiwgIm1wMyIsICJt
cDQiLCAibXBlZyIsICJtcGciLCAibXF2IiwgInBscyIsICJxdCIsCiAgICAgICAgICJzbmQiLCAi
c3dhIiwgInRzIiwgInVsdyIsICJ3YXYiCiAgICAgfTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBleHRlbnNpb25IYXNoLCAoKSk7Ci0gICAgaWYg
KCFleHRlbnNpb25IYXNoLnNpemUoKSkgeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
U2V0PFN0cmluZz4+IGV4dGVuc2lvbkhhc2g7CisgICAgaWYgKCFleHRlbnNpb25IYXNoLmdldCgp
LnNpemUoKSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgoZXh0ZW5zaW9ucyk7ICsraSkKLSAgICAgICAgICAgIGV4dGVuc2lvbkhhc2guYWRkKGV4dGVu
c2lvbnNbaV0pOworICAgICAgICAgICAgZXh0ZW5zaW9uSGFzaC5nZXQoKS5hZGQoZXh0ZW5zaW9u
c1tpXSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGV4dGVuc2lvbkhhc2guY29udGFpbnMoZXh0ZW5z
aW9uKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9uSGFzaC5nZXQoKS5jb250YWlucyhleHRlbnNpb24p
OwogfQogCiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6UXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCmluZGV4IDdmYjEz
ZTguLjdmMTc1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNwZWVjaFN5bnRo
ZXNpc0V2ZW50LmgiCiAjaW5jbHVkZSAiU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTE5Miw4ICsxOTMsOCBAQCB2b2lkIFNw
ZWVjaFN5bnRoZXNpczo6aGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKiB1dHRlcmFuYwogICAgIAogdm9pZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZl
bnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1
dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgd29yZEJv
dW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ3b3JkIikpKTsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nLCAo
QVNDSUlMaXRlcmFsKCJzZW50ZW5jZSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IFN0cmluZz4gd29yZEJvdW5kYXJ5U3RyaW5nKEFTQ0lJTGl0ZXJhbCgid29yZCIpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBzZW50ZW5jZUJvdW5kYXJ5U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgic2VudGVuY2UiKSk7CiAKICAgICBzd2l0Y2ggKGJvdW5kYXJ5KSB7
CiAgICAgY2FzZSBTcGVlY2hXb3JkQm91bmRhcnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA5
MWJhMzEyLi41NGFjYjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTE4NCw4ICsxODQsOCBA
QCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFt
ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAgICAgU3RyaW5nIHN0cmluZ0ZvckNhY2hlID0g
U3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZyk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
Q1NTUHJvcGVydHlJbmZvPiBDU1NQcm9wZXJ0eUluZm9NYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5SW5mb01hcCwgcHJvcGVydHlJbmZvQ2FjaGUsICgp
KTsKLSAgICBwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0eUluZm9DYWNoZS5nZXQoc3RyaW5nRm9yQ2Fj
aGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDU1NQcm9wZXJ0eUluZm9NYXA+IHByb3Bl
cnR5SW5mb0NhY2hlOworICAgIHByb3BlcnR5SW5mbyA9IHByb3BlcnR5SW5mb0NhY2hlLmdldCgp
LmdldChzdHJpbmdGb3JDYWNoZSk7CiAgICAgaWYgKHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQog
ICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogCkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGlj
IENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmEKICAgICBpZiAocHJvcGVydHlJRCkgewogICAgICAgICBwcm9wZXJ0
eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGhhZFBpeGVsT3JQb3NQcmVmaXg7CiAgICAgICAg
IHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJv
cGVydHlJRCk7Ci0gICAgICAgIHByb3BlcnR5SW5mb0NhY2hlLmFkZChzdHJpbmdGb3JDYWNoZSwg
cHJvcGVydHlJbmZvKTsKKyAgICAgICAgcHJvcGVydHlJbmZvQ2FjaGUuZ2V0KCkuYWRkKHN0cmlu
Z0ZvckNhY2hlLCBwcm9wZXJ0eUluZm8pOwogICAgIH0KICAgICByZXR1cm4gcHJvcGVydHlJbmZv
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAppbmRleCA0NGY2NGI2Li5m
YWE4OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcApAQCAtNDUsNiAr
NDUsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBA
IC01Niw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIHN0YXRpYyBTdHJpbmcmIGds
b2JhbEV4Y2VwdGlvblN0cmluZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gZXhjZXB0aW9uU3RyOwogICAgIHJldHVybiBleGNlcHRpb25TdHI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggYzU1NzdiNy4uMjgzNGY2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhTGlzdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5Lmgi
CiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjg4LDEx
ICsyODksMTEgQEAgc3RhdGljIHZvaWQgYWRkUmVzb2x1dGlvbldhcm5pbmdNZXNzYWdlVG9Db25z
b2xlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW4KICAgICBBU1NFUlQoZG9jdW1lbnQp
OwogICAgIEFTU0VSVCh2YWx1ZSk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBtZWRpYVF1ZXJ5TWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiQ29uc2lkZXIgdXNp
bmcgJ2RwcHgnIHVuaXRzIGluc3RlYWQgb2YgJyVyZXBsYWNlbWVudFVuaXRzJScsIGFzIGluIENT
UyAnJXJlcGxhY2VtZW50VW5pdHMlJyBtZWFucyBkb3RzLXBlci1DU1MtJWxlbmd0aFVuaXQlLCBu
b3QgZG90cy1wZXItcGh5c2ljYWwtJWxlbmd0aFVuaXQlLCBzbyBkb2VzIG5vdCBjb3JyZXNwb25k
IHRvIHRoZSBhY3R1YWwgJyVyZXBsYWNlbWVudFVuaXRzJScgb2YgYSBzY3JlZW4uIEluIG1lZGlh
IHF1ZXJ5IGV4cHJlc3Npb246ICIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgbWVkaWFWYWx1ZURQSSwgKEFTQ0lJTGl0ZXJhbCgiZHBpIikpKTsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBtZWRpYVZhbHVlRFBDTSwgKEFT
Q0lJTGl0ZXJhbCgiZHBjbSIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgbGVuZ3RoVW5pdEluY2gsIChBU0NJSUxpdGVyYWwoImluY2giKSkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGxlbmd0aFVuaXRDZW50aW1ldGVy
LCAoQVNDSUlMaXRlcmFsKCJjZW50aW1ldGVyIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBtZWRpYVF1ZXJ5TWVzc2FnZShBU0NJSUxpdGVyYWwoIkNvbnNpZGVyIHVzaW5n
ICdkcHB4JyB1bml0cyBpbnN0ZWFkIG9mICclcmVwbGFjZW1lbnRVbml0cyUnLCBhcyBpbiBDU1Mg
JyVyZXBsYWNlbWVudFVuaXRzJScgbWVhbnMgZG90cy1wZXItQ1NTLSVsZW5ndGhVbml0JSwgbm90
IGRvdHMtcGVyLXBoeXNpY2FsLSVsZW5ndGhVbml0JSwgc28gZG9lcyBub3QgY29ycmVzcG9uZCB0
byB0aGUgYWN0dWFsICclcmVwbGFjZW1lbnRVbml0cyUnIG9mIGEgc2NyZWVuLiBJbiBtZWRpYSBx
dWVyeSBleHByZXNzaW9uOiAiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
bWVkaWFWYWx1ZURQSShBU0NJSUxpdGVyYWwoImRwaSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBtZWRpYVZhbHVlRFBDTShBU0NJSUxpdGVyYWwoImRwY20iKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbGVuZ3RoVW5pdEluY2goQVNDSUlMaXRlcmFs
KCJpbmNoIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGxlbmd0aFVuaXRD
ZW50aW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY2VudGltZXRlciIpKTsKIAogICAgIFN0cmluZyBtZXNz
YWdlOwogICAgIGlmICh2YWx1ZS0+aXNEb3RzUGVySW5jaCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCA2MGM1ZDM5Li4zZTMwMTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxlUnVsZUltcG9ydC5oIgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzE2LDExICszMTcsMTEg
QEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldChjb25zdCBD
YWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWQKIAogICAgIGlmIChtX3BhcnNlckNvbnRleHQubmVl
ZHNTaXRlU3BlY2lmaWNRdWlya3MgJiYgaXNTdHJpY3RQYXJzZXJNb2RlKG1fcGFyc2VyQ29udGV4
dC5tb2RlKSkgewogICAgICAgICAvLyBXb3JrIGFyb3VuZCA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI4MzUwPi4KLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQsIChB
U0NJSUxpdGVyYWwoIi8qIEtIVE1MIGZpeCBzdHlsZXNoZWV0ICovXG4vKiB3b3JrIGFyb3VuZCB0
aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXJzICovXG4jY29sdW1uLWNvbnRlbnQgeyBtYXJnaW4tbGVm
dDogMDsgfVxuXG4iKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3Ry
aW5nPiBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVTaGVldChBU0NJSUxpdGVyYWwoIi8qIEtIVE1M
IGZpeCBzdHlsZXNoZWV0ICovXG4vKiB3b3JrIGFyb3VuZCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxi
YXJzICovXG4jY29sdW1uLWNvbnRlbnQgeyBtYXJnaW4tbGVmdDogMDsgfVxuXG4iKSk7CiAgICAg
ICAgIC8vIFRoZXJlIGFyZSB0d28gdmFyaWFudHMgb2YgS0hUTUxGaXhlcy5jc3MuIE9uZSBpcyBl
cXVhbCB0byBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVTaGVldCwKICAgICAgICAgLy8gd2hpbGUg
dGhlIG90aGVyIGxhY2tzIHRoZSBzZWNvbmQgdHJhaWxpbmcgbmV3bGluZS4KLSAgICAgICAgaWYg
KGJhc2VVUkwoKS5zdHJpbmcoKS5lbmRzV2l0aCgiL0tIVE1MRml4ZXMuY3NzIikgJiYgIXNoZWV0
VGV4dC5pc051bGwoKSAmJiBtZWRpYVdpa2lLSFRNTEZpeGVzU3R5bGVTaGVldC5zdGFydHNXaXRo
KHNoZWV0VGV4dCkKLSAgICAgICAgICAgICYmIHNoZWV0VGV4dC5sZW5ndGgoKSA+PSBtZWRpYVdp
a2lLSFRNTEZpeGVzU3R5bGVTaGVldC5sZW5ndGgoKSAtIDEpCisgICAgICAgIGlmIChiYXNlVVJM
KCkuc3RyaW5nKCkuZW5kc1dpdGgoIi9LSFRNTEZpeGVzLmNzcyIpICYmICFzaGVldFRleHQuaXNO
dWxsKCkgJiYgbWVkaWFXaWtpS0hUTUxGaXhlc1N0eWxlU2hlZXQuZ2V0KCkuc3RhcnRzV2l0aChz
aGVldFRleHQpCisgICAgICAgICAgICAmJiBzaGVldFRleHQubGVuZ3RoKCkgPj0gbWVkaWFXaWtp
S0hUTUxGaXhlc1N0eWxlU2hlZXQuZ2V0KCkubGVuZ3RoKCkgLSAxKQogICAgICAgICAgICAgY2xl
YXJSdWxlcygpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGls
ZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRh
dGlvblNjb3BlLmNwcAppbmRleCAzMWU1ZjMxLi5mNmRlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCIKICNpbmNsdWRlICJNdXRhdGlv
blJlY29yZC5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVk
ZWYgSGFzaE1hcDxDb250YWluZXJOb2RlKiwgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcio+
IEFjY3VtdWxhdG9yTWFwOwogc3RhdGljIEFjY3VtdWxhdG9yTWFwJiBhY2N1bXVsYXRvck1hcCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEFjY3VtdWxhdG9yTWFwLCBt
YXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QWNjdW11bGF0b3JNYXA+IG1hcDsK
ICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9u
LmNwcAppbmRleCBmZTBiY2MxLi5mYWYyZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRl
ci5oIgogI2luY2x1ZGUgIlRleHREb2N1bWVudC5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04OCw3ICs4OSw3IEBAIHN0YXRpYyBib29s
IGlzU3VwcG9ydGVkU1ZHMTBGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkID0gZmFsc2U7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZl
YXR1cmVTZXQsIHN2Z0ZlYXR1cmVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZl
YXR1cmVTZXQ+IHN2Z0ZlYXR1cmVzOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICNpZiBFTkFC
TEUoU1ZHX0ZPTlRTKQogICAgICAgICBhZGRTdHJpbmcoc3ZnRmVhdHVyZXMsICJzdmciKTsKQEAg
LTEwOCw3ICsxMDksNyBAQCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzEwRmVhdHVyZShjb25z
dCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbgogICAgICAgICBpbml0aWFs
aXplZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmZWF0dXJlLnN0YXJ0c1dpdGgoIm9yZy53
M2MuIiwgZmFsc2UpCi0gICAgICAgICYmIHN2Z0ZlYXR1cmVzLmNvbnRhaW5zKGZlYXR1cmUucmln
aHQoZmVhdHVyZS5sZW5ndGgoKSAtIDgpKTsKKyAgICAgICAgJiYgc3ZnRmVhdHVyZXMuZ2V0KCku
Y29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gOCkpOwogfQogCiBzdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZFNWRzExRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNv
bnN0IFN0cmluZyYgdmVyc2lvbikKQEAgLTExNyw3ICsxMTgsNyBAQCBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZFNWRzExRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYg
dmVyc2lvbgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZCA9IGZhbHNlOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGZWF0dXJl
U2V0LCBzdmdGZWF0dXJlcywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGZWF0dXJl
U2V0PiBzdmdGZWF0dXJlczsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAgIC8vIFNh
ZGx5LCB3ZSBjYW5ub3QgY2xhaW0gdG8gaW1wbGVtZW50IGFueSBvZiB0aGUgU1ZHIDEuMSBnZW5l
cmljIGZlYXR1cmUgc2V0cwogICAgICAgICAvLyBsYWNrIG9mIEZvbnQgYW5kIEZpbHRlciBzdXBw
b3J0LgpAQCAtMTc1LDcgKzE3Niw3IEBAIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkU1ZHMTFGZWF0
dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uCiAgICAgICAg
IGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZlYXR1cmUuc3RhcnRzV2l0
aCgiaHR0cDovL3d3dy53My5vcmcvdHIvc3ZnMTEvZmVhdHVyZSMiLCBmYWxzZSkKLSAgICAgICAg
JiYgc3ZnRmVhdHVyZXMuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0g
MzUpKTsKKyAgICAgICAgJiYgc3ZnRmVhdHVyZXMuZ2V0KCkuY29udGFpbnMoZmVhdHVyZS5yaWdo
dChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKTsKIH0KIAogRE9NSW1wbGVtZW50YXRpb246OkRPTUlt
cGxlbWVudGF0aW9uKERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDI4NGU4NzcuLmQwNTYyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTc3LDYg
KzE3Nyw3IEBACiAjaW5jbHVkZSA8Y3RpbWU+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx5YXJyL1JlZ3VsYXJFeHBy
ZXNzaW9uLmg+CkBAIC0xMTE4LDkgKzExMTksOSBAQCBSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6
OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaQog
CiBTdHJpbmcgRG9jdW1lbnQ6OnJlYWR5U3RhdGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGxvYWRpbmcsIChBU0NJSUxpdGVyYWwo
ImxvYWRpbmciKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGludGVyYWN0aXZlLCAoQVNDSUlMaXRlcmFsKCJpbnRlcmFjdGl2ZSIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgY29tcGxldGUsIChB
U0NJSUxpdGVyYWwoImNvbXBsZXRlIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiBsb2FkaW5nKEFTQ0lJTGl0ZXJhbCgibG9hZGluZyIpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBpbnRlcmFjdGl2ZShBU0NJSUxpdGVyYWwoImlu
dGVyYWN0aXZlIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNv
bXBsZXRlKEFTQ0lJTGl0ZXJhbCgiY29tcGxldGUiKSk7CiAKICAgICBzd2l0Y2ggKG1fcmVhZHlT
dGF0ZSkgewogICAgIGNhc2UgTG9hZGluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5ODll
MTRlLi5lOGNiYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC04OSw2ICs4OSw3IEBACiAj
aW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjky
OCwyMSArMjkyOSwyMSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OndlYmtpdFJlZ2lv
bk92ZXJzZXQoKSBjb25zdAogewogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCB1bmRlZmluZWRTdGF0ZSwgKCJ1bmRlZmluZWQiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gdW5kZWZpbmVkU3RhdGUoInVuZGVmaW5lZCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICghZG9jdW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgp
IHx8ICFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKQogICAgICAgICByZXR1cm4gdW5kZWZpbmVk
U3RhdGU7CiAKICAgICBzd2l0Y2ggKHJlZ2lvbk92ZXJzZXRTdGF0ZSgpKSB7CiAgICAgY2FzZSBS
ZWdpb25GaXQ6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgZml0U3RhdGUsICgiZml0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaXRT
dGF0ZSgiZml0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAg
IHJldHVybiBmaXRTdGF0ZTsKICAgICB9CiAgICAgY2FzZSBSZWdpb25FbXB0eTogewotICAgICAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbXB0eVN0YXRl
LCAoImVtcHR5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbXB0eVN0YXRlKCJlbXB0eSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gZW1w
dHlTdGF0ZTsKICAgICB9CiAgICAgY2FzZSBSZWdpb25PdmVyc2V0OiB7Ci0gICAgICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG92ZXJmbG93U3RhdGUsICgi
b3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3ZlcmZsb3dTdGF0ZSgib3ZlcnNl
dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4g
b3ZlcmZsb3dTdGF0ZTsKICAgICB9CiAgICAgY2FzZSBSZWdpb25VbmRlZmluZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDM0MTg0N2YuLmQ1NGM2N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAi
VG91Y2hFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTIxMyw4ICsyMTQsOCBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFbGVtZW50KiBlbGVtZW50LCBFdmVudCogdW5kZXJseWlu
ZwogICAgIGlmIChlbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8RWxlbWVu
dCo+LCBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLCAoKSk7Ci0gICAgaWYgKCFl
bGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLmFkZChlbGVtZW50KS5pc05ld0VudHJ5
KQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEVsZW1lbnQqPj4gZWxlbWVudHNE
aXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrczsKKyAgICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdT
aW11bGF0ZWRDbGlja3MuZ2V0KCkuYWRkKGVsZW1lbnQpLmlzTmV3RW50cnkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChtb3VzZUV2ZW50T3B0aW9ucyA9PSBTZW5kTW91c2VPdmVyVXBEb3du
RXZlbnRzKQpAQCAtMjMwLDcgKzIzMSw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aFNpbXVsYXRlZENsaWNrKEVsZW1lbnQqIGVsZW1lbnQsIEV2ZW50KiB1bmRlcmx5aW5nCiAgICAg
Ly8gYWx3YXlzIHNlbmQgY2xpY2sKICAgICBkaXNwYXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRl
ZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZWxlbWVudC0+ZG9j
dW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5aW5nRXZlbnQsIGVsZW1lbnQpKTsKIAotICAg
IGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MucmVtb3ZlKGVsZW1lbnQpOworICAg
IGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MuZ2V0KCkucmVtb3ZlKGVsZW1lbnQp
OwogfQogCiBzdGF0aWMgdm9pZCBjYWxsRGVmYXVsdEV2ZW50SGFuZGxlcnNJblRoZUJ1YmJsaW5n
T3JkZXIoRXZlbnQmIGV2ZW50LCBjb25zdCBFdmVudFBhdGgmIHBhdGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCmluZGV4IDRjYWY2MmYuLjQxYTIwNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hl
ZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHROb2RlVHJhdmVyc2FsLmgiCisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTMsNyArMTE0LDcgQEAgdm9pZCBJbmxpbmVT
dHlsZVNoZWV0T3duZXI6OmNsZWFyU2hlZXQoKQogCiBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTQ29u
dGVudFR5cGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNz
c0NvbnRlbnRUeXBlLCAoInRleHQvY3NzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNz
c0NvbnRlbnRUeXBlKCJ0ZXh0L2NzcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIGlmICh0eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
cmV0dXJuIGVsZW1lbnQuaXNIVE1MRWxlbWVudCgpID8gZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwg
Y3NzQ29udGVudFR5cGUpIDogdHlwZSA9PSBjc3NDb250ZW50VHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBmYzE3MDhjLi44N2ZiYmJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNDUsMTMgKzE0NSwxMyBAQCB0eXBl
ZGVmIEhhc2hTZXQ8UmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+PiBNdXRhdGlvbk9ic2VydmVyU2V0
OwogCiBzdGF0aWMgTXV0YXRpb25PYnNlcnZlclNldCYgYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRhdGlvbk9ic2VydmVy
U2V0LCBhY3RpdmVPYnNlcnZlcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0
YXRpb25PYnNlcnZlclNldD4gYWN0aXZlT2JzZXJ2ZXJzOwogICAgIHJldHVybiBhY3RpdmVPYnNl
cnZlcnM7CiB9CiAKIHN0YXRpYyBNdXRhdGlvbk9ic2VydmVyU2V0JiBzdXNwZW5kZWRNdXRhdGlv
bk9ic2VydmVycygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGF0
aW9uT2JzZXJ2ZXJTZXQsIHN1c3BlbmRlZE9ic2VydmVycywgKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxNdXRhdGlvbk9ic2VydmVyU2V0PiBzdXNwZW5kZWRPYnNlcnZlcnM7CiAgICAg
cmV0dXJuIHN1c3BlbmRlZE9ic2VydmVyczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJl
Y29yZC5jcHAKaW5kZXggOTVmY2VjMi4uY2U0MWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25SZWNvcmQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJDaGFyYWN0ZXJEYXRh
LmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTE0NSwxOSArMTQ2LDE5IEBAIHByaXZhdGU6CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgQ2hpbGRMaXN0UmVjb3JkOjp0eXBlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGlsZExpc3QsICgiY2hpbGRMaXN0IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IGNoaWxkTGlzdCgiY2hpbGRMaXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNoaWxkTGlzdDsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBBdHRyaWJ1dGVzUmVjb3JkOjp0eXBlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhdHRyaWJ1dGVzLCAoImF0dHJpYnV0ZXMiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gYXR0cmlidXRlcygiYXR0cmlidXRlcyIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIENoYXJhY3RlckRhdGFSZWNvcmQ6OnR5cGUoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGNoYXJhY3RlckRhdGEs
ICgiY2hhcmFjdGVyRGF0YSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBjaGFyYWN0ZXJEYXRhKCJj
aGFyYWN0ZXJEYXRhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIGNoYXJhY3RlckRhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNw
cAppbmRleCBiMjQ5MjQxLi5jZjllYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQu
Y3BwCkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBRdWFs
aWZpZWROYW1lJiBwc2V1ZG9FbGVtZW50VGFnTmFtZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIG5hbWUsIChudWxsQXRvbSwgIjxwc2V1ZG8+
IiwgbnVsbEF0b20pKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4g
bmFtZShudWxsQXRvbSwgIjxwc2V1ZG8+IiwgbnVsbEF0b20pOwogICAgIHJldHVybiBuYW1lOwog
fQogCiBTdHJpbmcgUHNldWRvRWxlbWVudDo6cHNldWRvRWxlbWVudE5hbWVGb3JFdmVudHMoUHNl
dWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgYWZ0ZXIsIChBU0NJSUxpdGVyYWwoIjo6YWZ0ZXIiKSkpOwotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGJlZm9yZSwgKEFTQ0lJTGl0
ZXJhbCgiOjpiZWZvcmUiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJp
bmc+IGFmdGVyKEFTQ0lJTGl0ZXJhbCgiOjphZnRlciIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgU3RyaW5nPiBiZWZvcmUoQVNDSUlMaXRlcmFsKCI6OmJlZm9yZSIpKTsKICAg
ICBzd2l0Y2ggKHBzZXVkb0lkKSB7CiAgICAgY2FzZSBBRlRFUjoKICAgICAgICAgcmV0dXJuIGFm
dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IGZkNzliZGEuLjU2ZTRm
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvU3RhdGljQ29uc3RydWN0b3JzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCkBAIC03NCw3ICs3NSw3IEBAIHN0cnVjdCBRTmFtZUNvbXBvbmVudHNU
cmFuc2xhdG9yIHsKIAogc3RhdGljIGlubGluZSBRTmFtZVNldCYgcXVhbGlmaWVkTmFtZUNhY2hl
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUU5hbWVTZXQsIG5hbWVD
YWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRTmFtZVNldD4gbmFtZUNhY2hl
OwogICAgIHJldHVybiBuYW1lQ2FjaGU7CiB9CiAKQEAgLTExNSw3ICsxMTYsNyBAQCB2b2lkIFF1
YWxpZmllZE5hbWU6OmluaXQoKQogCiBjb25zdCBRdWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBudWxs
TmFtZSwgKG51bGxBdG9tLCBudWxsQXRvbSwgbnVsbEF0b20pKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbnVsbE5hbWUobnVsbEF0b20sIG51bGxBdG9tLCBudWxs
QXRvbSk7CiAgICAgcmV0dXJuIG51bGxOYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5jcHAKaW5kZXggNjNmNTkzZi4uMTg3OTFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
bGVtZW50LmNwcApAQCAtMTE5LDI0ICsxMTksMjQgQEAgc3RhdGljIGJvb2wgaXNMZWdhY3lTdXBw
b3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIAogICAgIC8v
IEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBIVE1MNSBjb21wbGlhbnQuIFRoZXNlIGJlbG9u
ZyBpbiB0aGUgTUlNRSByZWdpc3RyeSBhcyAidGV4dC9qYXZhc2NyaXB0PHZlcnNpb24+IiBlbnRy
aWVzLgogICAgIHR5cGVkZWYgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gTGFuZ3Vh
Z2VTZXQ7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKExhbmd1YWdlU2V0LCBs
YW5ndWFnZXMsICgpKTsKLSAgICBpZiAobGFuZ3VhZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBs
YW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFz
Y3JpcHQiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMCIpOwotICAgICAg
ICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS4xIik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQo
ImphdmFzY3JpcHQxLjIiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMyIp
OwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS40Iik7Ci0gICAgICAgIGxhbmd1
YWdlcy5hZGQoImphdmFzY3JpcHQxLjUiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNj
cmlwdDEuNiIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS43Iik7Ci0gICAg
ICAgIGxhbmd1YWdlcy5hZGQoImxpdmVzY3JpcHQiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgi
ZWNtYXNjcmlwdCIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqc2NyaXB0Iik7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPExhbmd1YWdlU2V0PiBsYW5ndWFnZXM7CisgICAgaWYgKGxhbmd1
YWdlcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2
YXNjcmlwdCIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0Iik7Cisg
ICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFzY3JpcHQxLjAiKTsKKyAgICAgICAgbGFu
Z3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuMSIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0
KCkuYWRkKCJqYXZhc2NyaXB0MS4yIik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImph
dmFzY3JpcHQxLjMiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEu
NCIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0MS41Iik7CisgICAg
ICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImphdmFzY3JpcHQxLjYiKTsKKyAgICAgICAgbGFuZ3Vh
Z2VzLmdldCgpLmFkZCgiamF2YXNjcmlwdDEuNyIpOworICAgICAgICBsYW5ndWFnZXMuZ2V0KCku
YWRkKCJsaXZlc2NyaXB0Iik7CisgICAgICAgIGxhbmd1YWdlcy5nZXQoKS5hZGQoImVjbWFzY3Jp
cHQiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmdldCgpLmFkZCgianNjcmlwdCIpOwogICAgIH0KIAot
ICAgIHJldHVybiBsYW5ndWFnZXMuY29udGFpbnMobGFuZ3VhZ2UpOworICAgIHJldHVybiBsYW5n
dWFnZXMuZ2V0KCkuY29udGFpbnMobGFuZ3VhZ2UpOwogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6
OmRpc3BhdGNoRXJyb3JFdmVudCgpCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBTY3JpcHRFbGVt
ZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAKICAgICBpZiAo
bV9yZXF1ZXN0VXNlc0FjY2Vzc0NvbnRyb2wgJiYgIW1fY2FjaGVkU2NyaXB0LT5wYXNzZXNTYW1l
T3JpZ2luUG9saWN5Q2hlY2soKm1fZWxlbWVudC5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkp
KSB7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwotICAgICAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgi
Q3Jvc3Mtb3JpZ2luIHNjcmlwdCBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2Ug
U2hhcmluZyBwb2xpY3kuIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4gc2NyaXB0IGxvYWQg
ZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAg
ICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
CmluZGV4IDcyZTNhZDQuLjdiODllMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiVGV4dE5vZGVU
cmF2ZXJzYWwuaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlICJodG1sZWRp
dGluZy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAg
LTYyLDcgKzYzLDcgQEAgc3RhdGljIGludCB0b0lkZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gdmFsdWUpCiAKIHN0YXRpYyBTdHJpbmcmIHN0eWxlU3BhbkNsYXNzU3RyaW5nKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzdHlsZVNwYW5DbGFzc1N0
cmluZywgKChBcHBsZVN0eWxlU3BhbkNsYXNzKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHN0eWxlU3BhbkNsYXNzU3RyaW5nKEFwcGxlU3R5bGVTcGFuQ2xhc3MpOwogICAg
IHJldHVybiBzdHlsZVNwYW5DbGFzc1N0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRleCBmOTY4MmE0Li5jMTM0MDYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtNDAsNiArNDAs
NyBAQAogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCiAj
aW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0yNTksOCArMjYwLDggQEAgYm9vbCBNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRk
TmFtZXNwYWNlRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIGlmIChwcmVmaXgu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zQXRv
bSk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB4bWxuc1dp
dGhDb2xvbiwgKEFTQ0lJTGl0ZXJhbCgieG1sbnM6IikpKTsKLSAgICByZXR1cm4gIWVsZW1lbnQu
aGFzQXR0cmlidXRlKHhtbG5zV2l0aENvbG9uICsgcHJlZml4KTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiB4bWxuc1dpdGhDb2xvbihBU0NJSUxpdGVyYWwoInhtbG5zOiIpKTsK
KyAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zV2l0aENvbG9uLmdldCgpICsg
cHJlZml4KTsKIH0KIAogYm9vbCBNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNl
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlLCBOYW1lc3BhY2VzJiBuYW1lc3Bh
Y2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAppbmRleCA3ODk3MmM3Li5lYjQxMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTA0LDE0ICsxMDQsMTQg
QEAgcHJpdmF0ZToKIAogc3RhdGljIGJvb2wgaXNJbnRlcmNoYW5nZU5ld2xpbmVOb2RlKGNvbnN0
IE5vZGUgKm5vZGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmcsIChBcHBsZUludGVyY2hhbmdlTmV3bGlu
ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGludGVyY2hhbmdlTmV3bGlu
ZUNsYXNzU3RyaW5nKEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsKICAgICByZXR1cm4gbm9kZSAm
JiBub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSAmJiAKICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29u
c3QgRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikgPT0gaW50ZXJjaGFu
Z2VOZXdsaW5lQ2xhc3NTdHJpbmc7CiB9CiAKIHN0YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VDb252
ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9kZSAqbm9kZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZywgKEFw
cGxlQ29udmVydGVkU3BhY2UpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBj
b252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZyhBcHBsZUNvbnZlcnRlZFNwYWNlKTsKICAgICBy
ZXR1cm4gbm9kZS0+aXNIVE1MRWxlbWVudCgpICYmIAogICAgICAgICAgICBzdGF0aWNfY2FzdDxj
b25zdCBIVE1MRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikgPT0gY29u
dmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuY3BwCmluZGV4IDMwNmY0YjIuLjJkN2FkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgYm9vbCBpc1RhYmxlU3RydWN0dXJl
Tm9kZShjb25zdCBOb2RlICpub2RlKQogCiBjb25zdCBTdHJpbmcmIG5vbkJyZWFraW5nU3BhY2VT
dHJpbmcoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5v
bkJyZWFraW5nU3BhY2VTdHJpbmcsICgmbm9CcmVha1NwYWNlLCAxKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygmbm9CcmVha1NwYWNl
LCAxKTsKICAgICByZXR1cm4gbm9uQnJlYWtpbmdTcGFjZVN0cmluZzsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCmluZGV4IDZkMzI2NTYuLmM3YWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKQEAgLTIxMyw4ICsyMTMsOCBAQCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxh
dG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFN0cmluZ0J1aWxkZXImIG91dCwgU3R5bGVQcgog
CiBjb25zdCBTdHJpbmcmIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRh
Zyhib29sIGlzQmxvY2spCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgZGl2Q2xvc2UsIChBU0NJSUxpdGVyYWwoIjwvZGl2PiIpKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2Us
IChBU0NJSUxpdGVyYWwoIjwvc3Bhbj4iKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IGRpdkNsb3NlKEFTQ0lJTGl0ZXJhbCgiPC9kaXY+IikpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHN0eWxlU3BhbkNsb3NlKEFTQ0lJTGl0ZXJh
bCgiPC9zcGFuPiIpKTsKICAgICByZXR1cm4gaXNCbG9jayA/IGRpdkNsb3NlIDogc3R5bGVTcGFu
Q2xvc2U7CiB9CiAKQEAgLTU3Nyw3ICs1NzcsNyBAQCBzdGF0aWMgTm9kZSogaGlnaGVzdEFuY2Vz
dG9yVG9XcmFwTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaAog
c3RhdGljIFN0cmluZyBjcmVhdGVNYXJrdXBJbnRlcm5hbChEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFJhbmdlJiByYW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsCiAgICAgRUFubm90YXRlRm9y
SW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywg
RUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcsIChB
U0NJSUxpdGVyYWwoIjxiciBjbGFzcz1cIiIgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUgIlwiPiIp
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gaW50ZXJjaGFuZ2VO
ZXdsaW5lU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiPGJyIGNsYXNzPVwiIiBBcHBsZUludGVyY2hhbmdl
TmV3bGluZSAiXCI+IikpOwogCiAgICAgYm9vbCBjb2xsYXBzZWQgPSByYW5nZS5jb2xsYXBzZWQo
KTsKICAgICBpZiAoY29sbGFwc2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggNmIwMzNi
MC4uMGY0Y2U5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02MSwxMSArNjIsMTAgQEAgdm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0
ZXJVUkwoY29uc3QgVVJMJiB1cmwpCiAKIFVSTFJlZ2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJl
Z2lzdHJ5KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQmxvYlVSTFJl
Z2lzdHJ5LCBpbnN0YW5jZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCbG9iVVJM
UmVnaXN0cnk+IGluc3RhbmNlOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotCiBCbG9iOjpC
bG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApp
bmRleCBhMzJhMGI3Li5hZGIwZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4LDcgKzU5LDcgQEAgdm9p
ZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVF
dmVudChFdmVudCopCiAKIHZvaWQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHZhbHVlQ29udGFpbmVyUHNldWRvLCAoIi13ZWJraXQtZGF0ZS1h
bmQtdGltZS12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB2YWx1ZUNvbnRhaW5lclBzZXVk
bygiLXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAKICAgICBSZWY8SFRNTERpdkVsZW1lbnQ+IHZhbHVlQ29udGFpbmVyID0g
SFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCkuZG9jdW1lbnQoKSk7CiAgICAgdmFsdWVD
b250YWluZXItPnNldFBzZXVkbyh2YWx1ZUNvbnRhaW5lclBzZXVkbyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCBiMWU4MjlkLi5iMzRmN2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1M
SW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5wdXRU
eXBlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC02MSw3ICs2Miw3IEBAIERhdGVDb21wb25lbnRzOjpUeXBlIERhdGVJ
bnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKIAogU3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6OmNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAoZGF0ZURlZmF1bHRTdGVwLCBkYXRlRGVmYXVs
dFN0ZXBCYXNlLCBkYXRlU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVw
UmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKGRhdGVEZWZhdWx0U3RlcCwg
ZGF0ZURlZmF1bHRTdGVwQmFzZSwgZGF0ZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJz
ZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpOwogCiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFz
ZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDAp
OwogICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVu
dHM6Om1pbmltdW1EYXRlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZVRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlw
ZS5jcHAKaW5kZXggYjJlZmU4NS4uYjI5NDUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
VGltZUlucHV0VHlwZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTYyLDcgKzYzLDcgQEAgRGVjaW1hbCBEYXRlVGltZUlucHV0VHlwZTo6ZGVmYXVs
dFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIERhdGVUaW1lSW5wdXRUeXBlOjpj
cmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVw
RGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKGRhdGVUaW1lRGVmYXVsdFN0ZXAsIGRhdGVU
aW1lRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpT
Y2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0ZXBEZXNjcmlwdGlvbihkYXRl
VGltZURlZmF1bHRTdGVwLCBkYXRlVGltZURlZmF1bHRTdGVwQmFzZSwgZGF0ZVRpbWVTdGVwU2Nh
bGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKTsKIAog
ICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0
R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKICAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFs
Ojpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjptaW5pbXVtRGF0ZVRpbWUoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKaW5kZXggNGE0Mzhm
My4uODIxYzgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2Fs
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1
dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNjgsNyArNjksNyBAQCB2b2lkIERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnNldFZhbHVlQXNE
YXRlKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbgogCiBTdGVwUmFuZ2UgRGF0
ZVRpbWVMb2NhbElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlT
dGVwSGFuZGxpbmcpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVwRGVzY3JpcHRpb24sIChkYXRl
VGltZUxvY2FsRGVmYXVsdFN0ZXAsIGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcEJhc2UsIGRhdGVU
aW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3RlcFZhbHVlU2hvdWxk
QmVJbnRlZ2VyKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6
U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVzY3JpcHRpb24oZGF0ZVRpbWVMb2NhbERlZmF1bHRTdGVw
LCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZUxvY2FsU3RlcFNjYWxlRmFj
dG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcik7CiAKICAgICBj
b25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0
dHJpYnV0ZShtaW5BdHRyKSwgMCk7CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJv
bURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11bURhdGVUaW1lKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXggZGFlMTc4Mi4uZTZlMDE5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNs
dWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVn
dWxhckV4cHJlc3Npb24uaD4KIApAQCAtNDQsMTAgKzQ1LDEwIEBAIHN0YXRpYyBib29sIGlzVmFs
aWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogICAgIGlmICghYWRkcmVzc0xl
bmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24sIHJlZ0V4cCwgKGVt
YWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiByZWdFeHAoZW1haWxQYXR0
ZXJuLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKIAogICAgIGludCBtYXRjaExlbmd0aDsKLSAgICBp
bnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAubWF0Y2goYWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsK
KyAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAuZ2V0KCkubWF0Y2goYWRkcmVzcywgMCwgJm1h
dGNoTGVuZ3RoKTsKIAogICAgIHJldHVybiAhbWF0Y2hPZmZzZXQgJiYgbWF0Y2hMZW5ndGggPT0g
YWRkcmVzc0xlbmd0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5k
ZXggYjBmM2E5Mi4uY2RjN2IxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5j
cHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTMzMyw3ICszMzQsNyBAQCBBdG9taWNTdHJpbmcgRm9ybUtleUdlbmVyYXRvcjo6
Zm9ybUtleShjb25zdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlJiBjbwogewogICAg
IEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IG93bmVyRm9ybUZvclN0YXRlKGNvbnRyb2wpOwogICAg
IGlmICghZm9ybSkgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBmb3JtS2V5Rm9yTm9Pd25lciwgKCJObyBvd25lciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gZm9ybUtleUZvck5vT3duZXIoIk5vIG93bmVyIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiBmb3JtS2V5Rm9yTm9Pd25lcjsK
ICAgICB9CiAgICAgRm9ybVRvS2V5TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fZm9ybVRvS2V5
TWFwLmZpbmQoZm9ybSk7CkBAIC0zODYsNyArMzg3LDcgQEAgc3RhdGljIFN0cmluZyBmb3JtU3Rh
dGVTaWduYXR1cmUoKQogICAgIC8vIEluIHRoZSBsZWdhY3kgdmVyc2lvbiBvZiBzZXJpYWxpemVk
IHN0YXRlLCB0aGUgZmlyc3QgaXRlbSB3YXMgYSBuYW1lCiAgICAgLy8gYXR0cmlidXRlIHZhbHVl
IG9mIGEgZm9ybSBjb250cm9sLiBUaGUgZm9sbG93aW5nIHN0cmluZyBsaXRlcmFsIHNob3VsZAog
ICAgIC8vIGNvbnRhaW4gc29tZSBjaGFyYWN0ZXJzIHdoaWNoIGFyZSByYXJlbHkgdXNlZCBmb3Ig
bmFtZSBhdHRyaWJ1dGUgdmFsdWVzLgotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHNpZ25hdHVyZSwgKEFTQ0lJTGl0ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJpYWxp
emVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxuXHI9JiIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gc2lnbmF0dXJlKEFTQ0lJTGl0ZXJhbCgiXG5ccj8lIFdlYktpdCBzZXJp
YWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA4IFxuXHI9JiIpKTsKICAgICByZXR1cm4gc2lnbmF0
dXJlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4
IDllYWVjZmQuLjQxOWE0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwCkBAIC02MTksNyArNjE5LDcgQEAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEhUTUxBbmNo
b3JFbGVtZW50KiwgUmVmUHRyPEVsZW1lbnQ+PiBSb290RWRpdGFibGVFbGVtZW50TWEKIAogc3Rh
dGljIFJvb3RFZGl0YWJsZUVsZW1lbnRNYXAmIHJvb3RFZGl0YWJsZUVsZW1lbnRNYXAoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChSb290RWRpdGFibGVFbGVtZW50TWFw
LCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Um9vdEVkaXRhYmxlRWxlbWVu
dE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QnV0dG9uRWxlbWVudC5jcHAKaW5kZXggMmU3M2RlZC4uZGY4ZTgzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTY1LDE1ICs2NSwxNSBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIEhUTUxCdXR0b25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAog
ewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAg
ICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBz
dWJtaXQsICgic3VibWl0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3Vi
bWl0KCJzdWJtaXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAg
ICAgICAgIHJldHVybiBzdWJtaXQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBCVVRUT046IHsK
LSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIGJ1dHRvbiwgKCJidXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBidXR0b24oImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbjsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJF
U0VUOiB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCByZXNldCwgKCJyZXNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
aWNTdHJpbmc+IHJlc2V0KCJyZXNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgICAgICAgICAgcmV0dXJuIHJlc2V0OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKaW5kZXggOTE2MmFmYy4uZDA4
N2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBIVE1MRmllbGRTZXRFbGVtZW50OjpzdXBwb3J0c0ZvY3Vz
KCkgY29uc3QKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGZpZWxkc2V0LCAoImZpZWxkc2V0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IGZpZWxkc2V0KCJmaWVsZHNldCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBmaWVsZHNldDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggMDFmYTcwMC4uOTY2NzFmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC0yMyw2
ICsyMyw3IEBACiAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
Q291bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBz
dGF0aWMgSGFzaENvdW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+JiBkaXNhYmxlZFN1YnRyZWVSb290
cygpCiAgICAgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaENv
dW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+LCBub2RlcywgKCkpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaENvdW50ZWRTZXQ8Q29udGFpbmVyTm9kZSo+PiBub2RlczsKICAgICAg
ICAgcmV0dXJuIG5vZGVzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5F
bGVtZW50LmNwcAppbmRleCBhYTA5MWZiLi44OTQ0YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxLZXlnZW5FbGVtZW50LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNTTEtl
eUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0Lmgi
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgcHJv
dGVjdGVkOgogICAgIEtleWdlblNlbGVjdEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
ICAgICA6IEhUTUxTZWxlY3RFbGVtZW50KHNlbGVjdFRhZywgZG9jdW1lbnQsIDApCiAgICAgewot
ICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwc2V1
ZG9JZCwgKCItd2Via2l0LWtleWdlbi1zZWxlY3QiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IHBzZXVkb0lkKCItd2Via2l0LWtleWdlbi1zZWxlY3QiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICAgICAgc2V0UHNldWRvKHBzZXVkb0lkKTsKICAgICB9CiAKQEAg
LTExMiw3ICsxMTMsNyBAQCBib29sIEhUTUxLZXlnZW5FbGVtZW50OjphcHBlbmRGb3JtRGF0YShG
b3JtRGF0YUxpc3QmIGVuY29kZWRfdmFsdWVzLCBib29sKQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IEhUTUxLZXlnZW5FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGtleWdlbiwgKCJr
ZXlnZW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4ga2V5Z2VuKCJrZXlnZW4iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4ga2V5Z2VuOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggYjU4MzIyMy4uMWM0
OWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNjIsNyAr
NjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgTGlua0V2ZW50U2Vu
ZGVyJiBsaW5rTG9hZEV2ZW50U2VuZGVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoTGlua0V2ZW50U2VuZGVyLCBzaGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5h
bWVzKCkubG9hZEV2ZW50KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExpbmtFdmVudFNl
bmRlcj4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwogICAg
IHJldHVybiBzaGFyZWRMb2FkRXZlbnRTZW5kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDgxNTE2ZmEuLjY4NGQzNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiB0eXBlZGVmIEhhc2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PEhU
TUxNZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVtZW50U2V0TWFwOwogc3RhdGljIERvY3VtZW50
RWxlbWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1lbnRTZXRNYXAoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChEb2N1bWVudEVsZW1lbnRTZXRNYXAsIG1hcCwgKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEb2N1bWVudEVsZW1lbnRTZXRNYXA+IG1hcDsKICAg
ICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwCmluZGV4IGFiYTAwMWIuLmM0NTZlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCkBAIC00MDQsOCArNDA0LDggQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVu
dDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1v
dmVkLCBhbGwgY2FsbGVycyBhcmUgYWxtb3N0IGNlcnRhaW5seSB3cm9uZy4KIHN0YXRpYyBib29s
IGlzUmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBs
Kj4sIHRhZ0xpc3QsICgpKTsKLSAgICBpZiAodGFnTGlzdC5pc0VtcHR5KCkpIHsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4+IHRhZ0xpc3Q7Cisg
ICAgaWYgKHRhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8qIHRhZ3MgPSBI
VE1MTmFtZXM6OmdldEhUTUxUYWdzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
SFRNTE5hbWVzOjpIVE1MVGFnc0NvdW50OyBpKyspIHsKICAgICAgICAgICAgIGlmICgqdGFnc1tp
XSA9PSBiZ3NvdW5kVGFnCkBAIC00MjAsMTAgKzQyMCwxMCBAQCBzdGF0aWMgYm9vbCBpc1JlY29n
bml6ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiAgICAgICAgICAgICAg
ICAgLy8gYmVjYXVzZSB0aGF0IGNoYW5nZXMgaG93IHdlIHBhcnNlIGRvY3VtZW50cy4KICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRhZ0xpc3Qu
YWRkKHRhZ3NbaV0tPmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgICAgICB0YWdMaXN0Lmdl
dCgpLmFkZCh0YWdzW2ldLT5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAgICB9CiAgICAgfQot
ICAgIHJldHVybiB0YWdMaXN0LmNvbnRhaW5zKHRhZ05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsK
KyAgICByZXR1cm4gdGFnTGlzdC5nZXQoKS5jb250YWlucyh0YWdOYW1lLmxvY2FsTmFtZSgpLmlt
cGwoKSk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAppbmRleCBlMGJk
OGNmLi44NjIyNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91
cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVu
dC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBIVE1MT3B0R3JvdXBFbGVtZW50Ojppc0ZvY3Vz
YWJsZSgpIGNvbnN0CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6
Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcHRncm91cCwgKCJvcHRncm91cCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBvcHRncm91cCgib3B0Z3JvdXAiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gb3B0Z3JvdXA7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggMmY2YmE3Yi4uZWRkYTRmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJI
VE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1NSw3
IEBAIFJlZjxIVE1MT3V0cHV0RWxlbWVudD4gSFRNTE91dHB1dEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE91
dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgb3V0cHV0LCAoIm91dHB1dCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBvdXRwdXQoIm91dHB1dCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBvdXRwdXQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggMDExNzVkOS4uNTdhNTMy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTMzNiw3
ICszMzYsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3RyYXIoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4m
KTsKIAogc3RhdGljIFZlY3RvcjxSZXBsYWNlbWVudFBsdWdpbio+JiByZWdpc3RlcmVkUGx1Z2lu
UmVwbGFjZW1lbnRzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVj
dG9yPFJlcGxhY2VtZW50UGx1Z2luKj4sIHJlZ2lzdGVyZWRSZXBsYWNlbWVudHMsICgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFJlcGxhY2VtZW50UGx1Z2luKj4+IHJlZ2lz
dGVyZWRSZXBsYWNlbWVudHM7CiAgICAgc3RhdGljIGJvb2wgZW5naW5lc1F1ZXJpZWQgPSBmYWxz
ZTsKICAgICAKICAgICBpZiAoZW5naW5lc1F1ZXJpZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBkNjhhNTk5Li4wOWU3YWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTc0
LDI5ICs3NCwyOSBAQCBzdGF0aWMgY29uc3QgYXV0byByZW1vdmVTbmFwc2hvdFRpbWVyRGVsYXkg
PSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHsgMTUwMCB9OwogCiBzdGF0aWMgY29uc3QgU3Ry
aW5nIHRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJpbmcgbWltZVR5cGUpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE1pbWVUeXBlVG9Mb2NhbGl6ZWRTdHJpbmdNYXAsIG1p
bWVUeXBlVG9MYWJlbFRpdGxlTWFwLCAoKSk7Ci0gICAgU3RyaW5nIHRpdGxlVGV4dCA9IG1pbWVU
eXBlVG9MYWJlbFRpdGxlTWFwLmdldChtaW1lVHlwZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE1pbWVUeXBlVG9Mb2NhbGl6ZWRTdHJpbmdNYXA+IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFw
OworICAgIFN0cmluZyB0aXRsZVRleHQgPSBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5n
ZXQobWltZVR5cGUpOwogICAgIGlmICghdGl0bGVUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHRpdGxlVGV4dDsKIAogICAgIHRpdGxlVGV4dCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
LnBsdWdJblN0YXJ0TGFiZWxUaXRsZShtaW1lVHlwZSk7CiAgICAgaWYgKHRpdGxlVGV4dC5pc0Vt
cHR5KCkpCiAgICAgICAgIHRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgp
OwotICAgIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLnNldChtaW1lVHlwZSwgdGl0bGVUZXh0KTsK
KyAgICBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5zZXQobWltZVR5cGUsIHRpdGxlVGV4
dCk7CiAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIH07CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgc3Vi
dGl0bGVUZXh0KFBhZ2UqIHBhZ2UsIFN0cmluZyBtaW1lVHlwZSkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoTWltZVR5cGVUb0xvY2FsaXplZFN0cmluZ01hcCwgbWltZVR5
cGVUb0xhYmVsU3VidGl0bGVNYXAsICgpKTsKLSAgICBTdHJpbmcgc3VidGl0bGVUZXh0ID0gbWlt
ZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuZ2V0KG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TWltZVR5cGVUb0xvY2FsaXplZFN0cmluZ01hcD4gbWltZVR5cGVUb0xhYmVsU3Vi
dGl0bGVNYXA7CisgICAgU3RyaW5nIHN1YnRpdGxlVGV4dCA9IG1pbWVUeXBlVG9MYWJlbFN1YnRp
dGxlTWFwLmdldCgpLmdldChtaW1lVHlwZSk7CiAgICAgaWYgKCFzdWJ0aXRsZVRleHQuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gc3VidGl0bGVUZXh0OwogCiAgICAgc3VidGl0bGVUZXh0ID0g
cGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBl
KTsKICAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgc3VidGl0bGVUZXh0
ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCk7Ci0gICAgbWltZVR5cGVUb0xhYmVs
U3VidGl0bGVNYXAuc2V0KG1pbWVUeXBlLCBzdWJ0aXRsZVRleHQpOworICAgIG1pbWVUeXBlVG9M
YWJlbFN1YnRpdGxlTWFwLmdldCgpLnNldChtaW1lVHlwZSwgc3VidGl0bGVUZXh0KTsKICAgICBy
ZXR1cm4gc3VidGl0bGVUZXh0OwogfTsKIApAQCAtNDA4LDExICs0MDgsMTEgQEAgdm9pZCBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3Qq
IHJvb3QpCiAKIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVy
bGF5KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0b3IsICgiLnNuYXBzaG90LW92ZXJsYXkiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gc2VsZWN0b3IoIi5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgU2hhZG93Um9vdCogc2hhZG93ID0g
dXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIGlmICghc2hhZG93KQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHNuYXBzaG90TGFiZWwgPSBzaGFkb3ctPnF1ZXJ5
U2VsZWN0b3Ioc2VsZWN0b3IsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIFJlZlB0cjxFbGVt
ZW50PiBzbmFwc2hvdExhYmVsID0gc2hhZG93LT5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yLmdldCgp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICByZXR1cm4gbm9kZSAmJiBzbmFwc2hvdExhYmVs
ICYmIChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yo
c25hcHNob3RMYWJlbC5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCmluZGV4IDU3MzA0N2YuLmFlZGVkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2Ugc3R5bGVDaGFuZ2UpCiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNv
bnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgc2VsZWN0TXVsdGlwbGUsICgic2VsZWN0LW11bHRpcGxlIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHNlbGVjdE9uZSwgKCJzZWxlY3Qtb25lIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IHNlbGVjdE11bHRpcGxlKCJzZWxlY3QtbXVsdGlwbGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzZWxlY3RPbmUoInNlbGVjdC1vbmUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbV9tdWx0aXBsZSA/IHNlbGVj
dE11bHRpcGxlIDogc2VsZWN0T25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVF
bGVtZW50LmNwcAppbmRleCBhY2VkZWQ0Li41MWM2ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAogc3RhdGljIFN0eWxlRXZlbnRTZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVy
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVFdmVudFNlbmRl
ciwgc2hhcmVkTG9hZEV2ZW50U2VuZGVyLCAoZXZlbnROYW1lcygpLmxvYWRFdmVudCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHlsZUV2ZW50U2VuZGVyPiBzaGFyZWRMb2FkRXZlbnRT
ZW5kZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7CiAgICAgcmV0dXJuIHNoYXJlZExvYWRFdmVu
dFNlbmRlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKaW5kZXggNzg5NDM3Yy4uMmM4Y2U0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFF
bGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgSFRNTFRleHRBcmVhRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCB0ZXh0YXJlYSwgKCJ0ZXh0YXJlYSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiB0ZXh0YXJlYSgidGV4dGFyZWEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gdGV4dGFyZWE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggZDdmMDczNy4uMDk2MzcyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKQEAgLTM3NSw5ICszNzUsOSBAQCBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OmNvbXB1dGVTZWxlY3Rpb25FbmQoKSBjb25zdAogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBkaXJlY3Rpb25TdHJpbmcoVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBub25lLCAoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZm9y
d2FyZCwgKCJmb3J3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGJh
Y2t3YXJkLCAoImJhY2t3YXJkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5v
bmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBmb3J3YXJkKCJmb3J3YXJkIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21pY1N0cmluZz4gYmFja3dhcmQoImJhY2t3YXJkIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNh
c2UgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5
cGUuY3BwCmluZGV4IDEzMTBjZTkuLmJlYjEwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJ
bnB1dFR5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMu
aCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02NCwxMCArNjUsMTAgQEAgYm9vbCBJbWFnZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9y
bURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG90WFN0
cmluZywgKEFTQ0lJTGl0ZXJhbCgiLngiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGRvdFlTdHJpbmcsIChBU0NJSUxpdGVyYWwoIi55IikpKTsKLSAgICBl
bmNvZGluZy5hcHBlbmREYXRhKG5hbWUgKyBkb3RYU3RyaW5nLCBtX2NsaWNrTG9jYXRpb24ueCgp
KTsKLSAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUgKyBkb3RZU3RyaW5nLCBtX2NsaWNrTG9j
YXRpb24ueSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkb3RYU3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiLngiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
ZG90WVN0cmluZyhBU0NJSUxpdGVyYWwoIi55IikpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEo
bmFtZSArIGRvdFhTdHJpbmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi54KCkpOworICAgIGVuY29k
aW5nLmFwcGVuZERhdGEobmFtZSArIGRvdFlTdHJpbmcuZ2V0KCksIG1fY2xpY2tMb2NhdGlvbi55
KCkpOwogCiAgICAgaWYgKCFlbGVtZW50KCkudmFsdWUoKS5pc0VtcHR5KCkpCiAgICAgICAgIGVu
Y29kaW5nLmFwcGVuZERhdGEobmFtZSwgZWxlbWVudCgpLnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZU5hbWVzLmNwcAppbmRleCBhYzA4OTZhLi40Mzg3NjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcApAQCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgSW5w
dXRUeXBlTmFtZXMgewpAQCAtMzEsMTM5ICszMywxMzkgQEAgbmFtZXNwYWNlIElucHV0VHlwZU5h
bWVzIHsKIAogY29uc3QgQXRvbWljU3RyaW5nJiBidXR0b24oKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiYnV0dG9uIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IG5hbWUoImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGNo
ZWNrYm94KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBuYW1lLCAoImNoZWNrYm94IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImNoZWNr
Ym94IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5h
bWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgY29sb3IoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiY29sb3IiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gbmFtZSgiY29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBkYXRl
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBu
YW1lLCAoImRhdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiZGF0ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImRhdGV0aW1lIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IG5hbWUoImRhdGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWVs
b2NhbCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgbmFtZSwgKCJkYXRldGltZS1sb2NhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJk
YXRldGltZS1sb2NhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGVtYWlsKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImVtYWls
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImVtYWlsIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgZmlsZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgbmFtZSwgKCJmaWxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImZpbGUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBoaWRkZW4oKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiaGlkZGVuIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IG5hbWUoImhpZGRlbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdl
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBu
YW1lLCAoImltYWdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImltYWdlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgbW9udGgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgibW9udGgiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gbmFtZSgibW9udGgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBudW1iZXIoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgibnVt
YmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoIm51bWJlciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIHBhc3N3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInBhc3N3b3JkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoInBhc3N3b3JkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaW8oKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgicmFk
aW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgicmFkaW8iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiByYW5nZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgbmFtZSwgKCJyYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJy
YW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBu
YW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInJlc2V0IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IG5hbWUoInJlc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgc2Vh
cmNoKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBuYW1lLCAoInNlYXJjaCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJzZWFyY2giLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBzdWJtaXQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgic3VibWl0IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5hbWUoInN1Ym1pdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHRlbGVwaG9u
ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bmFtZSwgKCJ0ZWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGVsIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgdGV4dCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ0ZXh0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5h
bWUoInRleHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gbmFtZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiB0aW1lKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInRpbWUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGltZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIHVy
bCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
bmFtZSwgKCJ1cmwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidXJsIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgd2VlaygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ3ZWVrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5h
bWUoIndlZWsiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gbmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4
IGRiYjAyYWIuLjQ3YTk1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5j
cHAKQEAgLTI5MCwxOSArMjkwLDE5IEBAIHZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChi
b29sIGZsYWcpCiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBsYXliYWNrU3RhdGVXYWl0
aW5nKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCB3YWl0aW5nLCAoIndhaXRpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gd2FpdGluZygid2Fp
dGluZyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiB3
YWl0aW5nOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwbGF5YmFja1N0YXRlUGxh
eWluZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgcGxheWluZywgKCJwbGF5aW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBsYXlpbmcoInBs
YXlpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4g
cGxheWluZzsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGxheWJhY2tTdGF0ZUVu
ZGVkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBlbmRlZCwgKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbmRlZCgiZW5kZWQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZW5kZWQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggNDcyOTg3Mi4uNjBj
MzE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkwLDcgKzkxLDcgQEAgRGVj
aW1hbCBNb250aElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3Rl
cFJhbmdlIE1vbnRoSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFu
eVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKG1v
bnRoRGVmYXVsdFN0ZXAsIG1vbnRoRGVmYXVsdFN0ZXBCYXNlLCBtb250aFN0ZXBTY2FsZUZhY3Rv
ciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24+IHN0ZXBE
ZXNjcmlwdGlvbihtb250aERlZmF1bHRTdGVwLCBtb250aERlZmF1bHRTdGVwQmFzZSwgbW9udGhT
dGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2Vy
KTsKIAogICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQo
KS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKG1vbnRoRGVm
YXVsdFN0ZXBCYXNlKSk7CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJl
cihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJs
ZShEYXRlQ29tcG9uZW50czo6bWluaW11bU1vbnRoKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmNwcAppbmRleCBmZDM1YmI4Li5mNjYwNGU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBOdW1iZXJJ
bnB1dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiAKIFN0ZXBSYW5nZSBOdW1iZXJJbnB1dFR5
cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25z
dAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6
OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51
bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uPiBzdGVwRGVz
Y3JpcHRpb24obnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVy
U3RlcFNjYWxlRmFjdG9yKTsKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0Rl
Y2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBu
dW1iZXJEZWZhdWx0U3RlcEJhc2UpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVy
aWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVtYmVyIGlucHV0IHR5cGUuCiAgICAgY29uc3Qg
RGVjaW1hbCBmbG9hdE1heCA9IERlY2ltYWw6OmZyb21Eb3VibGUoc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5k
ZXggMjRmN2JiYy4uMGZkZWEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5j
cHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJTbGlkZXJUaHVtYkVsZW1lbnQuaCIKICNp
bmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVk
ZSAiVG91Y2guaCIKQEAgLTExMyw3ICsxMTQsNyBAQCBib29sIFJhbmdlSW5wdXRUeXBlOjpzdXBw
b3J0c1JlcXVpcmVkKCkgY29uc3QKIAogU3RlcFJhbmdlIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0
ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3RvcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHJhbmdl
RGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3Rvcik7
CiAKICAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5m
YXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCByYW5nZURlZmF1bHRNaW5pbXVtKTsKICAgICBjb25z
dCBEZWNpbWFsIG1heGltdW0gPSBlbnN1cmVNYXhpbXVtKHBhcnNlVG9OdW1iZXIoZWxlbWVudCgp
LmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIHJhbmdlRGVmYXVsdE1heGltdW0pLCBtaW5pbXVt
LCByYW5nZURlZmF1bHRNYXhpbXVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U3RlcFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCBj
NDc3MThhLi5lYmYzMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5n
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0yNCw2ICsy
NCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjUsMTMgKzY2LDEzIEBAIFN0
ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IERlY2ltYWwmIHN0ZXBCYXNlLCBjb25zdCBEZWNpbWFs
JiBtaW5pbXVtLCBjb25zdCBEZWNpCiBEZWNpbWFsIFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9y
KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBEQkxfTUFOVF9ESUcgaW5z
dGVhZCBvZiBGTFRfTUFOVF9ESUcgcmVnYXJkaW5nIHRvIEhUTUw1IHNwZWNpZmljYXRpb24uCi0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IERlY2ltYWwsIHR3b1Bvd2Vy
T2ZGbG9hdE1hbnRpc3NhQml0cywgKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8
PCBGTFRfTUFOVF9ESUcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgRGVjaW1h
bD4gdHdvUG93ZXJPZkZsb2F0TWFudGlzc2FCaXRzKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5U
NjRfQygxKSA8PCBGTFRfTUFOVF9ESUcpOwogICAgIHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5z
dGVwVmFsdWVTaG91bGRCZSA9PSBTdGVwVmFsdWVTaG91bGRCZVJlYWwgPyBtX3N0ZXAgLyB0d29Q
b3dlck9mRmxvYXRNYW50aXNzYUJpdHMgOiBEZWNpbWFsKDApOwogfQogCiBEZWNpbWFsIFN0ZXBS
YW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAoY29uc3QgRGVjaW1hbCYgY3VycmVudFZhbHVlLCBjb25z
dCBEZWNpbWFsJiBuZXdWYWx1ZSkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdGVuUG93ZXJPZjIxLCAoRGVjaW1hbDo6UG9zaXRpdmUs
IDIxLCAxKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IERlY2ltYWw+IHRlblBv
d2VyT2YyMShEZWNpbWFsOjpQb3NpdGl2ZSwgMjEsIDEpOwogICAgIGlmIChuZXdWYWx1ZSA+PSB0
ZW5Qb3dlck9mMjEpCiAgICAgICAgIHJldHVybiBuZXdWYWx1ZTsKIApAQCAtMTUwLDcgKzE1MSw3
IEBAIGJvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2goY29uc3QgRGVjaW1hbCYgdmFsdWVGb3JD
aGVjaykgY29uc3QKICAgICAvLyBEZWNpbWFsJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJM
X01BTl9ESUctYml0LiBJZiB0aGUgY3VycmVudCB2YWx1ZQogICAgIC8vIGlzIGdyZWF0ZXIgdGhh
biBzdGVwKjJeREJMX01BTlRfRElHLCB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIGZvcgogICAg
IC8vIHJlbWFpbmRlciBtYWtlcyBubyBzZW5zZS4KLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cywgKERl
Y2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBEQkxfTUFOVF9ESUcpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgRGVjaW1hbD4gdHdvUG93ZXJPZkRvdWJsZU1hbnRp
c3NhQml0cyhEZWNpbWFsOjpQb3NpdGl2ZSwgMCwgVUlOVDY0X0MoMSkgPDwgREJMX01BTlRfRElH
KTsKICAgICBpZiAodmFsdWUgLyB0d29Qb3dlck9mRG91YmxlTWFudGlzc2FCaXRzID4gbV9zdGVw
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gVGhlIGNvbXB1dGF0aW9uIGZvbGxvd3Mg
SFRNTDUgNC4xMC43LjIuMTAgYFRoZSBzdGVwIGF0dHJpYnV0ZScgOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZUlucHV0VHlwZS5jcHAKaW5kZXggYzA5MDQxOS4uNzRiMTRhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RpbWVJbnB1dFR5cGUuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC03Nyw3ICs3OCw3IEBAIERlY2ltYWwgVGltZUlucHV0VHlwZTo6ZGVm
YXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIAogU3RlcFJhbmdlIFRpbWVJbnB1dFR5cGU6OmNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAodGltZURlZmF1bHRTdGVwLCB0aW1lRGVmYXVs
dFN0ZXBCYXNlLCB0aW1lU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdGVw
UmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbj4gc3RlcERlc2NyaXB0aW9uKHRpbWVEZWZhdWx0U3RlcCwg
dGltZURlZmF1bHRTdGVwQmFzZSwgdGltZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2Fs
ZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpOwogCiAgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFz
ZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDAp
OwogICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVu
dHM6Om1pbmltdW1UaW1lKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vl
a0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCmlu
ZGV4IDg0Y2E5ODguLjIzYjkwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vl
a0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNw
cApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU2LDcg
KzU3LDcgQEAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgV2Vla0lucHV0VHlwZTo6ZGF0ZVR5cGUoKSBj
b25zdAogCiBTdGVwUmFuZ2UgV2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBI
YW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVwRGVzY3Jp
cHRpb24sICh3ZWVrRGVmYXVsdFN0ZXAsIHdlZWtEZWZhdWx0U3RlcEJhc2UsIHdlZWtTdGVwU2Nh
bGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9u
PiBzdGVwRGVzY3JpcHRpb24od2Vla0RlZmF1bHRTdGVwLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlLCB3
ZWVrU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50
ZWdlcik7CiAKICAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb051bWJlcihlbGVt
ZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgd2Vla0RlZmF1bHRTdGVwQmFzZSk7CiAg
ICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkuZmFzdEdl
dEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6
bWluaW11bVdlZWsoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNjU0MjdhMS4uYTYwMzM3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAog
I2lmIFVTRShDRykKQEAgLTE5NTksNyArMTk2MCw3IEBAIFJlZlB0cjxJbWFnZURhdGE+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6d2Via2l0R2V0SW1hZ2VEYXRhSEQoZmxvYXQgc3gsIGZsb2F0
CiBSZWZQdHI8SW1hZ2VEYXRhPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmdldEltYWdlRGF0
YShJbWFnZUJ1ZmZlcjo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBmbG9hdCBz
eCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiB7CiAgICAgaWYgKCFjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewotICAgICAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0
ZXJhbCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzIGJlY2F1c2UgdGhlIGNh
bnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3NzLW9yaWdpbiBkYXRhLiIpKSk7CisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJh
bCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzIGJlY2F1c2UgdGhlIGNhbnZh
cyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3NzLW9yaWdpbiBkYXRhLiIpKTsKICAgICAgICAgY2Fu
dmFzKCktPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJp
dHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgZWMgPSBT
RUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCBkOWFlMTJhLi5hMTkxZjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2lu
Y2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjczLDcgKzI3NCw3IEBAIHZvaWQgWFNTQXVkaXRv
cjo6aW5pdChEb2N1bWVudCogZG9jdW1lbnQsIFhTU0F1ZGl0b3JEZWxlZ2F0ZSogYXVkaXRvckRl
bGVnYXRlKQogCiAgICAgU3RyaW5nIGh0dHBCb2R5QXNTdHJpbmc7CiAgICAgaWYgKERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGRvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpKSB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIFhTU1Byb3RlY3Rpb25IZWFkZXIsIChBU0NJSUxpdGVyYWwoIlgtWFNTLVByb3RlY3Rp
b24iKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBYU1NQcm90ZWN0
aW9uSGVhZGVyKEFTQ0lJTGl0ZXJhbCgiWC1YU1MtUHJvdGVjdGlvbiIpKTsKICAgICAgICAgU3Ry
aW5nIGhlYWRlclZhbHVlID0gZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZp
ZWxkKFhTU1Byb3RlY3Rpb25IZWFkZXIpOwogICAgICAgICBTdHJpbmcgZXJyb3JEZXRhaWxzOwog
ICAgICAgICB1bnNpZ25lZCBlcnJvclBvc2l0aW9uID0gMDsKQEAgLTUyMyw3ICs1MjQsNyBAQCBi
b29sIFhTU0F1ZGl0b3I6OmZpbHRlckJ1dHRvblRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVz
dCYgcmVxdWVzdCkKIAogYm9vbCBYU1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJ
ZkluamVjdGVkKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzYWZlSmF2YVNjcmlwdFVSTCwgKEFT
Q0lJTGl0ZXJhbCgiamF2YXNjcmlwdDp2b2lkKDApIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBzYWZlSmF2YVNjcmlwdFVSTChBU0NJSUxpdGVyYWwoImphdmFzY3JpcHQ6
dm9pZCgwKSIpKTsKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJlcXVlc3QudG9rZW4uYXR0cmlidXRlcygpLnNpemUoKTsgKytp
KSB7CkBAIC01MzgsNyArNTM5LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0
dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmUKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICByZXF1ZXN0LnRva2VuLmVyYXNlVmFsdWVPZkF0dHJpYnV0
ZShpKTsKICAgICAgICAgaWYgKHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKQotICAgICAgICAg
ICAgcmVxdWVzdC50b2tlbi5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGksIHNhZmVKYXZhU2NyaXB0
VVJMKTsKKyAgICAgICAgICAgIHJlcXVlc3QudG9rZW4uYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShp
LCBzYWZlSmF2YVNjcmlwdFVSTC5nZXQoKSk7CiAgICAgICAgIGRpZEJsb2NrU2NyaXB0ID0gdHJ1
ZTsKICAgICB9CiAgICAgcmV0dXJuIGRpZEJsb2NrU2NyaXB0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDA3OWJjMGYu
LmY3YTNjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKQEAgLTcyMSw3ICs3MjEsNyBAQCB2b2lkIE1lZGlhQ29udHJvbENs
b3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbgogdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVw
ZGF0ZURpc3BsYXkoKQogewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWxlY3RlZENsYXNzVmFsdWUsICgi
c2VsZWN0ZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc2VsZWN0ZWRDbGFzc1ZhbHVlKCJzZWxl
Y3RlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgaWYgKCFt
ZWRpYUNvbnRyb2xsZXIoKS0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTAzOCw3ICsxMDM4LDcgQEAgUmVmPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5
RWxlbWVudD4gTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGUKIAogc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgZ2V0TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50U2hhZG93UHNldWRvSWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5p
bmctZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpZCgiLXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIGlkOwogfQogCkBAIC0xMDU3LDcgKzEwNTcsNyBAQCBSZWY8
TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sQ3VycmVu
dFRpbWVEaXNwbGF5RWxlbWVudAogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50U2hhZG93UHNldWRvSWQoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gaWQoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXkiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gaWQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3Bw
CmluZGV4IDE2NDViODIuLjgwODJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIE1ldGVy
U2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
CiBNZXRlcklubmVyRWxlbWVudDo6TWV0ZXJJbm5lckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogTWV0ZXJTaGFkb3dFbGVtZW50KGRvY3VtZW50KQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHBzZXVkb0lkLCAoIi13ZWJraXQtbWV0
ZXItaW5uZXItZWxlbWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBwc2V1ZG9JZCgiLXdlYmtp
dC1tZXRlci1pbm5lci1lbGVtZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgc2V0UHNldWRvKHBzZXVkb0lkKTsKIH0KIApAQCAtODAsOSArODAsOSBAQCBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gTWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bAogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1ldGVyVmFsdWVFbGVt
ZW50Ojp2YWx1ZVBzZXVkb0lkKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvcHRpbXVtUHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1v
cHRpbXVtLXZhbHVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHN1Ym9wdGltdW1Q
c2V1ZG9JZCwgKCItd2Via2l0LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgZXZlbkxlc3NHb29kUHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1l
dmVuLWxlc3MtZ29vZC12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcHRpbXVtUHNldWRv
SWQoIi13ZWJraXQtbWV0ZXItb3B0aW11bS12YWx1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHN1
Ym9wdGltdW1Qc2V1ZG9JZCgiLXdlYmtpdC1tZXRlci1zdWJvcHRpbXVtLXZhbHVlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gZXZlbkxlc3NHb29kUHNldWRvSWQoIi13ZWJraXQtbWV0ZXItZXZlbi1s
ZXNzLWdvb2QtdmFsdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAog
ICAgIEhUTUxNZXRlckVsZW1lbnQqIG1ldGVyID0gbWV0ZXJFbGVtZW50KCk7CiAgICAgaWYgKCFt
ZXRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50
LmgKaW5kZXggNGY5YjMwNC4uNzcwNmIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUo
TUVURVJfRUxFTUVOVCkKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNzUsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIE1ldGVyQmFyRWxl
bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgICAgIDogTWV0ZXJTaGFkb3dFbGVtZW50KGRv
Y3VtZW50KQogICAgIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgcHNldWRvSWQsICgiLXdlYmtpdC1tZXRlci1iYXIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LW1ldGVyLWJhciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICBzZXRQc2V1ZG8ocHNldWRvSWQpOwogICAg
IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcAppbmRleCBmYjU4MzM2Li4wZDg5MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTU3NiwxMyArNTc2LDEzIEBA
IEhUTUxJbnB1dEVsZW1lbnQqIFNsaWRlclRodW1iRWxlbWVudDo6aG9zdElucHV0KCkgY29uc3QK
IAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
Zywgc2xpZGVyVGh1bWIsICgiLXdlYmtpdC1zbGlkZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gc2xpZGVyVGh1bWIoIi13ZWJraXQtc2xpZGVyLXRodW1iIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNsaWRlclRodW1iOwogfQog
CiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRv
SWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIG1lZGlhU2xpZGVyVGh1bWIsICgiLXdlYmtpdC1tZWRpYS1zbGlkZXItdGh1bWIiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbWVkaWFTbGlkZXJUaHVtYigiLXdlYmtpdC1tZWRp
YS1zbGlkZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gbWVkaWFTbGlkZXJUaHVtYjsKIH0KIApAQCAtNjQyLDggKzY0Miw4IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdAogICAgIC8vIHRoYXQgdmFsdWUgZGVwZW5kcyBvbiB0aGUgc3R5bGUsIHdoaWNoIG1lYW5z
IHRoZSBzdHlsZSBuZWVkcyB0byBiZSBjb21wdXRlZCB0d2ljZSB0byBnZXQKICAgICAvLyBhIGNv
cnJlY3QgdmFsdWU6IG9uY2UgdG8gZ2V0IHRoZSBJbnB1dCdzIGFwcGVhcmFuY2UsIHRoZW4gYSBz
ZWNvbmQgdGltZSB0byBzdHlsZSB0aGUgc2hhZG93IHRyZWUgY29ycmVjdGx5LgogCi0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWVkaWFTbGlk
ZXJDb250YWluZXIsICgiLXdlYmtpdC1tZWRpYS1zbGlkZXItY29udGFpbmVyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNsaWRlckNvbnRhaW5lciwgKCItd2Via2l0LXNs
aWRlci1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbWVkaWFTbGlkZXJD
b250YWluZXIoIi13ZWJraXQtbWVkaWEtc2xpZGVyLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IHNsaWRlckNvbnRhaW5lcigiLXdlYmtpdC1zbGlkZXItY29udGFpbmVyIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAoIWlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KCpzaGFkb3dIb3N0KCkpKQogICAgICAgICByZXR1cm4gc2xpZGVyQ29udGFp
bmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKaW5kZXggODczMjky
NS4uYTQyZTEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCkBA
IC0zOCw0MiArMzgsNDMgQEAKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJh
bHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBhbHRlcm5hdGl2ZSgiYWx0ZXJuYXRp
dmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gYWx0
ZXJuYXRpdmU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRp
b25LZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbiwgKCJkZXNjcmlwdGlvbiIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBkZXNjcmlwdGlvbigiZGVzY3JpcHRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW4sICgibWFpbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBtYWluKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1haW47CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgQXVk
aW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtYWluRGVzYywgKCJtYWluLWRlc2MiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gbWFpbkRlc2MoIm1haW4tZGVzYyIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBtYWluRGVzYzsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHRyYW5zbGF0aW9u
LCAoInRyYW5zbGF0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHRyYW5zbGF0aW9uKCJ0cmFu
c2xhdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biB0cmFuc2xhdGlvbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjpjb21t
ZW50YXJ5S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IGNvbW1lbnRhcnkoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY29tbWVudGFyeTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IDBkOWEyYjYuLjcyOWY1MjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTQ5LDU1ICs0OSw1NSBAQCBzdGF0
aWMgY29uc3QgaW50IGludmFsaWRUcmFja0luZGV4ID0gLTE7CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgic3VidGl0bGVz
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHN1YnRpdGxlcygic3VidGl0bGVzIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHN1YnRpdGxlczsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
Y2FwdGlvbnMsICgiY2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2FwdGlv
bnMoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIGNhcHRpb25zOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6ZGVz
Y3JpcHRpb25zS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgZGVzY3JpcHRpb25zLCAoImRlc2NyaXB0aW9ucyIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBkZXNjcmlwdGlvbnMoImRlc2NyaXB0aW9ucyIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbnM7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpjaGFwdGVyc0tleXdvcmQoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IGNoYXB0ZXJzLCAoImNoYXB0ZXJzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNoYXB0
ZXJzKCJjaGFwdGVycyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IHJldHVybiBjaGFwdGVyczsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6Om1l
dGFkYXRhS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgbWV0YWRhdGEsICgibWV0YWRhdGEiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gbWV0YWRhdGEoIm1ldGFkYXRhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1ldGFkYXRhOwogfQogICAgIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBUZXh0VHJhY2s6OmZvcmNlZEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGZvcmNlZCwgKCJmb3JjZWQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZm9yY2VkKCJmb3JjZWQiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZm9yY2VkOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFRleHRUcmFjazo6ZGlzYWJsZWRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcGVuLCAoImRpc2Fi
bGVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IG9wZW4oImRpc2FibGVkIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG9wZW47CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpoaWRkZW5LZXl3b3JkKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjbG9zZWQsICgi
aGlkZGVuIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNsb3NlZCgiaGlkZGVuIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNsb3NlZDsKIH0K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBlbmRl
ZCwgKCJzaG93aW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGVuZGVkKCJzaG93aW5n
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGVuZGVk
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCA2NGU2
ZmQyLi43ZTU5MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgY3VlU2hhZG93UHNldWRvSWQoKQogICAgIHsKLSAgICAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY3VlLCAoImN1ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY3VlKCJjdWUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmV0dXJuIGN1ZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAppbmRleCA3YWM4NjYxLi4wMjMwZjQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCkBAIC03MiwzMSArNzIsMzEgQEAgQ09NUElM
RV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChkaXNwbGF5QWxpZ25tZW50TWFwKSA9PSBWVFRDdWU6
Ok51bWJlck9mQWxpZ25tZW4KIAogc3RhdGljIGNvbnN0IFN0cmluZyYgc3RhcnRLZXl3b3JkKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdGFy
dCwgKEFTQ0lJTGl0ZXJhbCgic3RhcnQiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IHN0YXJ0KEFTQ0lJTGl0ZXJhbCgic3RhcnQiKSk7CiAgICAgcmV0dXJuIHN0
YXJ0OwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiBtaWRkbGVLZXl3b3JkKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBtaWRkbGUsIChBU0NJ
SUxpdGVyYWwoIm1pZGRsZSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0
cmluZz4gbWlkZGxlKEFTQ0lJTGl0ZXJhbCgibWlkZGxlIikpOwogICAgIHJldHVybiBtaWRkbGU7
CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIGVuZEtleXdvcmQoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVuZCwgKEFTQ0lJTGl0ZXJhbCgi
ZW5kIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlbmQoQVND
SUlMaXRlcmFsKCJlbmQiKSk7CiAgICAgcmV0dXJuIGVuZDsKIH0KIAogc3RhdGljIGNvbnN0IFN0
cmluZyYgbGVmdEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIGxlZnQsICgibGVmdCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgU3RyaW5nPiBsZWZ0KCJsZWZ0Iik7CiAgICAgcmV0dXJuIGxlZnQ7CiB9CiAKIHN0
YXRpYyBjb25zdCBTdHJpbmcmIHJpZ2h0S2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcmlnaHQsICgicmlnaHQiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gcmlnaHQoInJpZ2h0Iik7CiAgICAgcmV0
dXJuIHJpZ2h0OwogfQogCkBAIC0xMDcsMTMgKzEwNywxMyBAQCBzdGF0aWMgY29uc3QgU3RyaW5n
JiBob3Jpem9udGFsS2V5d29yZCgpCiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHZlcnRpY2FsR3Jv
d2luZ0xlZnRLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCB2ZXJ0aWNhbHJsLCAoQVNDSUlMaXRlcmFsKCJybCIpKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdmVydGljYWxybChBU0NJSUxpdGVyYWwo
InJsIikpOwogICAgIHJldHVybiB2ZXJ0aWNhbHJsOwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5n
JiB2ZXJ0aWNhbEdyb3dpbmdSaWdodEtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHZlcnRpY2FsbHIsIChBU0NJSUxpdGVyYWwoImxy
IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2ZXJ0aWNhbGxy
KEFTQ0lJTGl0ZXJhbCgibHIiKSk7CiAgICAgcmV0dXJuIHZlcnRpY2FsbHI7CiB9CiAKQEAgLTIy
NSw3ICsyMjUsNyBAQCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IElu
dFNpemUmIHZpZGVvU2l6ZSkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBWVFRDdWVCb3g6OnZ0dEN1
ZUJveFNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZCwgKCIt
d2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC1tZWRpYS10ZXh0LXRy
YWNrLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBy
ZXR1cm4gdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQ7CiB9CiAKQEAgLTIzOCw3ICsyMzgs
NyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVlRUQ3VlQm94OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZUVEN1
ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9J
ZCwgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNrZHJvcCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNrZHJvcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkOwogfQog
CkBAIC01OTcsNyArNTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDdWVQYXJhZ3JhcGhTZXBhcmF0b3Io
VUNoYXIgY2hhcmFjdGVyKQogCiB2b2lkIFZUVEN1ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcnRU
YWcsIChBU0NJSUxpdGVyYWwoInJ0IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiBydFRhZyhBU0NJSUxpdGVyYWwoInJ0IikpOwogICAgIGNyZWF0ZVdlYlZUVE5v
ZGVUcmVlKCk7CiAgICAgaWYgKCFtX3dlYlZUVE5vZGVUcmVlKQogICAgICAgICByZXR1cm47CkBA
IC03NDEsNyArNzQxLDcgQEAgdm9pZCBWVFRDdWU6OmNhbGN1bGF0ZURpc3BsYXlQYXJhbWV0ZXJz
KCkKICAgICAKIHZvaWQgVlRUQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVzKENvbnRhaW5lck5v
ZGUqIHJvb3QsIGNvbnN0IE1lZGlhVGltZSYgcHJldmlvdXNUaW1lc3RhbXAsIGNvbnN0IE1lZGlh
VGltZSYgbW92aWVUaW1lKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBTdHJpbmcsIHRpbWVzdGFtcFRhZywgKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIikpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB0aW1lc3RhbXBUYWcoQVND
SUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSk7CiAgICAgCiAgICAgYm9vbCBpc1Bhc3ROb2RlID0gdHJ1
ZTsKICAgICBNZWRpYVRpbWUgY3VycmVudFRpbWVzdGFtcCA9IHByZXZpb3VzVGltZXN0YW1wOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCmluZGV4IDg1Nzk4NjguLjk0MTFm
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKQEAgLTE4OCw3ICsx
ODgsNyBAQCB2b2lkIFZUVFJlZ2lvbjo6c2V0Vmlld3BvcnRBbmNob3JZKGRvdWJsZSB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAKIGNvbnN0IEF0b21pY1N0cmluZyBWVFRSZWdpb246OnNjcm9s
bCgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgdXBTY3JvbGxWYWx1ZUtleXdvcmQsICgidXAiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gdXBTY3JvbGxWYWx1ZUtleXdvcmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAobV9zY3JvbGwpCiAgICAgICAgIHJldHVybiB1
cFNjcm9sbFZhbHVlS2V5d29yZDsKQEAgLTE5OCw3ICsxOTgsNyBAQCBjb25zdCBBdG9taWNTdHJp
bmcgVlRUUmVnaW9uOjpzY3JvbGwoKSBjb25zdAogCiB2b2lkIFZUVFJlZ2lvbjo6c2V0U2Nyb2xs
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHVwU2Nyb2xs
VmFsdWVLZXl3b3JkLCAoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHVwU2Nyb2xs
VmFsdWVLZXl3b3JkKCJ1cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
CiAgICAgaWYgKHZhbHVlICE9IGVtcHR5U3RyaW5nKCkgJiYgdmFsdWUgIT0gdXBTY3JvbGxWYWx1
ZUtleXdvcmQpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwpAQCAtMjY4LDcgKzI2OCw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZWRFbnRpcmVSdW4oY29uc3QgVlRUU2Nhbm5lciYgaW5w
dXQsIGNvbnN0IFZUVFNjYW5uZXI6OlJ1CiAKIHZvaWQgVlRUUmVnaW9uOjpwYXJzZVNldHRpbmdW
YWx1ZShSZWdpb25TZXR0aW5nIHNldHRpbmcsIFZUVFNjYW5uZXImIGlucHV0KQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNjcm9sbFVw
VmFsdWVLZXl3b3JkLCAoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNjcm9sbFVw
VmFsdWVLZXl3b3JkKCJ1cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
CiAgICAgVlRUU2Nhbm5lcjo6UnVuIHZhbHVlUnVuID0gaW5wdXQuY29sbGVjdFVudGlsPGlzSFRN
TFNwYWNlPFVDaGFyPj4oKTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgVlRUUmVnaW9uOjpw
YXJzZVNldHRpbmdWYWx1ZShSZWdpb25TZXR0aW5nIHNldHRpbmcsIFZUVFNjYW5uZXImIGlucHV0
KQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTY3JvbGw6Ci0gICAgICAgIGlmIChp
bnB1dC5zY2FuUnVuKHZhbHVlUnVuLCBzY3JvbGxVcFZhbHVlS2V5d29yZCkpCisgICAgICAgIGlm
IChpbnB1dC5zY2FuUnVuKHZhbHVlUnVuLCBzY3JvbGxVcFZhbHVlS2V5d29yZC5nZXQoKSkpCiAg
ICAgICAgICAgICBtX3Njcm9sbCA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExP
RyhNZWRpYSwgIlZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUsIGludmFsaWQgU2Nyb2xsIik7
CkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBWVFRSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVlKFJl
Z2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgVlRUUmVnaW9uOjp0ZXh0VHJhY2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcygpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
dHJhY2tSZWdpb25DdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcywgKCJzY3JvbGxpbmciLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHJhY2tSZWdpb25DdWVDb250YWluZXJTY3JvbGxpbmdD
bGFzcygic2Nyb2xsaW5nIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICByZXR1cm4gdHJhY2tSZWdpb25DdWVDb250YWluZXJTY3JvbGxpbmdDbGFzczsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCmluZGV4IDk3NGU0OTcuLjczNDA5
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtNDcsMzcg
KzQ3LDM3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRl
b1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZlLCAoImFsdGVybmF0aXZl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHRlcm5h
dGl2ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdv
cmQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIGNhcHRpb25zLCAoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IGNhcHRpb25zKCJjYXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBjYXB0aW9uczsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1Ry
YWNrOjptYWluS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlvbnMsICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bWljU3RyaW5nPiBjYXB0aW9ucygibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBjYXB0aW9uczsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBW
aWRlb1RyYWNrOjpzaWduS2V5d29yZCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2lnbiwgKCJzaWduIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IHNpZ24oInNpZ24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gc2lnbjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1Ry
YWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgic3VidGl0bGVzIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IHN1YnRpdGxlcygic3VidGl0bGVzIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHN1YnRpdGxlczsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVu
dGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNvbW1lbnRh
cnkoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICByZXR1cm4gY29tbWVudGFyeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRURWxlbWVudC5jcHAKaW5kZXggYTNjMDM2Ni4uMWY2MTBmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCkBAIC0zNiwxNCArMzYsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgbm9kZVR5cGVUb1Rh
Z05hbWUoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIGNUYWcsIChudWxsQXRvbSwgImMiLCBudWxsQXRv
bSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB2
VGFnLCAobnVsbEF0b20sICJ2IiwgbnVsbEF0b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgbGFuZ1RhZywgKG51bGxBdG9tLCAibGFuZyIsIG51
bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5h
bWUsIGJUYWcsIChudWxsQXRvbSwgImIiLCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB1VGFnLCAobnVsbEF0b20sICJ1IiwgbnVs
bEF0b20pKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFt
ZSwgaVRhZywgKG51bGxBdG9tLCAiaSIsIG51bGxBdG9tKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHJ1YnlUYWcsIChudWxsQXRvbSwgInJ1Ynki
LCBudWxsQXRvbSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZp
ZWROYW1lLCBydFRhZywgKG51bGxBdG9tLCAicnQiLCBudWxsQXRvbSkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjVGFnKG51bGxBdG9tLCAiYyIsIG51bGxBdG9t
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdlRhZyhudWxsQXRv
bSwgInYiLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGxhbmdUYWcobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20pOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBiVGFnKG51bGxBdG9tLCAiYiIsIG51bGxBdG9tKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdVRhZyhudWxsQXRvbSwg
InUiLCBudWxsQXRvbSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+
IGlUYWcobnVsbEF0b20sICJpIiwgbnVsbEF0b20pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBydWJ5VGFnKG51bGxBdG9tLCAicnVieSIsIG51bGxBdG9tKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnRUYWcobnVsbEF0b20sICJy
dCIsIG51bGxBdG9tKTsKICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CiAgICAgY2FzZSBXZWJWVFRO
b2RlVHlwZUNsYXNzOgogICAgICAgICByZXR1cm4gY1RhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXggODlkM2QyYy4uNWVmZGMxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDEz
ICs2MywxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgdm9p
Y2VBdHRyaWJ1dGVOYW1lKCkKICAgICB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChRdWFsaWZpZWROYW1lLCB2b2ljZUF0dHIsIChudWxsQXRvbSwgInZvaWNlIiwgbnVs
bEF0b20pKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZv
aWNlQXR0cihudWxsQXRvbSwgInZvaWNlIiwgbnVsbEF0b20pOwogICAgICAgICByZXR1cm4gdm9p
Y2VBdHRyOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGFu
Z0F0dHJpYnV0ZU5hbWUoKQogICAgIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxBdG9tLCAibGFuZyIsIG51bGxB
dG9tKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2b2lj
ZUF0dHIobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20pOwogICAgICAgICByZXR1cm4gdm9pY2VB
dHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3Bw
CmluZGV4IDE5MjIwMTAuLjllYjE1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCBib29sIFdlYlZUVFBhcnNlcjo6aGFz
UmVxdWlyZWRGaWxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGxpbmUpCiB2b2lkIFdlYlZUVFBh
cnNlcjo6Y29sbGVjdE1ldGFkYXRhSGVhZGVyKGNvbnN0IFN0cmluZyYgbGluZSkKIHsKICAgICAv
LyBXZWJWVFQgaGVhZGVyIHBhcnNpbmcgKFdlYlZUVCBwYXJzZXIgYWxnb3JpdGhtIHN0ZXAgMTIp
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
cmVnaW9uSGVhZGVyTmFtZSwgKCJSZWdpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4g
cmVnaW9uSGVhZGVyTmFtZSgiUmVnaW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAKICAgICAvLyBTdGVwIDEyLjQgSWYgbGluZSBjb250YWlucyB0aGUgY2hhcmFjdGVy
ICI6IiAoQSBVKzAwM0EgQ09MT04pLCB0aGVuIHNldCBtZXRhZGF0YSdzCiAgICAgLy8gbmFtZSB0
byB0aGUgc3Vic3RyaW5nIG9mIGxpbmUgYmVmb3JlIHRoZSBmaXJzdCAiOiIgY2hhcmFjdGVyIGFu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5k
ZXggMTFlNTI0OS4uZTliMzJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC03OSwxMCArNzksMTAgQEAgZW51bSBGb3JjZVBzZXVkb0Ns
YXNzRmxhZ3MgewogCiBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZVBzZXVkb0NsYXNzTWFzayhjb25z
dCBJbnNwZWN0b3JBcnJheSYgcHNldWRvQ2xhc3NBcnJheSkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhY3RpdmUsIChBU0NJSUxpdGVyYWwoImFjdGl2ZSIp
KSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaG92ZXIsIChB
U0NJSUxpdGVyYWwoImhvdmVyIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBmb2N1cywgKEFTQ0lJTGl0ZXJhbCgiZm9jdXMiKSkpOwotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHZpc2l0ZWQsIChBU0NJSUxpdGVyYWwoInZp
c2l0ZWQiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFjdGl2ZShBU0NJ
SUxpdGVyYWwoImFjdGl2ZSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBo
b3ZlcihBU0NJSUxpdGVyYWwoImhvdmVyIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGZvY3VzKEFTQ0lJTGl0ZXJhbCgiZm9jdXMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gdmlzaXRlZChBU0NJSUxpdGVyYWwoInZpc2l0ZWQiKSk7CiAgICAgaWYg
KCFwc2V1ZG9DbGFzc0FycmF5Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gUHNldWRvQ2xhc3NO
b25lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IDVjZThjMjYuLmQ2NjAyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0yMzAsOCArMjMwLDggQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IEZyYW1lKiBmcmFtZSwKIC8vc3RhdGljCiBTdHJpbmcgSW5zcGVjdG9yUGFnZUFnZW50Ojpzb3Vy
Y2VNYXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc291cmNlTWFwSFRUUEhl
YWRlciwgKEFTQ0lJTGl0ZXJhbCgiU291cmNlTWFwIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRlZCwgKEFT
Q0lJTGl0ZXJhbCgiWC1Tb3VyY2VNYXAiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHNvdXJjZU1hcEhUVFBIZWFkZXIoQVNDSUlMaXRlcmFsKCJTb3VyY2VNYXAiKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc291cmNlTWFwSFRUUEhlYWRlckRlcHJl
Y2F0ZWQoQVNDSUlMaXRlcmFsKCJYLVNvdXJjZU1hcCIpKTsKIAogICAgIGlmICghY2FjaGVkUmVz
b3VyY2UpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA0MTgzMzMwLi40NzYxZTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CkBAIC04ODAsNyArODgwLDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1NlbGVjdG9yPiBidWlsZE9iamVjdEZvclNlbGVjdG9ySGVscGVyKGMKIAogc3RhdGljIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1NlbGVjdG9yPj4gc2VsZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNlRGF0YSog
c291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzaGVldFRleHQsIGNvbnN0IENTU1NlbGVjdG9yTGlz
dCYgc2VsZWN0b3JMaXN0LCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uLCBjb21tZW50LCAo
Ii9cXCpbXl0qP1xcKi8iLCBUZXh0Q2FzZVNlbnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVF
bmFibGVkKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24+IGNvbW1lbnQoIi9cXCpbXl0qP1xcKi8iLCBUZXh0Q2FzZVNlbnNpdGl2ZSwgSlND
OjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj46
OmNyZWF0ZSgpOwogICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlz
dC5maXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggZjFhZGYxZC4uMjAwZWJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2tGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CkBAIC03Myw4ICs3NCw4IEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoYm9vbCBp
c0JlaW5nRGVzdHJveWVkKQogCiBTdHJpbmcgUGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVS
TEZvclNjcmlwdChjb25zdCBTY3JpcHQmIHNjcmlwdCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIVFRQSGVhZGVyLCAoQVNDSUlMaXRlcmFs
KCJTb3VyY2VNYXAiKSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkLCAoQVNDSUlMaXRlcmFsKCJYLVNvdXJj
ZU1hcCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc291cmNlTWFwSFRU
UEhlYWRlcihBU0NJSUxpdGVyYWwoIlNvdXJjZU1hcCIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRlZChBU0NJSUxpdGVyYWwo
IlgtU291cmNlTWFwIikpOwogCiAgICAgaWYgKCFzY3JpcHQudXJsLmlzRW1wdHkoKSkgewogICAg
ICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtX3BhZ2VBZ2VudC0+Y2FjaGVkUmVzb3Vy
Y2UoJm1fcGFnZS5tYWluRnJhbWUoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgc2NyaXB0LnVybCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggZWQxN2ZhOS4uMjhlZjA3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0yODksNyArMjg5LDcg
QEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlKQogICAgICAgICBtX2hhc1BlbmRpbmdFcnJvckV2ZW50ID0gdHJ1ZTsKICAgICAgICAgZXJy
b3JFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKCp0aGlzKTsKIAotICAgICAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJ
TGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIGltYWdlIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBS
ZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiBpbWFn
ZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikp
OwogICAgICAgICBlbGVtZW50KCkuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UpOwog
CiAgICAgICAgIEFTU0VSVCghbV9oYXNQZW5kaW5nTG9hZEV2ZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggNDBlOWFkNS4uNmRhMTA4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBA
QCB2b2lkIFRleHRUcmFja0xvYWRlcjo6ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyYwogCiB2b2lkIFRleHRUcmFja0xvYWRlcjo6Y29yc1Bv
bGljeVByZXZlbnRlZExvYWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4gdGV4
dCB0cmFjayBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xp
Y3kuIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2Fn
ZShBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiB0ZXh0IHRyYWNrIGxvYWQgZGVuaWVkIGJ5IENy
b3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAg
ICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgbV9zdGF0ZSA9IEZhaWxl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5jcHAKaW5kZXggNWFkNTdlYy4uYTA1ZGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg4LDcgQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmluaXRpYXRvck5hbWUoKSBjb25z
dAogICAgIGlmICghbV9pbml0aWF0b3JOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1f
aW5pdGlhdG9yTmFtZTsKIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIGRlZmF1bHROYW1lLCAoInJlc291cmNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGRlZmF1bHROYW1lKCJyZXNvdXJjZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHJldHVybiBkZWZhdWx0TmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggZmVmMzhkNy4uMmI2NDNiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiU3VkZGVuVGVybWluYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQXV0b2RyYWlu
ZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIC8vIEZvciBt
ZXRob2RzIHRoYXQgYXJlIG1lYW50IHRvIHN1cHBvcnQgQVBJIGZyb20gdGhlIG1haW4gdGhyZWFk
IC0gc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW50ZXJuYWxseQpAQCAtODc5LDggKzg4MCw4IEBAIFN0
cmluZyBJY29uRGF0YWJhc2U6OmRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKIFN0cmluZyBJY29uRGF0
YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSwgKEFTQ0lJTGl0
ZXJhbCgiV2VicGFnZUljb25zLmRiIikpKTsKLSAgICByZXR1cm4gZGVmYXVsdERhdGFiYXNlRmls
ZW5hbWUuaXNvbGF0ZWRDb3B5KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoQVNDSUlMaXRlcmFsKCJXZWJwYWdlSWNvbnMuZGIiKSk7
CisgICAgcmV0dXJuIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lLmdldCgpLmlzb2xhdGVkQ29weSgp
OwogfQogCiAvLyBVbmxpa2UgZ2V0T3JDcmVhdGVQYWdlVVJMUmVjb3JkKCksIGdldE9yQ3JlYXRl
SWNvblJlY29yZCgpIGRvZXMgbm90IG1hcmsgdGhlIGljb24gYXMgImludGVyZXN0ZWQgaW4gaW1w
b3J0IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAK
aW5kZXggYTk3NGNkOC4uMTYzZWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiVXNlclN0
eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI4NCw3ICsyODUsNyBAQCB2
b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRl
KGNvbnN0IFN0cmluZyYgb3ZlcnJpZAogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1cGRh
dGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKQogewogICAgIC8vIElkZW50aWZ5IG91ciBvdmVy
cmlkZSBzdHlsZSBzaGVldCB3aXRoIGEgdW5pcXVlIFVSTCAtIGEgbmV3IHNjaGVtZSBhbmQgYSBV
VUlELgotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkwsIGNhcHRpb25zU3R5
bGVTaGVldFVSTCwgKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFG
NkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIikpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxVUkw+IGNhcHRpb25zU3R5bGVTaGVldFVSTChQYXJzZWRVUkxTdHJpbmcsICJ1c2Vy
LWNhcHRpb25zLW92ZXJyaWRlOjAxRjZBRjEyLUMzQjAtNEY3MC1BRjVFLUEzRTAwMjM0REMyMyIp
OwogCiAgICAgYXV0byYgcGFnZXMgPSBtX3BhZ2VHcm91cC5wYWdlcygpOwogICAgIGZvciAoYXV0
byYgcGFnZSA6IHBhZ2VzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmluZGV4IDZhMWU5YjcuLjcyY2FiMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2lu
Y2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKICNpbmNsdWRlICJWVFRDdWUuaCIKKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KQEAgLTI0Niw3ICsyNDcsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUY6OmNhcHRpb25zQmFja2dyb3VuZENTUygpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBk
ZWZhdWx0IHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVk
aWFDb250cm9scy5jc3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVzCiAg
ICAgLy8gYW5kIHdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2Rlcy4KLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3Is
IChDb2xvcigwLCAwLCAwLCAwLjggKiAyNTUpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PENvbG9yPiBkZWZhdWx0QmFja2dyb3VuZENvbG9yKDAsIDAsIDAsIDAuOCAqIDI1NSk7CiAKICAg
ICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CiAKQEAgLTM0OSwxMCArMzUw
LDEwIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y29sb3JQcm9wZXJ0
eUNTUyhDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBDCiAKIFN0cmluZyBDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNUZXh0RWRnZUNTUygpIGNvbnN0CiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlUmFpc2VkLCAo
IiAtLjA1ZW0gLS4wNWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZURl
cHJlc3NlZCwgKCIgLjA1ZW0gLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRn
ZVN0eWxlRHJvcFNoYWRvdywgKCIgLjA3NWVtIC4wNzVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
U3RyaW5nLCBlZGdlU3R5bGVVbmlmb3JtLCAoIiAuMDNlbSAiLCBTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gZWRn
ZVN0eWxlUmFpc2VkKEFTQ0lJTGl0ZXJhbCgiIC0uMDVlbSAtLjA1ZW0gMCAiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gZWRnZVN0eWxlRGVwcmVzc2VkKEFTQ0lJ
TGl0ZXJhbCgiIC4wNWVtIC4wNWVtIDAgIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IGVkZ2VTdHlsZURyb3BTaGFkb3coQVNDSUlMaXRlcmFsKCIgLjA3NWVtIC4w
NzVlbSAwICIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBlZGdl
U3R5bGVVbmlmb3JtKEFTQ0lJTGl0ZXJhbCgiIC4wM2VtICIpKTsKIAogICAgIGJvb2wgdW51c2Vk
OwogICAgIENvbG9yIGNvbG9yID0gY2FwdGlvbnNUZXh0Q29sb3IodW51c2VkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCBjNDYxMThkLi4w
NTliYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFj
ay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKQEAgLTk5NCw3ICs5OTUsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrU291
cmNlQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdAogCiBib29s
IENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250
ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2Us
IChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IFVSTCBiZWNhdXNl
IGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0
aXZlOiAiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNz
YWdlKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIEphdmFTY3JpcHQgVVJMIGJlY2F1
c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJl
Y3RpdmU6ICIpKTsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxp
bmVBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgp
KSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCB0cnVlKQogICAgICAg
ICA6IChtX3JlcG9ydE9ubHkgfHwgY2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2Ny
aXB0U3JjLmdldCgpKSkpOwpAQCAtMTAwMiw3ICsxMDAzLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVM
aXN0OjphbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3Qg
V1RGOjoKIAogYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRl
eHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdT
dGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBpbmxp
bmUgZXZlbnQgaGFuZGxlciBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVu
dCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVj
dXRlIGlubGluZSBldmVudCBoYW5kbGVyIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2lu
ZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKICAgICByZXR1cm4gcmVw
b3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpT
ZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0
aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRV
UkwsIGNvbnRleHRMaW5lLCB0cnVlKQogICAgICAgICA6IChtX3JlcG9ydE9ubHkgfHwgY2hlY2tJ
bmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSkpOwpAQCAtMTAxMCw3
ICsxMDExLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50SGFuZGxl
cnMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdAogCiBib29sIENTUERpcmVjdGl2ZUxp
c3Q6OmFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RG
OjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJS
ZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBm
b2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgi
UmVmdXNlZCB0byBleGVjdXRlIGlubGluZSBzY3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUg
Zm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpOwogICAgIHJl
dHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXM6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlv
bihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwg
Y29udGV4dFVSTCwgY29udGV4dExpbmUsIHRydWUpIDoKICAgICAgICAgKG1fcmVwb3J0T25seSB8
fCBjaGVja0lubGluZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpKSk7CkBA
IC0xMDE4LDcgKzEwMTksNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2Ny
aXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcgogCiBib29sIENTUERp
cmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBj
b25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxp
dGVyYWwoIlJlZnVzZWQgdG8gYXBwbHkgaW5saW5lIHN0eWxlIGJlY2F1c2UgaXQgdmlvbGF0ZXMg
dGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRl
cmFsKCJSZWZ1c2VkIHRvIGFwcGx5IGlubGluZSBzdHlsZSBiZWNhdXNlIGl0IHZpb2xhdGVzIHRo
ZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7CiAgICAg
cmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1czo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0
aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2Us
IGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBmYWxzZSkgOgogICAgICAgICAobV9yZXBvcnRPbmx5
IHx8IGNoZWNrSW5saW5lKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKSkpOwpA
QCAtMTAyNiw3ICsxMDI3LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVN0
eWxlKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmQKIAogYm9vbCBDU1BE
aXJlY3RpdmVMaXN0OjphbGxvd0V2YWwoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2Us
IChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXZhbHVhdGUgc2NyaXB0IGJlY2F1c2UgaXQgdmlv
bGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIp
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVND
SUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV2YWx1YXRlIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVz
IHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7CiAg
ICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9y
dGluZ1N0YXR1czo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrRXZhbEFuZFJlcG9ydFZpb2xh
dGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2Fn
ZSwgU3RyaW5nKCksIFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgc3RhdGUpIDoK
ICAgICAgICAgKG1fcmVwb3J0T25seSB8fCBjaGVja0V2YWwob3BlcmF0aXZlRGlyZWN0aXZlKG1f
c2NyaXB0U3JjLmdldCgpKSkpOwpAQCAtMTY3NiwxMiArMTY3NywxMiBAQCB2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4
dCwgY29uc3QgUwogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VW5zdXBwb3J0
ZWREaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFsbG93LCAoQVNDSUlMaXRlcmFsKCJhbGxvdyIp
KSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb3B0aW9ucywg
KEFTQ0lJTGl0ZXJhbCgib3B0aW9ucyIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgcG9saWN5VVJJLCAoQVNDSUlMaXRlcmFsKCJwb2xpY3ktdXJpIikpKTsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhbGxvd01lc3NhZ2Us
IChBU0NJSUxpdGVyYWwoIlRoZSAnYWxsb3cnIGRpcmVjdGl2ZSBoYXMgYmVlbiByZXBsYWNlZCB3
aXRoICdkZWZhdWx0LXNyYycuIFBsZWFzZSB1c2UgdGhhdCBkaXJlY3RpdmUgaW5zdGVhZCwgYXMg
J2FsbG93JyBoYXMgbm8gZWZmZWN0LiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgb3B0aW9uc01lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlRoZSAnb3B0aW9u
cycgZGlyZWN0aXZlIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggJ3Vuc2FmZS1pbmxpbmUnIGFuZCAn
dW5zYWZlLWV2YWwnIHNvdXJjZSBleHByZXNzaW9ucyBmb3IgdGhlICdzY3JpcHQtc3JjJyBhbmQg
J3N0eWxlLXNyYycgZGlyZWN0aXZlcy4gUGxlYXNlIHVzZSB0aG9zZSBkaXJlY3RpdmVzIGluc3Rl
YWQsIGFzICdvcHRpb25zJyBoYXMgbm8gZWZmZWN0LiIpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcG9saWN5VVJJTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgi
VGhlICdwb2xpY3ktdXJpJyBkaXJlY3RpdmUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzcGVj
aWZpY2F0aW9uLiBQbGVhc2Ugc3BlY2lmeSBhIGNvbXBsZXRlIHBvbGljeSB2aWEgdGhlIENvbnRl
bnQtU2VjdXJpdHktUG9saWN5IGhlYWRlci4iKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGFsbG93KEFTQ0lJTGl0ZXJhbCgiYWxsb3ciKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gb3B0aW9ucyhBU0NJSUxpdGVyYWwoIm9wdGlvbnMiKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcG9saWN5VVJJKEFTQ0lJTGl0ZXJhbCgicG9s
aWN5LXVyaSIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhbGxvd01lc3Nh
Z2UoQVNDSUlMaXRlcmFsKCJUaGUgJ2FsbG93JyBkaXJlY3RpdmUgaGFzIGJlZW4gcmVwbGFjZWQg
d2l0aCAnZGVmYXVsdC1zcmMnLiBQbGVhc2UgdXNlIHRoYXQgZGlyZWN0aXZlIGluc3RlYWQsIGFz
ICdhbGxvdycgaGFzIG5vIGVmZmVjdC4iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gb3B0aW9uc01lc3NhZ2UoQVNDSUlMaXRlcmFsKCJUaGUgJ29wdGlvbnMnIGRpcmVjdGl2
ZSBoYXMgYmVlbiByZXBsYWNlZCB3aXRoICd1bnNhZmUtaW5saW5lJyBhbmQgJ3Vuc2FmZS1ldmFs
JyBzb3VyY2UgZXhwcmVzc2lvbnMgZm9yIHRoZSAnc2NyaXB0LXNyYycgYW5kICdzdHlsZS1zcmMn
IGRpcmVjdGl2ZXMuIFBsZWFzZSB1c2UgdGhvc2UgZGlyZWN0aXZlcyBpbnN0ZWFkLCBhcyAnb3B0
aW9ucycgaGFzIG5vIGVmZmVjdC4iKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gcG9saWN5VVJJTWVzc2FnZShBU0NJSUxpdGVyYWwoIlRoZSAncG9saWN5LXVyaScgZGlyZWN0
aXZlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgc3BlY2lmaWNhdGlvbi4gUGxlYXNlIHNwZWNp
ZnkgYSBjb21wbGV0ZSBwb2xpY3kgdmlhIHRoZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBoZWFk
ZXIuIikpOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsIGFsbG93KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA5OWE5ZjVhLi44
NjJiOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMTAsNiArMTEwLDcgQEAK
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTg1LDEzICsxODYsMTMgQEAg
dHlwZWRlZiBIYXNoQ291bnRlZFNldDxET01XaW5kb3cqPiBET01XaW5kb3dTZXQ7CiAKIHN0YXRp
YyBET01XaW5kb3dTZXQmIHdpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChET01XaW5kb3dTZXQsIHdpbmRvd3NXaXRo
VW5sb2FkRXZlbnRMaXN0ZW5lcnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE9N
V2luZG93U2V0PiB3aW5kb3dzV2l0aFVubG9hZEV2ZW50TGlzdGVuZXJzOwogICAgIHJldHVybiB3
aW5kb3dzV2l0aFVubG9hZEV2ZW50TGlzdGVuZXJzOwogfQogCiBzdGF0aWMgRE9NV2luZG93U2V0
JiB3aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRE9NV2luZG93U2V0LCB3aW5kb3dzV2l0aEJlZm9yZVVu
bG9hZEV2ZW50TGlzdGVuZXJzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERPTVdp
bmRvd1NldD4gd2luZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVyczsKICAgICByZXR1
cm4gd2luZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVyczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDFjZTdiNTQuLjkxODJkM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTk2LDYgKzk2LDcgQEAKICNpbmNsdWRlICJXaW5k
b3dzS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFu
Z2UuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDAxLDcgKzQwMiw3IEBAIEV2ZW50
SGFuZGxlcjo6fkV2ZW50SGFuZGxlcigpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIERyYWdT
dGF0ZSYgRXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChEcmFnU3RhdGUsIHN0YXRlLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPERyYWdTdGF0ZT4gc3RhdGU7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogI2VuZGlmIC8v
IEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0zMDc2LDEwICszMDc3LDEwIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGluaXRpYWxLZXlF
dmVudCkKIAogc3RhdGljIEZvY3VzRGlyZWN0aW9uIGZvY3VzRGlyZWN0aW9uRm9yS2V5KGNvbnN0
IEF0b21pY1N0cmluZyYga2V5SWRlbnRpZmllcikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBEb3duLCAoIkRvd24iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgVXAsICgiVXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
TGVmdCwgKCJMZWZ0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIFJpZ2h0LCAoIlJp
Z2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IERvd24oIkRvd24iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBVcCgiVXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBMZWZ0KCJMZWZ0IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gUmlnaHQoIlJpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CiAKICAgICBGb2N1c0RpcmVjdGlvbiByZXRWYWwgPSBGb2N1c0RpcmVjdGlvbk5vbmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYjc2MzM2OC4uNzQwZTlmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBzdGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhw
cmVzc2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAg
Ly8gUkVWSUVXLSB2ZXJzaW9uIG9mIHRoaXMgY2FsbCBpbiBGcmFtZU1hYy5tbSBjYWNoZXMgYmFz
ZWQgb24gdGhlIE5TQXJyYXkgcHRycyBiZWluZwogICAgIC8vIHRoZSBzYW1lIGFjcm9zcyBjYWxs
cy4gIFdlIGNhbid0IGRvIHRoYXQuCiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiwgd29yZFJlZ0V4cCwgKCJcXHciLCBUZXh0
Q2FzZVNlbnNpdGl2ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHciLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7CiAg
ICAgU3RyaW5nQnVpbGRlciBwYXR0ZXJuOwogICAgIHBhdHRlcm4uYXBwZW5kKCcoJyk7CiAgICAg
dW5zaWduZWQgaW50IG51bUxhYmVscyA9IGxhYmVscy5zaXplKCk7CkBAIC0zMTcsOCArMzE3LDgg
QEAgc3RhdGljIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gY3JlYXRlUmVnRXhwRm9yTGFi
ZWxzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogICAgICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hh
ciA9IGZhbHNlOwogICAgICAgICBib29sIGVuZHNXaXRoV29yZENoYXIgPSBmYWxzZTsKICAgICAg
ICAgaWYgKGxhYmVsLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXIg
PSB3b3JkUmVnRXhwLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKLSAgICAgICAg
ICAgIGVuZHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLm1hdGNoKGxhYmVsLnN1YnN0cmluZyhs
YWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOworICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRD
aGFyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7
CisgICAgICAgICAgICBlbmRzV2l0aFdvcmRDaGFyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChs
YWJlbC5zdWJzdHJpbmcobGFiZWwubGVuZ3RoKCkgLSAxLCAxKSkgPj0gMDsKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKaW5kZXgg
MGY1ZTJiZS4uMGJlMmUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTmF2aWdhdG9yQmFzZS5oIgogCiAjaW5jbHVkZSAi
TmV0d29ya1N0YXRlTm90aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIE9TKExJTlVYKQpAQCAtOTMs
NyArOTQsNyBAQCBTdHJpbmcgTmF2aWdhdG9yQmFzZTo6cGxhdGZvcm0oKSBjb25zdAogICAgIGlm
ICghU3RyaW5nKFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNKS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBXRUJDT1JFX05BVklHQVRPUl9QTEFURk9STTsKICAgICBzdHJ1Y3QgdXRzbmFtZSBv
c25hbWU7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcGxhdGZv
cm1OYW1lLCAodW5hbWUoJm9zbmFtZSkgPj0gMCA/IFN0cmluZyhvc25hbWUuc3lzbmFtZSkgKyBT
dHJpbmcoIiAiKSArIFN0cmluZyhvc25hbWUubWFjaGluZSkgOiBlbXB0eVN0cmluZygpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcGxhdGZvcm1OYW1lKHVuYW1lKCZvc25h
bWUpID49IDAgPyBTdHJpbmcob3NuYW1lLnN5c25hbWUpICsgU3RyaW5nKCIgIikgKyBTdHJpbmco
b3NuYW1lLm1hY2hpbmUpIDogZW1wdHlTdHJpbmcoKSk7CiAgICAgcmV0dXJuIHBsYXRmb3JtTmFt
ZTsKICNlbHNlCiAgICAgcmV0dXJuIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAKaW5kZXggZjZjY2MxNC4uNzQ1
MGMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVmlzaWJpbGl0eVN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwCkBA
IC0zMSwxNCArMzEsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYWdlVmlz
aWJpbGl0eVN0YXRlLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgcGFnZVZpc2liaWxpdHlTdGF0ZVN0cmluZyhQYWdl
VmlzaWJpbGl0eVN0YXRlIHN0YXRlKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIHZpc2libGUsIChBU0NJSUxpdGVyYWwoInZpc2libGUiKSkpOwot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGhpZGRlbiwg
KEFTQ0lJTGl0ZXJhbCgiaGlkZGVuIikpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RyaW5nLCBwcmVyZW5kZXIsIChBU0NJSUxpdGVyYWwoInByZXJlbmRlciIp
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdmlzaWJsZShBU0NJ
SUxpdGVyYWwoInZpc2libGUiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0
cmluZz4gaGlkZGVuKEFTQ0lJTGl0ZXJhbCgiaGlkZGVuIikpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBTdHJpbmc+IHByZXJlbmRlcihBU0NJSUxpdGVyYWwoInByZXJlbmRlciIp
KTsKIAogICAgIHN3aXRjaCAoc3RhdGUpIHsKICAgICBjYXNlIFBhZ2VWaXNpYmlsaXR5U3RhdGVW
aXNpYmxlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRleCBlMzk4MTRi
Li4zYmQzMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIk9yaWdpbkFjY2Vzc0VudHJ5LmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00NSw3ICs0Niw3IEBAIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6
dW5pcXVlX3B0cjxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+PiBPcmlnaW5BY2Nlc3NNYXA7CiAKIHN0
YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKE9yaWdpbkFjY2Vzc01hcCwgb3JpZ2luQWNjZXNzTWFwLCAo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9yaWdpbkFjY2Vzc01hcD4gb3JpZ2luQWNj
ZXNzTWFwOwogICAgIHJldHVybiBvcmlnaW5BY2Nlc3NNYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCAyZWExOGVjLi42NTY5Y2Rj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAKICNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYyLDcgKzYz
LDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhjb25zdCBV
UkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4KIAogYm9vbCBVc2VyQ29udGVudFVSTFBhdHRl
cm46OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzY2hlbWVTZXBhcmF0b3IsIChBU0NJSUxpdGVy
YWwoIjovLyIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2No
ZW1lU2VwYXJhdG9yKEFTQ0lJTGl0ZXJhbCgiOi8vIikpOwogCiAgICAgc2l6ZV90IHNjaGVtZUVu
ZFBvcyA9IHBhdHRlcm4uZmluZChzY2hlbWVTZXBhcmF0b3IpOwogICAgIGlmIChzY2hlbWVFbmRQ
b3MgPT0gbm90Rm91bmQpCkBAIC03MCw3ICs3MSw3IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0
ZXJuOjpwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiAKICAgICBtX3NjaGVtZSA9IHBhdHRl
cm4ubGVmdChzY2hlbWVFbmRQb3MpOwogCi0gICAgdW5zaWduZWQgaG9zdFN0YXJ0UG9zID0gc2No
ZW1lRW5kUG9zICsgc2NoZW1lU2VwYXJhdG9yLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIGhvc3RT
dGFydFBvcyA9IHNjaGVtZUVuZFBvcyArIHNjaGVtZVNlcGFyYXRvci5nZXQoKS5sZW5ndGgoKTsK
ICAgICBpZiAoaG9zdFN0YXJ0UG9zID49IHBhdHRlcm4ubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDc4N2YwYTAuLjQ3NDUxYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5j
cHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bv
aW50ZXJDb21wYXJpc29uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTY0NSwx
OSArNjQ2LDE4IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IHNoYWRvd0xpc3RMZW5ndGgoY29uc3Qg
U2hhZG93RGF0YSogc2hhZG93KQogCiBzdGF0aWMgaW5saW5lIGNvbnN0IFNoYWRvd0RhdGEqIHNo
YWRvd0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdywgY29uc3QgU2hhZG93
RGF0YSogb3RoZXJTaGFkb3cpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFNoYWRvd0RhdGEsIGRlZmF1bHRTaGFkb3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFs
LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFNoYWRvd0RhdGEsIGRlZmF1bHRJbnNldFNoYWRvd0RhdGEsIChJbnRQb2ludCgp
LCAwLCAwLCBJbnNldCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudCkpOwotCi0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFNoYWRvd0RhdGEsIGRlZmF1bHRXZWJLaXRCb3hTaGFk
b3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFsLCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJl
bnQpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU2hhZG93RGF0YSwgZGVm
YXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YSwgKEludFBvaW50KCksIDAsIDAsIEluc2V0LCB0
cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hh
ZG93RGF0YT4gZGVmYXVsdFNoYWRvd0RhdGEoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFsLCBmYWxz
ZSwgQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93
RGF0YT4gZGVmYXVsdEluc2V0U2hhZG93RGF0YShJbnRQb2ludCgpLCAwLCAwLCBJbnNldCwgZmFs
c2UsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRv
d0RhdGE+IGRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhKEludFBvaW50KCksIDAsIDAsIE5vcm1h
bCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YShJbnRQb2ludCgpLCAw
LCAwLCBJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50KTsKIAogICAgIGlmIChzcmNTaGFk
b3cpCiAgICAgICAgIHJldHVybiBzcmNTaGFkb3c7CiAKICAgICBpZiAob3RoZXJTaGFkb3ctPnN0
eWxlKCkgPT0gSW5zZXQpCi0gICAgICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hT
aGFkb3coKSA/ICZkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhIDogJmRlZmF1bHRJbnNl
dFNoYWRvd0RhdGE7CisgICAgICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFk
b3coKSA/ICZkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRJ
bnNldFNoYWRvd0RhdGEuZ2V0KCk7CiAKLSAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0
Qm94U2hhZG93KCkgPyAmZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEgOiAmZGVmYXVsdFNoYWRv
d0RhdGE7CisgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gJmRl
ZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRTaGFkb3dEYXRhLmdldCgp
OwogfQogCiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJTaGFkb3cgOiBwdWJsaWMgQW5pbWF0aW9uUHJv
cGVydHlXcmFwcGVyQmFzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAppbmRleCBiODIyMjU2Li42NTUxZDY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0yMjEsNyArMjIyLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246
OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgUmVuZGUK
ICAgICAgICAgLy8gVG9zcyB0aGUgYW5pbWF0aW9uIG9yZGVyIG1hcC4KICAgICAgICAgbV9rZXlm
cmFtZUFuaW1hdGlvbk9yZGVyTWFwLmNsZWFyKCk7CiAKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbm9uZSwgKCJub25lIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBub25lKCJub25lIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIAogICAgICAgICAvLyBOb3cgbWFyayBhbnkgc3Rp
bGwgYWN0aXZlIGFuaW1hdGlvbnMgYXMgYWN0aXZlIGFuZCBhZGQgYW55IG5ldyBhbmltYXRpb25z
LgogICAgICAgICBpZiAodGFyZ2V0U3R5bGUtPmFuaW1hdGlvbnMoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cnNvci5jcHAKaW5kZXggOTM1OTNhZC4uNjBhNjE5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DdXJzb3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODksMjU5
ICsxOTAsMjU5IEBAIFBsYXRmb3JtQ3Vyc29yIEN1cnNvcjo6cGxhdGZvcm1DdXJzb3IoKSBjb25z
dAogCiBjb25zdCBDdXJzb3ImIHBvaW50ZXJDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlBvaW50ZXIpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6UG9pbnRlcik7CiAgICAgcmV0dXJu
IGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY3Jvc3NDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkNyb3NzKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkNyb3NzKTsKICAgICByZXR1cm4g
YzsKIH0KIAogY29uc3QgQ3Vyc29yJiBoYW5kQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpIYW5kKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkhhbmQpOwogICAgIHJldHVybiBjOwog
fQogCiBjb25zdCBDdXJzb3ImIG1vdmVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok1vdmUpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6TW92ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAK
IGNvbnN0IEN1cnNvciYgdmVydGljYWxUZXh0Q3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpWZXJ0aWNhbFRleHQpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6VmVydGljYWxUZXh0KTsK
ICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBjZWxsQ3Vyc29yKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpDZWxsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkNlbGwpOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNvbnRleHRNZW51Q3Vyc29yKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpDb250
ZXh0TWVudSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpD
b250ZXh0TWVudSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgYWxpYXNDdXJz
b3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChD
dXJzb3I6OkFsaWFzKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OkFsaWFzKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiB6b29tSW5DdXJz
b3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChD
dXJzb3I6Olpvb21JbikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vy
c29yOjpab29tSW4pOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHpvb21PdXRD
dXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMs
IChDdXJzb3I6Olpvb21PdXQpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBj
KEN1cnNvcjo6Wm9vbU91dCk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY29w
eUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwg
YywgKEN1cnNvcjo6Q29weSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMo
Q3Vyc29yOjpDb3B5KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub25lQ3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpOb25lKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6Ok5vbmUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHByb2dyZXNzQ3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpQcm9ncmVzcykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMo
Q3Vyc29yOjpQcm9ncmVzcyk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9E
cm9wQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29y
LCBjLCAoQ3Vyc29yOjpOb0Ryb3ApKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29y
PiBjKEN1cnNvcjo6Tm9Ecm9wKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBu
b3RBbGxvd2VkQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Q3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3RBbGxvd2VkKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vdEFsbG93ZWQpOwogICAgIHJldHVybiBjOwogfQogCiBj
b25zdCBDdXJzb3ImIGlCZWFtQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpJQmVhbSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpJQmVhbSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNv
bnN0IEN1cnNvciYgd2FpdEN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6V2FpdCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpXYWl0KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3Qg
Q3Vyc29yJiBoZWxwQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpIZWxwKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEN1cnNvcj4gYyhDdXJzb3I6OkhlbHApOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJz
b3ImIGVhc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkVhc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6RWFzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9
CiAKIGNvbnN0IEN1cnNvciYgbm9ydGhSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoUmVzaXplKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vcnRoUmVzaXplKTsK
ICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3J0aEVhc3RSZXNpemVDdXJzb3Io
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJz
b3I6Ok5vcnRoRWFzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+
IGMoQ3Vyc29yOjpOb3J0aEVhc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIG5vcnRoV2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Tm9ydGhXZXN0UmVzaXplKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vcnRoV2VzdFJlc2l6ZSk7
CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgc291dGhSZXNpemVDdXJzb3IoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6
OlNvdXRoUmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJz
b3I6OlNvdXRoUmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBzb3V0
aEVhc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChDdXJzb3IsIGMsIChDdXJzb3I6OlNvdXRoRWFzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpTb3V0aEVhc3RSZXNpemUpOwogICAgIHJldHVy
biBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6U291dGhX
ZXN0UmVzaXplKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6
OlNvdXRoV2VzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgd2Vz
dFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6V2VzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxDdXJzb3I+IGMoQ3Vyc29yOjpXZXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiBub3J0aFNvdXRoUmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aFNvdXRoUmVzaXplKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vcnRoU291dGhS
ZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGVhc3RXZXN0UmVzaXpl
Q3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBj
LCAoQ3Vyc29yOjpFYXN0V2VzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxD
dXJzb3I+IGMoQ3Vyc29yOjpFYXN0V2VzdFJlc2l6ZSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNv
bnN0IEN1cnNvciYgbm9ydGhFYXN0U291dGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aEVhc3RT
b3V0aFdlc3RSZXNpemUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1
cnNvcjo6Tm9ydGhFYXN0U291dGhXZXN0UmVzaXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiBub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5vcnRoV2VzdFNv
dXRoRWFzdFJlc2l6ZSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vy
c29yOjpOb3J0aFdlc3RTb3V0aEVhc3RSZXNpemUpOwogICAgIHJldHVybiBjOwogfQogCiBjb25z
dCBDdXJzb3ImIGNvbHVtblJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6Q29sdW1uUmVzaXplKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkNvbHVtblJlc2l6ZSk7CiAgICAg
cmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgcm93UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpSb3dSZXNp
emUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6Um93UmVz
aXplKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBtaWRkbGVQYW5uaW5nQ3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpNaWRkbGVQYW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNv
cj4gYyhDdXJzb3I6Ok1pZGRsZVBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAogY29u
c3QgQ3Vyc29yJiBlYXN0UGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKEN1cnNvcjo6RWFzdFBhbm5pbmcpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6RWFzdFBhbm5pbmcpOwogICAgIHJl
dHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBub3J0aFBhbm5pbmdDdXJzb3IoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6Ok5v
cnRoUGFubmluZykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29y
OjpOb3J0aFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBu
b3J0aEVhc3RQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpOb3J0aEVhc3RQYW5uaW5nKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6Ok5vcnRoRWFzdFBhbm5pbmcpOwogICAg
IHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBub3J0aFdlc3RQYW5uaW5nQ3Vyc29y
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vy
c29yOjpOb3J0aFdlc3RQYW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNv
cj4gYyhDdXJzb3I6Ok5vcnRoV2VzdFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAog
Y29uc3QgQ3Vyc29yJiBzb3V0aFBhbm5pbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OlNvdXRoUGFubmluZykpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDdXJzb3I+IGMoQ3Vyc29yOjpTb3V0aFBhbm5pbmcpOwog
ICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiBzb3V0aEVhc3RQYW5uaW5nQ3Vy
c29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAo
Q3Vyc29yOjpTb3V0aEVhc3RQYW5uaW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1
cnNvcj4gYyhDdXJzb3I6OlNvdXRoRWFzdFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAg
IAogY29uc3QgQ3Vyc29yJiBzb3V0aFdlc3RQYW5uaW5nQ3Vyc29yKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoQ3Vyc29yOjpTb3V0aFdlc3RQYW5u
aW5nKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OlNvdXRo
V2VzdFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogICAgIAogY29uc3QgQ3Vyc29yJiB3ZXN0
UGFubmluZ0N1cnNvcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEN1
cnNvciwgYywgKEN1cnNvcjo6V2VzdFBhbm5pbmcpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6V2VzdFBhbm5pbmcpOwogICAgIHJldHVybiBjOwogfQogCiBj
b25zdCBDdXJzb3ImIGdyYWJDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkdyYWIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Q3Vyc29yPiBjKEN1cnNvcjo6R3JhYik7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0
IEN1cnNvciYgZ3JhYmJpbmdDdXJzb3IoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChDdXJzb3IsIGMsIChDdXJzb3I6OkdyYWJiaW5nKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEN1cnNvcj4gYyhDdXJzb3I6OkdyYWJiaW5nKTsKICAgICByZXR1cm4gYzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCmluZGV4IDU4OTE3ZmYuLjY1NTc4ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgU3Ry
aW5nIGRlZmF1bHRMYW5ndWFnZSgpCiAKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVk
TGFuZ3VhZ2VzT3ZlcnJpZGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChWZWN0b3I8U3RyaW5nPiwgb3ZlcnJpZGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VmVjdG9yPFN0cmluZz4+IG92ZXJyaWRlOwogICAgIHJldHVybiBvdmVycmlkZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCA5M2Qy
ZTkwLi43OTUxZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6
ZWRTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L0NoYXJhY3Rlck5hbWVzLmg+CiAKICNpZiBVU0UoQ0YpCkBAIC03OSwxMSArODAsMTEgQEAgc3Rh
dGljIFN0cmluZyB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbShjb25zdCBTdHJpbmcm
IG9yaWdpbmFsKQogCiAgICAgLy8gVHJ1bmNhdGUgdGhlIHN0cmluZyBpZiBpdCdzIHRvbyBsb25n
LiBUaGlzIGlzIGluIGNvbnNpc3RlbmN5IHdpdGggQXBwS2l0LgogICAgIHVuc2lnbmVkIG1heE51
bWJlck9mR3JhcGhlbWVDbHVzdGVyc0luTG9va3VwTWVudUl0ZW0gPSAyNDsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBlbGxpcHNpcywgKCZob3Jpem9udGFsRWxs
aXBzaXMsIDEpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbGxpcHNpcygm
aG9yaXpvbnRhbEVsbGlwc2lzLCAxKTsKIAogICAgIFN0cmluZyB0cmltbWVkID0gb3JpZ2luYWwu
c3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFyYWN0ZXJzID0gbnVt
Q2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyh0cmltbWVkLCBtYXhOdW1iZXJPZkdyYXBoZW1l
Q2x1c3RlcnNJbkxvb2t1cE1lbnVJdGVtKTsKLSAgICByZXR1cm4gbnVtYmVyT2ZDaGFyYWN0ZXJz
ID09IHRyaW1tZWQubGVuZ3RoKCkgPyB0cmltbWVkIDogdHJpbW1lZC5sZWZ0KG51bWJlck9mQ2hh
cmFjdGVycykgKyBlbGxpcHNpczsKKyAgICByZXR1cm4gbnVtYmVyT2ZDaGFyYWN0ZXJzID09IHRy
aW1tZWQubGVuZ3RoKCkgPyB0cmltbWVkIDogdHJpbW1lZC5sZWZ0KG51bWJlck9mQ2hhcmFjdGVy
cykgKyBlbGxpcHNpcy5nZXQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDEyN2NjNWEuLjYyMGYxYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIApAQCAtMzUyLDE2ICszNTMsMTYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCkKIAogc3RhdGljIE1lZGlhTUlNRVR5cGVNYXAm
IG1lZGlhTUlNRVR5cGVNYXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChNZWRpYU1JTUVUeXBlTWFwLCBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1lZGlhTUlNRVR5cGVNYXA+IG1lZGlhTUlNRVR5cGVG
b3JFeHRlbnNpb25NYXA7CiAKLSAgICBpZiAoIW1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAu
aXNFbXB0eSgpKQorICAgIGlmICghbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5nZXQoKS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwOwog
CiAgICAgY29uc3QgdW5zaWduZWQgbnVtUGFpcnMgPSBzaXplb2YoY29tbW9uTWVkaWFUeXBlcykg
LyBzaXplb2YoY29tbW9uTWVkaWFUeXBlc1swXSk7CiAgICAgZm9yICh1bnNpZ25lZCBuZHggPSAw
OyBuZHggPCBudW1QYWlyczsgKytuZHgpIHsKIAotICAgICAgICBpZiAobWVkaWFNSU1FVHlwZUZv
ckV4dGVuc2lvbk1hcC5jb250YWlucyhjb21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uKSkK
LSAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuZ2V0KGNvbW1vbk1lZGlh
VHlwZXNbbmR4XS5leHRlbnNpb24pLT5hcHBlbmQoY29tbW9uTWVkaWFUeXBlc1tuZHhdLnR5cGUp
OworICAgICAgICBpZiAobWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5nZXQoKS5jb250YWlu
cyhjb21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uKSkKKyAgICAgICAgICAgIG1lZGlhTUlN
RVR5cGVGb3JFeHRlbnNpb25NYXAuZ2V0KCkuZ2V0KGNvbW1vbk1lZGlhVHlwZXNbbmR4XS5leHRl
bnNpb24pLT5hcHBlbmQoY29tbW9uTWVkaWFUeXBlc1tuZHhdLnR5cGUpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+KiBzeW5vbnltcyA9IG5ldyBWZWN0b3I8U3Ry
aW5nPjsKIApAQCAtMzcxLDcgKzM3Miw3IEBAIHN0YXRpYyBNZWRpYU1JTUVUeXBlTWFwJiBtZWRp
YU1JTUVUeXBlTWFwKCkKICAgICAgICAgICAgIGlmICghc3lzdGVtVHlwZS5pc0VtcHR5KCkgJiYg
Y29tbW9uTWVkaWFUeXBlc1tuZHhdLnR5cGUgIT0gc3lzdGVtVHlwZSkKICAgICAgICAgICAgICAg
ICBzeW5vbnltcy0+YXBwZW5kKHN5c3RlbVR5cGUpOwogICAgICAgICAgICAgc3lub255bXMtPmFw
cGVuZChjb21tb25NZWRpYVR5cGVzW25keF0udHlwZSk7Ci0gICAgICAgICAgICBtZWRpYU1JTUVU
eXBlRm9yRXh0ZW5zaW9uTWFwLmFkZChjb21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uLCBz
eW5vbnltcyk7CisgICAgICAgICAgICBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldCgp
LmFkZChjb21tb25NZWRpYVR5cGVzW25keF0uZXh0ZW5zaW9uLCBzeW5vbnltcyk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTY0Miw3ICs2NDMsNyBAQCBIYXNoU2V0PFN0cmluZz4mIE1JTUVUeXBl
UmVnaXN0cnk6OmdldFVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpCiAKIGNvbnN0IFN0cmluZyYg
ZGVmYXVsdE1JTUVUeXBlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCBkZWZhdWx0TUlNRVR5cGUsIChBU0NJSUxpdGVyYWwoImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmlu
Zz4gZGVmYXVsdE1JTUVUeXBlKEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
IikpOwogICAgIHJldHVybiBkZWZhdWx0TUlNRVR5cGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAppbmRleCBhOGIwYTExLi5iNjQ2NTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0zNiwxMiArMzYsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgbG9jYWxVUkxT
Y2hlbWVzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1l
c01hcCwgbG9jYWxTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNj
aGVtZXNNYXA+IGxvY2FsU2NoZW1lczsKIAotICAgIGlmIChsb2NhbFNjaGVtZXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoImZpbGUiKTsKKyAgICBpZiAobG9jYWxTY2hl
bWVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBsb2NhbFNjaGVtZXMuZ2V0KCkuYWRkKCJm
aWxlIik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoImFw
cGxld2ViZGF0YSIpOworICAgICAgICBsb2NhbFNjaGVtZXMuZ2V0KCkuYWRkKCJhcHBsZXdlYmRh
dGEiKTsKICNlbmRpZgogICAgIH0KIApAQCAtNTAsMjEgKzUwLDIxIEBAIHN0YXRpYyBVUkxTY2hl
bWVzTWFwJiBsb2NhbFVSTFNjaGVtZXMoKQogCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgZGlzcGxh
eUlzb2xhdGVkVVJMU2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFVSTFNjaGVtZXNNYXAsIGRpc3BsYXlJc29sYXRlZFNjaGVtZXMsICgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gZGlzcGxheUlzb2xhdGVkU2NoZW1lczsK
ICAgICByZXR1cm4gZGlzcGxheUlzb2xhdGVkU2NoZW1lczsKIH0KIAogc3RhdGljIFVSTFNjaGVt
ZXNNYXAmIHNlY3VyZVNjaGVtZXMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChVUkxTY2hlbWVzTWFwLCBzZWN1cmVTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNlY3VyZVNjaGVtZXM7CiAKLSAgICBpZiAoc2VjdXJl
U2NoZW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2VjdXJlU2NoZW1lcy5hZGQoImh0dHBzIik7
Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuYWRkKCJhYm91dCIpOwotICAgICAgICBzZWN1cmVTY2hl
bWVzLmFkZCgiZGF0YSIpOwotICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZCgid3NzIik7CisgICAg
aWYgKHNlY3VyZVNjaGVtZXMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNlY3VyZVNjaGVt
ZXMuZ2V0KCkuYWRkKCJodHRwcyIpOworICAgICAgICBzZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgi
YWJvdXQiKTsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoImRhdGEiKTsKKyAgICAg
ICAgc2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoIndzcyIpOwogI2lmIFVTRShRVUlDS19MT09LKQot
ICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZChRTFByZXZpZXdQcm90b2NvbCgpKTsKKyAgICAgICAg
c2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoUUxQcmV2aWV3UHJvdG9jb2woKSk7CiAjZW5kaWYKICAg
ICB9CiAKQEAgLTczLDE0ICs3MywxNCBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2No
ZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBz
Y2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VVJMU2NoZW1lc01hcD4gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zOwogCi0gICAgaWYgKHNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2NoZW1lc1dpdGhVbmlx
dWVPcmlnaW5zLmFkZCgiYWJvdXQiKTsKLSAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
LmFkZCgiamF2YXNjcmlwdCIpOworICAgIGlmIChzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuZ2V0
KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5h
ZGQoImFib3V0Iik7CisgICAgICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5hZGQo
ImphdmFzY3JpcHQiKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIHdpbGxmdWwgdmlvbGF0aW9uIG9m
IEhUTUw1LgogICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExODg1Ci0gICAgICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5hZGQoImRhdGEi
KTsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgiZGF0YSIpOwog
ICAgIH0KIAogICAgIHJldHVybiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnM7CkBAIC04OCwyNiAr
ODgsMjYgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygp
CiAKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBlbXB0eURvY3VtZW50U2NoZW1lcygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIGVtcHR5RG9jdW1l
bnRTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+
IGVtcHR5RG9jdW1lbnRTY2hlbWVzOwogCi0gICAgaWYgKGVtcHR5RG9jdW1lbnRTY2hlbWVzLmlz
RW1wdHkoKSkKLSAgICAgICAgZW1wdHlEb2N1bWVudFNjaGVtZXMuYWRkKCJhYm91dCIpOworICAg
IGlmIChlbXB0eURvY3VtZW50U2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpCisgICAgICAgIGVtcHR5
RG9jdW1lbnRTY2hlbWVzLmdldCgpLmFkZCgiYWJvdXQiKTsKIAogICAgIHJldHVybiBlbXB0eURv
Y3VtZW50U2NoZW1lczsKIH0KIAogc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgc2NoZW1lc0ZvcmJp
ZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBzY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gc2NoZW1lczsKICAgICByZXR1cm4gc2NoZW1lczsK
IH0KIAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2No
ZW1lcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNN
YXAsIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcywgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNj
aGVtZXM7CiAKLSAgICBpZiAoY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLmlzRW1w
dHkoKSkgewotICAgICAgICBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMuYWRkKCJi
bG9iIik7CisgICAgaWYgKGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcy5nZXQoKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLmdl
dCgpLmFkZCgiYmxvYiIpOwogICAgIH0KIAogICAgIHJldHVybiBjYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdFNjaGVtZXM7CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAm
IGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCiAKIHN0YXRpYyBVUkxTY2hlbWVz
TWFwJiBub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lcygpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIG5vdEFsbG93aW5nSmF2YXNjcmlw
dFVSTHNTY2hlbWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNN
YXA+IG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzOwogICAgIHJldHVybiBub3RBbGxv
d2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lczsKIH0KIApAQCAtMTQyLDI0ICsxNDIsMjQgQEAgY29u
c3QgVVJMU2NoZW1lc01hcCYgU2NoZW1lUmVnaXN0cnk6OmxvY2FsU2NoZW1lcygpCiAKIHN0YXRp
YyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZh
dGVCcm93c2luZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNj
aGVtZXNNYXAsIHNjaGVtZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dz
aW5nLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVt
ZXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOwogICAgIHJldHVy
biBzY2hlbWVzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsKIH0K
IAogc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Q
cml2YXRlQnJvd3NpbmcoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChV
UkxTY2hlbWVzTWFwLCBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dz
aW5nLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVt
ZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiAgICAgcmV0dXJuIHNj
aGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiB9CiAKIHN0YXRp
YyBVUkxTY2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMoKQogewogICAgIC8vIEZJWE1FOiBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE2MAotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBDT1JTRW5hYmxlZFNjaGVtZXMs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gQ09SU0VuYWJs
ZWRTY2hlbWVzOwogCi0gICAgaWYgKENPUlNFbmFibGVkU2NoZW1lcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmFkZCgiaHR0cCIpOwotICAgICAgICBDT1JTRW5hYmxl
ZFNjaGVtZXMuYWRkKCJodHRwcyIpOworICAgIGlmIChDT1JTRW5hYmxlZFNjaGVtZXMuZ2V0KCku
aXNFbXB0eSgpKSB7CisgICAgICAgIENPUlNFbmFibGVkU2NoZW1lcy5nZXQoKS5hZGQoImh0dHAi
KTsKKyAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmdldCgpLmFkZCgiaHR0cHMiKTsKICAgICB9
CiAKICAgICByZXR1cm4gQ09SU0VuYWJsZWRTY2hlbWVzOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0
YXRpYyBVUkxTY2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMoKQogCiBzdGF0aWMgVVJMU2No
ZW1lc01hcCYgQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1lcygpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIHNjaGVtZXMsICgp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lczsKICAg
ICByZXR1cm4gc2NoZW1lczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuY3BwCmluZGV4IGQ3MzdlMmQuLjQzOGYzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTI4LDEzICsyOCwxNCBAQAogCiAjaW5jbHVkZSAi
U2Nyb2xsYmFyVGhlbWVNb2NrLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3JvbGxiYXJU
aGVtZSYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkKIHsKICAgICBpZiAoU2V0dGluZ3M6Om1vY2tT
Y3JvbGxiYXJzRW5hYmxlZCgpKSB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChTY3JvbGxiYXJUaGVtZU1vY2ssIG1vY2tUaGVtZSwgKCkpOworICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U2Nyb2xsYmFyVGhlbWVNb2NrPiBtb2NrVGhlbWU7CiAgICAgICAgIHJl
dHVybiBtb2NrVGhlbWU7CiAgICAgfQogICAgIHJldHVybiBuYXRpdmVUaGVtZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5jcHAKaW5kZXggNGQxYzc3YS4uODg5Yjc0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkwuY3BwCkBAIC0xOTgxLDcgKzE5ODEsNyBAQCBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHko
Y29uc3QgU3RyaW5nJiB1cmwpCiAKIGNvbnN0IFVSTCYgYmxhbmtVUkwoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkwsIHN0YXRpY0JsYW5rVVJMLCAoUGFyc2VkVVJM
U3RyaW5nLCAiYWJvdXQ6YmxhbmsiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4g
c3RhdGljQmxhbmtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6YmxhbmsiKTsKICAgICByZXR1
cm4gc3RhdGljQmxhbmtVUkw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvbi5jcHAKaW5kZXggZDY3NzBhNC4uMTIwNjE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKQEAgLTIyLDYgKzIy
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBbmltYXRpb24uaCIKIAorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFu
aW1hdGlvbjo6QW5pbWF0aW9uKCkKQEAgLTE2MCw3ICsxNjIsNyBAQCBib29sIEFuaW1hdGlvbjo6
YW5pbWF0aW9uc01hdGNoKGNvbnN0IEFuaW1hdGlvbiYgb3RoZXIsIGJvb2wgbWF0Y2hQbGF5U3Rh
dGVzKSBjbwogCiBjb25zdCBTdHJpbmcmIEFuaW1hdGlvbjo6aW5pdGlhbE5hbWUoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGluaXRpYWxWYWx1ZSwgKEFT
Q0lJTGl0ZXJhbCgibm9uZSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
aW5pdGlhbFZhbHVlKEFTQ0lJTGl0ZXJhbCgibm9uZSIpKTsKICAgICByZXR1cm4gaW5pdGlhbFZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmNwcAppbmRleCBhZTk1NTAyLi4zYzJkYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTI5LDEyICsyOSwxMyBAQAogI2lmIFVTRShB
VURJT19TRVNTSU9OKQogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBdWRpb1Nlc3Np
b24mIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEF1ZGlvU2Vzc2lvbiwgc2Vzc2lvbiwgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdWRpb1Nlc3Npb24+IHNlc3Npb247CiAgICAgcmV0dXJuIHNlc3Npb247
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKaW5k
ZXggZDFmNTI0Ni4uMGJiNGU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02
Nyw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6
ZV90KTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8QXVkaW9T
ZXNzaW9uPjsKICAgICBBdWRpb1Nlc3Npb24oKTsKICAgICB+QXVkaW9TZXNzaW9uKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKaW5kZXgg
YWY5OTJmYi4uZWEzM2VmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURkVsZXZhdGlvbi5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJIUlRGUGFubmVy
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02OCwxOCAr
NjksMTggQEAgY29uc3QgZmxvYXQgUmVzcG9uc2VTYW1wbGVSYXRlID0gNDQxMDA7CiBzdGF0aWMg
QXVkaW9CdXMqIGdldENvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXNGb3JTdWJqZWN0KGNvbnN0
IFN0cmluZyYgc3ViamVjdE5hbWUpCiB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQXVk
aW9CdXMqPiBBdWRpb0J1c01hcDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXVkaW9CdXNNYXAsIGF1ZGlvQnVzTWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF1ZGlvQnVzTWFwPiBhdWRpb0J1c01hcDsKIAogICAgIEF1ZGlvQnVzKiBidXM7Ci0gICAgQXVk
aW9CdXNNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9yID0gYXVkaW9CdXNNYXAuZmluZChzdWJqZWN0TmFt
ZSk7Ci0gICAgaWYgKGl0ZXJhdG9yID09IGF1ZGlvQnVzTWFwLmVuZCgpKSB7CisgICAgQXVkaW9C
dXNNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9yID0gYXVkaW9CdXNNYXAuZ2V0KCkuZmluZChzdWJqZWN0
TmFtZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IGF1ZGlvQnVzTWFwLmdldCgpLmVuZCgpKSB7CiAg
ICAgICAgIFJlZlB0cjxBdWRpb0J1cz4gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcyA9IEF1
ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShzdWJqZWN0TmFtZS51dGY4KCkuZGF0YSgpLCBS
ZXNwb25zZVNhbXBsZVJhdGUpOwogICAgICAgICBBU1NFUlQoY29uY2F0ZW5hdGVkSW1wdWxzZVJl
c3BvbnNlcyk7CiAgICAgICAgIGlmICghY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcykKICAg
ICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGJ1cyA9IGNvbmNhdGVuYXRlZEltcHVsc2VS
ZXNwb25zZXMucmVsZWFzZSgpLmxlYWtSZWYoKTsKLSAgICAgICAgYXVkaW9CdXNNYXAuc2V0KHN1
YmplY3ROYW1lLCBidXMpOworICAgICAgICBhdWRpb0J1c01hcC5nZXQoKS5zZXQoc3ViamVjdE5h
bWUsIGJ1cyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJ1cyA9IGl0ZXJhdG9yLT52YWx1ZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGlu
YXRpb25JT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVz
dGluYXRpb25JT1MuY3BwCmluZGV4IDlkOGQxZTEuLmFkZGI1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5j
cHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9TZXJ2aWNl
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCiBTT0ZUX0xJTksoQXVkaW9Ub29s
Ym94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1ZGlvQ29tcG9u
ZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uICppbkRlc2Mp
LCAoaW5Db21wb25lbnQsIGluRGVzYykpCkBAIC02Miw3ICs2Myw3IEBAIGNvbnN0IGludCBrUHJl
ZmVycmVkQnVmZmVyU2l6ZSA9IDI1NjsKIHR5cGVkZWYgSGFzaFNldDxBdWRpb0Rlc3RpbmF0aW9u
SU9TKj4gQXVkaW9EZXN0aW5hdGlvblNldDsKIHN0YXRpYyBBdWRpb0Rlc3RpbmF0aW9uU2V0JiBh
dWRpb0Rlc3RpbmF0aW9ucygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF1ZGlvRGVzdGluYXRpb25TZXQsIGF1ZGlvRGVzdGluYXRpb25TZXQsICgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXVkaW9EZXN0aW5hdGlvblNldD4gYXVkaW9EZXN0aW5hdGlvblNl
dDsKICAgICByZXR1cm4gYXVkaW9EZXN0aW5hdGlvblNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCBlM2VhODZh
Li5iN2JjYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJvdGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Nyw3ICs0OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBHcmFwaGljc0xheWVyKiwgVmVjdG9y
PEZsb2F0UmVjdD4+IFJlcGFpbnRNYXA7CiBzdGF0aWMgUmVwYWludE1hcCYgcmVwYWludFJlY3RN
YXAoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChSZXBhaW50TWFwLCBt
YXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVwYWludE1hcD4gbWFwOwogICAg
IHJldHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAppbmRleCA4MzVkZWEwLi4yYWNlNzNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODgsOCArODksOCBAQCBGbG9hdFNpemUg
SW1hZ2VCdWZmZXI6OnNpemVGb3JEZXN0aW5hdGlvblNpemUoRmxvYXRTaXplIHNpemUpIGNvbnN0
CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmND
b2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxpbnQ+LCBkZXZpY2VSZ2JMVVQsICgpKTsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPGludD4sIGxpbmVhclJnYkxVVCwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8aW50Pj4gZGV2aWNlUmdiTFVU
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8aW50Pj4gbGluZWFyUmdiTFVUOwog
CiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZHN0Q29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTAwLDI3ICsxMDEsMjcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JT
cGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2UgZHN0Q28KICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGRzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZUxpbmVhclJHQikg
ewotICAgICAgICBpZiAobGluZWFyUmdiTFVULmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobGlu
ZWFyUmdiTFVULmdldCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpICAv
IDI1NS4wZjsKICAgICAgICAgICAgICAgICBjb2xvciA9IChjb2xvciA8PSAwLjA0MDQ1ZiA/IGNv
bG9yIC8gMTIuOTJmIDogcG93KChjb2xvciArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpKTsKICAg
ICAgICAgICAgICAgICBjb2xvciA9IHN0ZDo6bWF4KDAuMGYsIGNvbG9yKTsKICAgICAgICAgICAg
ICAgICBjb2xvciA9IHN0ZDo6bWluKDEuMGYsIGNvbG9yKTsKLSAgICAgICAgICAgICAgICBsaW5l
YXJSZ2JMVVQuYXBwZW5kKHN0YXRpY19jYXN0PGludD4ocm91bmQoY29sb3IgKiAyNTUpKSk7Cisg
ICAgICAgICAgICAgICAgbGluZWFyUmdiTFVULmdldCgpLmFwcGVuZChzdGF0aWNfY2FzdDxpbnQ+
KHJvdW5kKGNvbG9yICogMjU1KSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShsaW5lYXJSZ2JMVVQpOworICAgICAgICBwbGF0
Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UobGluZWFyUmdiTFVULmdldCgpKTsKICAgICB9IGVsc2Ug
aWYgKGRzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZURldmljZVJHQikgewotICAgICAgICBpZiAo
ZGV2aWNlUmdiTFVULmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZGV2aWNlUmdiTFVULmdldCgp
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1Njsg
aSsrKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwogICAgICAg
ICAgICAgICAgIGNvbG9yID0gKHBvd2YoY29sb3IsIDEuMGYgLyAyLjRmKSAqIDEuMDU1ZikgLSAw
LjA1NWY7CiAgICAgICAgICAgICAgICAgY29sb3IgPSBzdGQ6Om1heCgwLjBmLCBjb2xvcik7CiAg
ICAgICAgICAgICAgICAgY29sb3IgPSBzdGQ6Om1pbigxLjBmLCBjb2xvcik7Ci0gICAgICAgICAg
ICAgICAgZGV2aWNlUmdiTFVULmFwcGVuZChzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKGNvbG9yICog
MjU1KSkpOworICAgICAgICAgICAgICAgIGRldmljZVJnYkxVVC5nZXQoKS5hcHBlbmQoc3RhdGlj
X2Nhc3Q8aW50Pihyb3VuZChjb2xvciAqIDI1NSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoZGV2aWNlUmdiTFVUKTsKKyAg
ICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGRldmljZVJnYkxVVC5nZXQoKSk7CiAg
ICAgfQogfQogI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAyMWQ4MGFlLi5mYmY5ZTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0y
MzUsMTkgKzIzNSwxOSBAQCBzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVu
Z2luZVBsYXllciBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwbwogCiBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhcHBsaWNhdGlvbk9jdGV0
U3RyZWFtLCAoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gYXBwbGlj
YXRpb25PY3RldFN0cmVhbTsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dFBs
YWluKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCB0ZXh0UGxhaW4sICgidGV4dC9wbGFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiB0ZXh0UGxhaW4oInRleHQvcGxhaW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICByZXR1cm4gdGV4dFBsYWluOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBjb2RlY3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIGNvZGVjcywgKCJjb2RlY3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gY29kZWNzKCJjb2RlY3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gY29kZWNzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDdjMGMwNzAuLjg5OGQ2NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTE1NSw3ICsxNTYsNyBAQCBwcml2YXRlOgogCiBTY3JhdGNoQnVmZmVyJiBTY3JhdGNo
QnVmZmVyOjpzaW5nbGV0b24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTY3JhdGNoQnVmZmVyLCBzY3JhdGNoQnVmZmVyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFNjcmF0Y2hCdWZmZXI+IHNjcmF0Y2hCdWZmZXI7CiAgICAgcmV0dXJuIHNjcmF0Y2hC
dWZmZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDFmYWM3MDQuLjNkNmNlNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzkyLDcgKzM5Miw3IEBAIHN0YXRpYyBjb25z
dCBjaGFyICpib29sU3RyaW5nKGJvb2wgdmFsKQogdHlwZWRlZiBIYXNoTWFwPE1lZGlhUGxheWVy
KiwgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyo+IFBsYXllclRvUHJpdmF0ZU1h
cFR5cGU7CiBzdGF0aWMgUGxheWVyVG9Qcml2YXRlTWFwVHlwZSYgcGxheWVyVG9Qcml2YXRlTWFw
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUGxheWVyVG9Qcml2YXRl
TWFwVHlwZSwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBsYXllclRvUHJp
dmF0ZU1hcFR5cGU+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcAppbmRleCA3MjQ4OTNiLi42MTQwMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApAQCAtMjQsNiAr
MjQsNyBAQAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTM2LDcgKzM3LDcgQEAgUmVmPFNvdXJjZUFscGhhPiBTb3VyY2VBbHBo
YTo6Y3JlYXRlKEZpbHRlckVmZmVjdCYgc291cmNlRWZmZWN0KQogCiBjb25zdCBBdG9taWNTdHJp
bmcmIFNvdXJjZUFscGhhOjplZmZlY3ROYW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzX2VmZmVjdE5hbWUsICgiU291cmNlQWxw
aGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc19lZmZlY3ROYW1lKCJTb3VyY2VBbHBo
YSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2Vm
ZmVjdE5hbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCmluZGV4IDYxYmIxYjguLjIzMTNiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIkZpbHRl
ci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0u
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM1LDcgKzM2
LDcgQEAgUmVmPFNvdXJjZUdyYXBoaWM+IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZShGaWx0ZXImIGZp
bHRlcikKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBzX2VmZmVjdE5hbWUsICgiU291cmNlR3JhcGhpYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiBzX2VmZmVjdE5hbWUoIlNvdXJjZUdyYXBoaWMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19lZmZlY3ROYW1lOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggMDgwYTkxMi4uMjEwMGUyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5oIgogI2ltcG9ydCA8UVRLaXQvUVRLaXQuaD4KICNpbXBvcnQgPG9iamMvcnVu
dGltZS5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIFNPRlRfTElOS19GUkFN
RVdPUksoUVRLaXQpCiAKQEAgLTEyNzEsNyArMTI3Miw3IEBAIHN0YXRpYyB2b2lkIGFkZEZpbGVU
eXBlc1RvQ2FjaGUoTlNBcnJheSAqIGZpbGVUeXBlcywgSGFzaFNldDxTdHJpbmc+ICZjYWNoZSkK
IAogc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBtaW1lQ29tbW9uVHlwZXNDYWNoZSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwgY2FjaGUsICgp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZTsKICAg
ICBzdGF0aWMgYm9vbCB0eXBlTGlzdEluaXRpYWxpemVkID0gZmFsc2U7CiAKICAgICBpZiAoIXR5
cGVMaXN0SW5pdGlhbGl6ZWQpIHsKQEAgLTEyODUsNyArMTI4Niw3IEBAIHN0YXRpYyBIYXNoU2V0
PFN0cmluZz4gbWltZUNvbW1vblR5cGVzQ2FjaGUoKQogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+
IG1pbWVNb2Rlcm5UeXBlc0NhY2hlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoSGFzaFNldDxTdHJpbmc+LCBjYWNoZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlOwogICAgIHN0YXRpYyBib29sIHR5cGVMaXN0SW5p
dGlhbGl6ZWQgPSBmYWxzZTsKICAgICAKICAgICBpZiAoIXR5cGVMaXN0SW5pdGlhbGl6ZWQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9DdXJzb3JJT1MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHAKaW5kZXggZjk2YmZhZi4u
YzlmMGUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0N1cnNvcklP
Uy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0N1cnNvcklPUy5jcHAKQEAg
LTI2LDExICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1cnNvci5o
IgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIGNvbnN0IEN1cnNvciYgY3Vyc29yKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgQ3Vyc29yLCBjdXJzb3IsICgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQ3Vyc29yPiBjdXJzb3I7CiAgICAgcmV0dXJuIGN1cnNvcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVH
cmlkVGlsZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRp
bGUubW0KaW5kZXggMjMxYWViNi4uMDAwNWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiV0FLV2luZG93LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNpZiBfX2hhc19pbmNs
dWRlKDxXZWJLaXRBZGRpdGlvbnMvTGF5ZXJCYWNraW5nU3RvcmVBZGRpdGlvbnMubW0+KQogI2lt
cG9ydCA8V2ViS2l0QWRkaXRpb25zL0xheWVyQmFja2luZ1N0b3JlQWRkaXRpb25zLm1tPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5
SGFuZGxlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xs
ZXJNZW1vcnlIYW5kbGVySU9TLmNwcAppbmRleCBkZTdiNGUwLi41YzM2NjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVy
SU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJN
ZW1vcnlIYW5kbGVySU9TLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiVGlsZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03OSw3
ICs4MCw3IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyOjp0cmltVW5wYXJlbnRl
ZFRpbGVzVG9UYXJnZXQoaW50IHRhcmdldCkKIAogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVy
JiB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIsIHN0YXRpY1RpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaWxl
Q29udHJvbGxlck1lbW9yeUhhbmRsZXI+IHN0YXRpY1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxl
cjsKICAgICByZXR1cm4gc3RhdGljVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1v
cnlIYW5kbGVySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xs
ZXJNZW1vcnlIYW5kbGVySU9TLmgKaW5kZXggZGEyZmVmODAuLjEzMjMzOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1v
cnlIYW5kbGVySU9TLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgVGlsZUNvbnRyb2xsZXJN
ZW1vcnlIYW5kbGVySU9TX2gKIAogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1
LDYgKzM2LDcgQEAgY2xhc3MgVGlsZUNvbnRyb2xsZXI7CiBjbGFzcyBUaWxlQ29udHJvbGxlck1l
bW9yeUhhbmRsZXIgewogcHVibGljOgogICAgIGZyaWVuZCBUaWxlQ29udHJvbGxlck1lbW9yeUhh
bmRsZXImIHRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcigpOworICAgIGZyaWVuZCBjbGFzcyBO
ZXZlckRlc3Ryb3llZDxUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXI+OwogCiAgICAgdm9pZCBy
ZW1vdmVUaWxlQ29udHJvbGxlcihUaWxlQ29udHJvbGxlciopOwogICAgIHZvaWQgdGlsZUNvbnRy
b2xsZXJHYWluZWRVbnBhcmVudGVkVGlsZXMoVGlsZUNvbnRyb2xsZXIqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQppbmRleCBi
ZTBkYzE1Li4xYjVjODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0IDxDb3Jl
TG9jYXRpb24vQ29yZUxvY2F0aW9uLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgog
I2ltcG9ydCA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
IApAQCAtNjgsOCArNjksOCBAQCBzdGF0aWMgY29uc3QgZG91YmxlIGtHcmF2aXR5ID0gOS44MDY2
NTsKIAogKyAoV2ViQ29yZU1vdGlvbk1hbmFnZXIgKilzaGFyZWRNYW5hZ2VyCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxXZWJDb3JlTW90aW9uTWFuYWdl
cj4sIHNoYXJlZE1vdGlvbk1hbmFnZXIsIChbW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIGFsbG9jXSBp
bml0XSkpOwotICAgIHJldHVybiBzaGFyZWRNb3Rpb25NYW5hZ2VyLmdldCgpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V2ViQ29yZU1vdGlvbk1hbmFnZXI+PiBzaGFyZWRN
b3Rpb25NYW5hZ2VyKFtbV2ViQ29yZU1vdGlvbk1hbmFnZXIgYWxsb2NdIGluaXRdKTsKKyAgICBy
ZXR1cm4gc2hhcmVkTW90aW9uTWFuYWdlci5nZXQoKS5nZXQoKTsKIH0KIAogLSAoaWQpaW5pdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDA5ZmI4MjkuLmUzYWQzZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTE1Niw4ICsxNTYsOCBA
QCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JFdmVu
dE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdAogICAgICAgICBTdHJpbmcgbG9jYWxpemVkRGV2aWNl
TmFtZTsKIAogICAgICAgICBpZiAobV92aWRlb0VsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkp
IHsKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFp
cnBsYXksIChBU0NJSUxpdGVyYWwoImFpcnBsYXkiKSkpOwotICAgICAgICAgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdHZvdXQsIChBU0NJSUxpdGVyYWwoInR2b3V0
IikpKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFpcnBsYXko
QVNDSUlMaXRlcmFsKCJhaXJwbGF5IikpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gdHZvdXQoQVNDSUlMaXRlcmFsKCJ0dm91dCIpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgU3RyaW5nIHR5cGUgPSBtX3ZpZGVvRWxlbWVudC0+bWVkaWFDb250cm9sc0hv
c3QoKS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCk7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBhaXJw
bGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRl
bnRPYnNlcnZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29u
dGVudE9ic2VydmF0aW9uLmNwcAppbmRleCAwZmI4YWU5Li4wNjNkNzVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9u
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1
ZGUgIldlYkNvcmVUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBXS0NvbnRlbnRDaGFuZ2UgX1dLQ29udGVudENoYW5n
ZSAgICAgICAgICAgICAgICAgICAgPSBXS0NvbnRlbnROb0NoYW5nZTsKIGJvb2wgICAgICAgICAg
ICBfV0tPYnNlcnZpbmdDb250ZW50Q2hhbmdlcyAgICAgICAgICA9IGZhbHNlOwpAQCAtNzcsOCAr
NzgsOCBAQCBzdGF0aWMgSGFzaE1hcDx2b2lkICosIHZvaWQgKj4gKiBXZWJUaHJlYWRHZXRPYnNl
cnZlZENvbnRlbnRNb2RpZmllcnMoKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9y
RGlzYWJsZWQoKSk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPHZvaWQgKiwgdm9pZCAqPiBWb2lkVm9p
ZE1hcDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVm9pZFZvaWRNYXAsIG9i
c2VydmVkQ29udGVudE1vZGlmaWVycywgKCkpOwotICAgIHJldHVybiAmb2JzZXJ2ZWRDb250ZW50
TW9kaWZpZXJzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWb2lkVm9pZE1hcD4gb2JzZXJ2
ZWRDb250ZW50TW9kaWZpZXJzOworICAgIHJldHVybiAmb2JzZXJ2ZWRDb250ZW50TW9kaWZpZXJz
LmdldCgpOwogfQogCiBpbnQgV2ViVGhyZWFkQ291bnRPZk9ic2VydmVkQ29udGVudE1vZGlmaWVy
cyh2b2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5k
ZXggNDE2ZDVkZC4uZjZmY2NhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0ltYWdlTWFjLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNl
LmgiCiAjaW1wb3J0ICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbXBvcnQgIlRleHRSdW4uaCIKKyNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTE2MCw3ICsxNjEsNyBAQCBjb25zdCBmbG9hdCBEcmFnTGlua1VybEZvbnRTaXplID0gMTA7CiBz
dGF0aWMgRm9udENhc2NhZGUmIGZvbnRGcm9tTlNGb250KE5TRm9udCAqZm9udCkKIHsKICAgICBz
dGF0aWMgTlNGb250ICpjdXJyZW50Rm9udDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoRm9udENhc2NhZGUsIGN1cnJlbnRSZW5kZXJlciwgKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxGb250Q2FzY2FkZT4gY3VycmVudFJlbmRlcmVyOwogICAgIAogICAgIGlmIChb
Zm9udCBpc0VxdWFsOmN1cnJlbnRGb250XSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRSZW5kZXJl
cjsKQEAgLTE2OCw3ICsxNjksNyBAQCBzdGF0aWMgRm9udENhc2NhZGUmIGZvbnRGcm9tTlNGb250
KE5TRm9udCAqZm9udCkKICAgICAgICAgQ0ZSZWxlYXNlKGN1cnJlbnRGb250KTsKICAgICBjdXJy
ZW50Rm9udCA9IGZvbnQ7CiAgICAgQ0ZSZXRhaW4oY3VycmVudEZvbnQpOwotICAgIGN1cnJlbnRS
ZW5kZXJlciA9IEZvbnRDYXNjYWRlKEZvbnRQbGF0Zm9ybURhdGEodG9DVEZvbnQoZm9udCksIFtm
b250IHBvaW50U2l6ZV0pKTsKKyAgICBjdXJyZW50UmVuZGVyZXIuZ2V0KCkgPSBGb250Q2FzY2Fk
ZShGb250UGxhdGZvcm1EYXRhKHRvQ1RGb250KGZvbnQpLCBbZm9udCBwb2ludFNpemVdKSk7CiAg
ICAgcmV0dXJuIGN1cnJlbnRSZW5kZXJlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tCmluZGV4IGE4ZTZhMTEuLjhjZDk3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIlNjcm9sbFZp
ZXcuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPENhcmJv
bi9DYXJib24uaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBzdGF0aWMgTlNSZWN0IGZvY3VzUmluZ0NsaXBSZWN0OwpAQCAt
MTMyLDggKzEzMyw4IEBAIGVudW0gewogCiBUaGVtZSogcGxhdGZvcm1UaGVtZSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRoZW1lTWFjLCB0aGVtZU1hYywgKCkpOwot
ICAgIHJldHVybiAmdGhlbWVNYWM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRoZW1lTWFj
PiB0aGVtZU1hYzsKKyAgICByZXR1cm4gJnRoZW1lTWFjLmdldCgpOwogfQogCiAvLyBIZWxwZXIg
ZnVuY3Rpb25zIHVzZWQgYnkgYSBidW5jaCBvZiBkaWZmZXJlbnQgY29udHJvbCBwYXJ0cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQppbmRleCAzNjg2NDUyLi5j
Mjg0YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hl
Y2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgogCiAjaW1wb3J0IDx3dGYv
SGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC05
OCwxMiArOTksMTIgQEAgdm9pZCBXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uLCBXZWJDb3JlOjpUaHJlYWRWaW9sYXRpb24KICAgICBpZiAocm91bmQgPj0g
TWF4aW11bVRocmVhZFZpb2xhdGlvblJvdW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBsb2dnZWRGdW5jdGlv
bnMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBsb2dn
ZWRGdW5jdGlvbnM7CiAgICAgc3dpdGNoICh0aHJlYWRWaW9sYXRpb25CZWhhdmlvcltyb3VuZF0p
IHsKICAgICAgICAgY2FzZSBOb1RocmVhZENoZWNrOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgTG9nT25GaXJzdFRocmVhZFZpb2xhdGlvbjoKLSAgICAgICAgICAgIGlmIChsb2dn
ZWRGdW5jdGlvbnMuYWRkKGZ1bmN0aW9uKS5pc05ld0VudHJ5KSB7CisgICAgICAgICAgICBpZiAo
bG9nZ2VkRnVuY3Rpb25zLmdldCgpLmFkZChmdW5jdGlvbikuaXNOZXdFbnRyeSkgewogICAgICAg
ICAgICAgICAgIE5TTG9nKEAiV2ViS2l0IFRocmVhZGluZyBWaW9sYXRpb24gLSAlcyBjYWxsZWQg
ZnJvbSBzZWNvbmRhcnkgdGhyZWFkIiwgZnVuY3Rpb24pOwogICAgICAgICAgICAgICAgIE5TTG9n
KEAiQWRkaXRpb25hbCB0aHJlYWRpbmcgdmlvbGF0aW9ucyBmb3IgdGhpcyBmdW5jdGlvbiB3aWxs
IG5vdCBiZSBsb2dnZWQuIik7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIuaAppbmRleCBiOGU0NGNiLi43OTZjMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291
cmNlc1JlcXVlc3RDbGllbnQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01Myw2ICs1NCw3IEBAIHByaXZh
dGU6CiB9OwogCiBjbGFzcyBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIENh
cHR1cmVEZXZpY2VNYW5hZ2VyIHsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8QVZD
YXB0dXJlRGV2aWNlTWFuYWdlcj47CiBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8Q2FwdHVy
ZURldmljZUluZm8+JiBjYXB0dXJlRGV2aWNlTGlzdCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IDU3ZDIxNjAuLjczYzMxOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjppc0F2YWlsYWJsZSgpCiAKIEFWQ2FwdHVyZURldmljZU1hbmFnZXIm
IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEFWQ2FwdHVyZURldmljZU1hbmFnZXIsIG1hbmFnZXIsICgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QVZDYXB0dXJlRGV2aWNlTWFuYWdlcj4gbWFuYWdl
cjsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IGI0OWQxZjYuLjYzYzhlZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6cGxhdGZvcm1DZW50ZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMsIGNlbnRlciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjPiBjZW50ZXI7CiAgICAgcmV0dXJuIGNlbnRlcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja0JveC5jcHAKaW5kZXggYWVjMDQ1Yy4uMzEwMjgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0ludDhBcnJheS5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzYsNyArNzcsNyBAQCBNb2NrVHJhY2tCb3g6
Ok1vY2tUcmFja0JveChBcnJheUJ1ZmZlciogZGF0YSkKIAogY29uc3QgU3RyaW5nJiBNb2NrVHJh
Y2tCb3g6OnR5cGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHRyYWssIChBU0NJSUxpdGVyYWwoInRyYWsiKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IHRyYWsoQVNDSUlMaXRlcmFsKCJ0cmFrIikpOwogICAgIHJldHVybiB0cmFr
OwogfQogCkBAIC0xMDUsNyArMTA2LDcgQEAgTW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5p
dGlhbGl6YXRpb25Cb3goQXJyYXlCdWZmZXIqIGRhdGEpCiAKIGNvbnN0IFN0cmluZyYgTW9ja0lu
aXRpYWxpemF0aW9uQm94Ojp0eXBlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBpbml0LCAoQVNDSUlMaXRlcmFsKCJpbml0IikpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBpbml0KEFTQ0lJTGl0ZXJhbCgiaW5pdCIpKTsKICAgICBy
ZXR1cm4gaW5pdDsKIH0KIApAQCAtMTMzLDcgKzEzNCw3IEBAIE1vY2tTYW1wbGVCb3g6Ok1vY2tT
YW1wbGVCb3goQXJyYXlCdWZmZXIqIGRhdGEpCiAKIGNvbnN0IFN0cmluZyYgTW9ja1NhbXBsZUJv
eDo6dHlwZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
c21wbCwgKEFTQ0lJTGl0ZXJhbCgic21wbCIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gc21wbChBU0NJSUxpdGVyYWwoInNtcGwiKSk7CiAgICAgcmV0dXJuIHNtcGw7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAK
aW5kZXggNzdhNzFlMy4uNWQzMDBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkNv
bnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC0zNjUsMTQgKzM2NiwxNCBAQCB2b2lkIGZpbmRDaGFyc2V0SW5NZWRp
YVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGludCYgY2hhcnNldFBvcywg
dQogCiBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uIHBhcnNl
WFNTUHJvdGVjdGlvbkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgU3RyaW5nJiBmYWlsdXJl
UmVhc29uLCB1bnNpZ25lZCYgZmFpbHVyZVBvc2l0aW9uLCBTdHJpbmcmIHJlcG9ydFVSTCkKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29u
SW52YWxpZFRvZ2dsZSwgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgMCBvciAxIikpKTsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxp
ZFNlcGFyYXRvciwgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgc2VtaWNvbG9uIikpKTsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxp
ZEVxdWFscywgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgZXF1YWxzIHNpZ24iKSkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlk
TW9kZSwgKEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBtb2RlIGRpcmVjdGl2ZSIpKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRS
ZXBvcnQsIChBU0NJSUxpdGVyYWwoImludmFsaWQgcmVwb3J0IGRpcmVjdGl2ZSIpKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkR1cGxp
Y2F0ZU1vZGUsIChBU0NJSUxpdGVyYWwoImR1cGxpY2F0ZSBtb2RlIGRpcmVjdGl2ZSIpKSk7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkR1
cGxpY2F0ZVJlcG9ydCwgKEFTQ0lJTGl0ZXJhbCgiZHVwbGljYXRlIHJlcG9ydCBkaXJlY3RpdmUi
KSkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVS
ZWFzb25JbnZhbGlkRGlyZWN0aXZlLCAoQVNDSUlMaXRlcmFsKCJ1bnJlY29nbml6ZWQgZGlyZWN0
aXZlIikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29u
SW52YWxpZFRvZ2dsZShBU0NJSUxpdGVyYWwoImV4cGVjdGVkIDAgb3IgMSIpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZFNlcGFyYXRvcihB
U0NJSUxpdGVyYWwoImV4cGVjdGVkIHNlbWljb2xvbiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBmYWlsdXJlUmVhc29uSW52YWxpZEVxdWFscyhBU0NJSUxpdGVyYWwoImV4
cGVjdGVkIGVxdWFscyBzaWduIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IGZhaWx1cmVSZWFzb25JbnZhbGlkTW9kZShBU0NJSUxpdGVyYWwoImludmFsaWQgbW9kZSBkaXJl
Y3RpdmUiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNv
bkludmFsaWRSZXBvcnQoQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHJlcG9ydCBkaXJlY3RpdmUiKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNvbkR1cGxpY2F0
ZU1vZGUoQVNDSUlMaXRlcmFsKCJkdXBsaWNhdGUgbW9kZSBkaXJlY3RpdmUiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZmFpbHVyZVJlYXNvbkR1cGxpY2F0ZVJlcG9ydChB
U0NJSUxpdGVyYWwoImR1cGxpY2F0ZSByZXBvcnQgZGlyZWN0aXZlIikpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IGZhaWx1cmVSZWFzb25JbnZhbGlkRGlyZWN0aXZlKEFTQ0lJ
TGl0ZXJhbCgidW5yZWNvZ25pemVkIGRpcmVjdGl2ZSIpKTsKIAogICAgIHVuc2lnbmVkIHBvcyA9
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAKaW5kZXggNWEzZGQzOC4uMGEwYTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsNyArNDks
NyBAQCBzdGF0aWMgQnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAmIGJ1aWx0aW5S
ZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwKAogI2Vsc2UKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogI2VuZGlmCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEJ1aWx0
aW5SZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXA+IG1hcDsKICAg
ICByZXR1cm4gbWFwOwogfQogCkBAIC02MSw3ICs2Miw3IEBAIHR5cGVkZWYgSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFJlc291cmNlSGFuZGxlOjpCdWlsdGluU3luY2hyb25vdXNMb2FkZXI+IEJ1aWx0
aW5SCiBzdGF0aWMgQnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXAmIGJ1
aWx0aW5SZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVyTWFwKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChCdWls
dGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCwgbWFwLCAoKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEJ1aWx0aW5SZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVy
TWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXgg
ZWM3NWVkZS4uNTEzOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQmFzZTY0Lmg+CkBAIC04MywxNCArODQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4s
IGhvc3RzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4g
aG9zdHM7CiAgICAgcmV0dXJuIGhvc3RzOwogfQogCiBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJl
dGFpblB0cjxDRkRhdGFSZWY+PiYgY2xpZW50Q2VydHMoKQogewogICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIFJldGFpblB0cjxDRkRhdGFSZWY+PiBDZXJ0c01hcDsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQ2VydHNNYXAsIGNlcnRzLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPENlcnRzTWFwPiBjZXJ0czsKICAgICByZXR1cm4gY2VydHM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nS2V5ZWRN
UlVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmdLZXll
ZE1SVUNhY2hlLmgKaW5kZXggOWE1M2NhNi4uZDg5MmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZV9oCiAjZGVm
aW5lIEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGVfaAogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTM2LDcgKzM3LDcgQEAgcHVibGljOgogICAgIFQgZ2V0KGNvbnN0IEF0
b21pY1N0cmluZyYga2V5KQogICAgIHsKICAgICAgICAgaWYgKGtleS5pc051bGwoKSkgewotICAg
ICAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFQsIHZhbHVlRm9yTnVsbCwg
KGNyZWF0ZVZhbHVlRm9yTnVsbEtleSgpKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VD4gdmFsdWVGb3JOdWxsKGNyZWF0ZVZhbHVlRm9yTnVsbEtleSgpKTsKICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZUZvck51bGw7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKaW5kZXggNDBiOGJlOS4uNjBi
MmU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5h
dGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0
aW9uQ0YuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gQXRvbWlj
U3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+Pjo6Y3JlYXRlCiAKIHN0
YXRpYyBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+JiBj
ZkxvY2FsZUNhY2hlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+PiwgY2FjaGUsICgp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxS
ZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+Pj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA3NGUwNTcyLi5iMjhh
MTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE2NjAs
OCArMTY2MCw4IEBAIFJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6YmxvY2tFbGVtZW50Q29udGlu
dWF0aW9uKCkgY29uc3QKICAgICAKIHN0YXRpYyBDb250aW51YXRpb25PdXRsaW5lVGFibGVNYXAq
IGNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKENvbnRpbnVhdGlvbk91dGxpbmVUYWJsZU1hcCwgdGFibGUsICgpKTsKLSAgICBy
ZXR1cm4gJnRhYmxlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb250aW51YXRpb25PdXRs
aW5lVGFibGVNYXA+IHRhYmxlOworICAgIHJldHVybiAmdGFibGUuZ2V0KCk7CiB9CiAKIHZvaWQg
UmVuZGVyQmxvY2s6OmFkZENvbnRpbnVhdGlvbldpdGhPdXRsaW5lKFJlbmRlcklubGluZSogZmxv
dykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCBjNzQ1
NjM5Li40MDNjYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIu
Y3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2Rl
KFJlbmRlckVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpCiAKIHN0YXRpYyBD
b3VudGVyTWFwcyYgY291bnRlck1hcHMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChDb3VudGVyTWFwcywgc3RhdGljQ291bnRlck1hcHMsICgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q291bnRlck1hcHM+IHN0YXRpY0NvdW50ZXJNYXBzOwogICAgIHJldHVy
biBzdGF0aWNDb3VudGVyTWFwczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCBkOTNiM2VkLi5h
ZmNkYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtOTg3LDggKzk4Nyw4IEBAIHZvaWQgUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcChGbGV4Qm94SXRlcmF0b3ImIGl0
ZXJhdG9yLCBib29sCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBVQ2hh
ciBlbGxpcHNpc0FuZFNwYWNlWzJdID0geyBob3Jpem9udGFsRWxsaXBzaXMsICcgJyB9OwotICAg
ICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbGxpcHNp
c0FuZFNwYWNlU3RyLCAoZWxsaXBzaXNBbmRTcGFjZSwgMikpOwotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbGxpcHNpc1N0ciwgKCZob3Jpem9u
dGFsRWxsaXBzaXMsIDEpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gZWxsaXBzaXNBbmRTcGFjZVN0cihlbGxpcHNpc0FuZFNwYWNlLCAyKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZWxsaXBzaXNTdHIoJmhvcml6b250
YWxFbGxpcHNpcywgMSk7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSBu
dW1WaXNpYmxlTGluZXMgPT0gMSA/IGZpcnN0TGluZVN0eWxlKCkgOiBzdHlsZSgpOwogICAgICAg
ICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IGxpbmVTdHlsZS5mb250Q2FzY2FkZSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAyNTFiMGVlLi5lYTM3
OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM2MzMs
MTIgKzM2MzMsMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdl
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICBSZWZQdHI8SW1hZ2U+
IHJlc2l6ZUNvcm5lckltYWdlOwogICAgIEZsb2F0U2l6ZSBjb3JuZXJSZXNpemVyU2l6ZTsKICAg
ICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkgPj0gMikgewot
ICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSW1hZ2UqLCByZXNpemVDb3Ju
ZXJJbWFnZUhpUmVzLCAoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6
ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUhpUmVzKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZSgidGV4dEFyZWFSZXNpemVDb3JuZXJAMngiKS5sZWFrUmVmKCkpOwogICAgICAgICByZXNpemVD
b3JuZXJJbWFnZSA9IHJlc2l6ZUNvcm5lckltYWdlSGlSZXM7CiAgICAgICAgIGNvcm5lclJlc2l6
ZXJTaXplID0gcmVzaXplQ29ybmVySW1hZ2UtPnNpemUoKTsKICAgICAgICAgY29ybmVyUmVzaXpl
clNpemUuc2NhbGUoMC41Zik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEltYWdlKiwgcmVzaXplQ29ybmVySW1hZ2VMb1JlcywgKEltYWdlOjps
b2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXIiKS5sZWFrUmVmKCkpKTsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlKj4gcmVzaXplQ29ybmVySW1hZ2VM
b1JlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIiku
bGVha1JlZigpKTsKICAgICAgICAgcmVzaXplQ29ybmVySW1hZ2UgPSByZXNpemVDb3JuZXJJbWFn
ZUxvUmVzOwogICAgICAgICBjb3JuZXJSZXNpemVyU2l6ZSA9IHJlc2l6ZUNvcm5lckltYWdlLT5z
aXplKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJUaGVtZS5jcHAKaW5kZXggNTRmZWEwYy4uMTY5MmRkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0yNiwxNCArMjYs
MTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXJUaGVt
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBSZW5kZXJTY3JvbGxiYXJUaGVtZSogUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJl
bmRlclNjcm9sbGJhclRoZW1lKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoUmVuZGVyU2Nyb2xsYmFyVGhlbWUsIHRoZW1lLCAoKSk7Ci0gICAgcmV0dXJuICZ0aGVtZTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVuZGVyU2Nyb2xsYmFyVGhlbWU+IHRoZW1lOwor
ICAgIHJldHVybiAmdGhlbWUuZ2V0KCk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGludCYgYmVm
b3JlU2l6ZSwgaW50JiBhZnRlclNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcAppbmRleCBjNjhiYzhjLi4zYWI5YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAogc3RhdGljIENvbG9yJiBjdXN0b21Gb2N1c1JpbmdDb2xvcigpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBjb2xvciwgKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxDb2xvcj4gY29sb3I7CiAgICAgcmV0dXJuIGNvbG9yOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IGU0OTQ3MTMuLjky
NGVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIHVuc2lnbmVkIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2Nv
cGU6OnNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvCiAKIFdpZGdldEhpZXJhcmNoeVVw
ZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OldpZGdldFRvUGFyZW50TWFwJiBXaWRnZXRIaWVyYXJjaHlV
cGRhdGVzU3VzcGVuc2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXAoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChXaWRnZXRUb1BhcmVudE1hcCwgbWFwLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdpZGdldFRvUGFyZW50TWFwPiBtYXA7CiAgICAgcmV0
dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZU91dHNpZGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlT3V0c2lkZUluZm8uaAppbmRleCA5MTJhYTVjLi4zOTU2NGE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlICJTaGFwZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMwLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAg
dHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZU91
dHNpZGVJbmZvPj4gSW5mb01hcDsKICAgICBzdGF0aWMgSW5mb01hcCYgaW5mb01hcCgpCiAgICAg
ewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSW5mb01hcCwgc3RhdGlj
SW5mb01hcCwgKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW5mb01hcD4gc3Rh
dGljSW5mb01hcDsKICAgICAgICAgcmV0dXJuIHN0YXRpY0luZm9NYXA7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA2NThk
ZWQ1Li4wYmQ5YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKQEAgLTEyNDgsOCArMTI0OCw4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVu
ZGVyU3R5bGU6Omh5cGhlblN0cmluZygpIGNvbnN0CiAgICAgICAgIHJldHVybiBoeXBoZW5hdGlv
blN0cmluZzsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkZXBlbmQgb24gbG9jYWxlLgot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGh5cGhlbk1p
bnVzU3RyaW5nLCAoJmh5cGhlbk1pbnVzLCAxKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgaHlwaGVuU3RyaW5nLCAoJmh5cGhlbiwgMSkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGh5cGhlbk1pbnVzU3RyaW5nKCZo
eXBoZW5NaW51cywgMSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
aHlwaGVuU3RyaW5nKCZoeXBoZW4sIDEpOwogICAgIHJldHVybiBmb250Q2FzY2FkZSgpLnByaW1h
cnlGb250KCkuZ2x5cGhGb3JDaGFyYWN0ZXIoaHlwaGVuKSA/IGh5cGhlblN0cmluZyA6IGh5cGhl
bk1pbnVzU3RyaW5nOwogfQogCkBAIC0xMjYxLDI4ICsxMjYxLDI4IEBAIGNvbnN0IEF0b21pY1N0
cmluZyYgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSBjb25zdAogICAgIGNh
c2UgVGV4dEVtcGhhc2lzTWFya0N1c3RvbToKICAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0N1
c3RvbU1hcmsoKTsKICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3Q6IHsKLSAgICAgICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVkRG90U3RyaW5n
LCAoJmJ1bGxldCwgMSkpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBvcGVuRG90U3RyaW5nLCAoJndoaXRlQnVsbGV0LCAxKSk7CisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpbGxlZERvdFN0cmluZygmYnVs
bGV0LCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3Bl
bkRvdFN0cmluZygmd2hpdGVCdWxsZXQsIDEpOwogICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lz
RmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWREb3RTdHJpbmcgOiBvcGVu
RG90U3RyaW5nOwogICAgIH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6IHsKLSAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVk
Q2lyY2xlU3RyaW5nLCAoJmJsYWNrQ2lyY2xlLCAxKSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9wZW5DaXJjbGVTdHJpbmcsICgmd2hpdGVD
aXJjbGUsIDEpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
ZmlsbGVkQ2lyY2xlU3RyaW5nKCZibGFja0NpcmNsZSwgMSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wZW5DaXJjbGVTdHJpbmcoJndoaXRlQ2lyY2xlLCAx
KTsKICAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxs
RmlsbGVkID8gZmlsbGVkQ2lyY2xlU3RyaW5nIDogb3BlbkNpcmNsZVN0cmluZzsKICAgICB9CiAg
ICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrRG91YmxlQ2lyY2xlOiB7Ci0gICAgICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpbGxlZERvdWJsZUNpcmNsZVN0
cmluZywgKCZmaXNoZXllLCAxKSk7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG9wZW5Eb3VibGVDaXJjbGVTdHJpbmcsICgmYnVsbHNleWUsIDEp
KTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkRG91
YmxlQ2lyY2xlU3RyaW5nKCZmaXNoZXllLCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gb3BlbkRvdWJsZUNpcmNsZVN0cmluZygmYnVsbHNleWUsIDEpOwog
ICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxs
ZWQgPyBmaWxsZWREb3VibGVDaXJjbGVTdHJpbmcgOiBvcGVuRG91YmxlQ2lyY2xlU3RyaW5nOwog
ICAgIH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtUcmlhbmdsZTogewotICAgICAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWxsZWRUcmlhbmdsZVN0
cmluZywgKCZibGFja1VwUG9pbnRpbmdUcmlhbmdsZSwgMSkpOwotICAgICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvcGVuVHJpYW5nbGVTdHJpbmcsICgm
d2hpdGVVcFBvaW50aW5nVHJpYW5nbGUsIDEpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gZmlsbGVkVHJpYW5nbGVTdHJpbmcoJmJsYWNrVXBQb2ludGluZ1Ry
aWFuZ2xlLCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
b3BlblRyaWFuZ2xlU3RyaW5nKCZ3aGl0ZVVwUG9pbnRpbmdUcmlhbmdsZSwgMSk7CiAgICAgICAg
IHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZp
bGxlZFRyaWFuZ2xlU3RyaW5nIDogb3BlblRyaWFuZ2xlU3RyaW5nOwogICAgIH0KICAgICBjYXNl
IFRleHRFbXBoYXNpc01hcmtTZXNhbWU6IHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsbGVkU2VzYW1lU3RyaW5nLCAoJnNlc2FtZURvdCwg
MSkpOwotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBvcGVuU2VzYW1lU3RyaW5nLCAoJndoaXRlU2VzYW1lRG90LCAxKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpbGxlZFNlc2FtZVN0cmluZygmc2VzYW1l
RG90LCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3Bl
blNlc2FtZVN0cmluZygmd2hpdGVTZXNhbWVEb3QsIDEpOwogICAgICAgICByZXR1cm4gdGV4dEVt
cGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWRTZXNhbWVTdHJp
bmcgOiBvcGVuU2VzYW1lU3RyaW5nOwogICAgIH0KICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtB
dXRvOgpAQCAtMTI5NywxMyArMTI5NywxMyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3QKICNpZiBFTkFCTEUoREFTSEJPQVJE
X1NVUFBPUlQpCiBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBSZW5kZXJTdHls
ZTo6aW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+LCBlbXB0eUxpc3QsICgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPj4g
ZW1wdHlMaXN0OwogICAgIHJldHVybiBlbXB0eUxpc3Q7CiB9CiAKIGNvbnN0IFZlY3RvcjxTdHls
ZURhc2hib2FyZFJlZ2lvbj4mIFJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJkUmVnaW9ucygpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHlsZURhc2hib2Fy
ZFJlZ2lvbj4sIG5vbmVMaXN0LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3Rv
cjxTdHlsZURhc2hib2FyZFJlZ2lvbj4+IG5vbmVMaXN0OwogICAgIHN0YXRpYyBib29sIG5vbmVM
aXN0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAogICAgIGlmICghbm9uZUxpc3RJbml0aWFsaXplZCkg
ewpAQCAtMTMxNCw3ICsxMzE0LDcgQEAgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9u
PiYgUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKCkKICAgICAgICAgcmVnaW9uLm9m
ZnNldC5ib3R0b20oKSA9IExlbmd0aCgpOwogICAgICAgICByZWdpb24ub2Zmc2V0LmxlZnQoKSA9
IExlbmd0aCgpOwogICAgICAgICByZWdpb24udHlwZSA9IFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpO
b25lOwotICAgICAgICBub25lTGlzdC5hcHBlbmQocmVnaW9uKTsKKyAgICAgICAgbm9uZUxpc3Qu
Z2V0KCkuYXBwZW5kKHJlZ2lvbik7CiAgICAgICAgIG5vbmVMaXN0SW5pdGlhbGl6ZWQgPSB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gbm9uZUxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDY1ODVjNmUuLmVkNDlhYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03MCw2ICs3MCw3IEBA
CiAjaW5jbHVkZSAiVW5pY29kZUJpZGkuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yMDA4LDcgKzIwMDksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHVuc2lnbmVkIHNob3J0IGluaXRpYWxDb2x1bW5Db3VudCgpIHsgcmV0dXJuIDE7IH0KICAg
ICBzdGF0aWMgQ29sdW1uRmlsbCBpbml0aWFsQ29sdW1uRmlsbCgpIHsgcmV0dXJuIENvbHVtbkZp
bGxCYWxhbmNlOyB9CiAgICAgc3RhdGljIENvbHVtblNwYW4gaW5pdGlhbENvbHVtblNwYW4oKSB7
IHJldHVybiBDb2x1bW5TcGFuTm9uZTsgfQotICAgIHN0YXRpYyBjb25zdCBUcmFuc2Zvcm1PcGVy
YXRpb25zJiBpbml0aWFsVHJhbnNmb3JtKCkgeyBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoVHJhbnNmb3JtT3BlcmF0aW9ucywgb3BzLCAoKSk7IHJldHVybiBvcHM7IH0KKyAgICBzdGF0
aWMgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgaW5pdGlhbFRyYW5zZm9ybSgpIHsgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFRyYW5zZm9ybU9wZXJhdGlvbnM+IG9wczsgcmV0dXJuIG9wczsgfQog
ICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5zZm9ybU9yaWdpblgoKSB7IHJldHVybiBMZW5n
dGgoNTAuMGYsIFBlcmNlbnQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3Jt
T3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMg
RVBvaW50ZXJFdmVudHMgaW5pdGlhbFBvaW50ZXJFdmVudHMoKSB7IHJldHVybiBQRV9BVVRPOyB9
CkBAIC0yMTE0LDkgKzIxMTUsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxT
dHlsZURhc2hib2FyZFJlZ2lvbj4mIGluaXRpYWxEYXNoYm9hcmRSZWdpb25zKCk7CiAgICAgc3Rh
dGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIG5vbmVEYXNoYm9hcmRSZWdp
b25zKCk7CiAjZW5kaWYKLSAgICBzdGF0aWMgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgaW5pdGlh
bEZpbHRlcigpIHsgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZpbHRlck9wZXJhdGlv
bnMsIG9wcywgKCkpOyByZXR1cm4gb3BzOyB9CisgICAgc3RhdGljIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGluaXRpYWxGaWx0ZXIoKSB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGaWx0ZXJPcGVy
YXRpb25zPiBvcHM7IHJldHVybiBvcHM7IH0KICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQot
ICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBpbml0aWFsQmFja2Ryb3BGaWx0ZXIo
KSB7IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGaWx0ZXJPcGVyYXRpb25zLCBvcHMs
ICgpKTsgcmV0dXJuIG9wczsgfQorICAgIHN0YXRpYyBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBp
bml0aWFsQmFja2Ryb3BGaWx0ZXIoKSB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGaWx0ZXJPcGVy
YXRpb25zPiBvcHM7IHJldHVybiBvcHM7IH0KICNlbmRpZgogI2lmIEVOQUJMRShDU1NfQ09NUE9T
SVRJTkcpCiAgICAgc3RhdGljIEJsZW5kTW9kZSBpbml0aWFsQmxlbmRNb2RlKCkgeyByZXR1cm4g
QmxlbmRNb2RlTm9ybWFsOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdQYXRoLmNwcAppbmRleCAzYmUxZDdiLi5lYzJlMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKQEAgLTEzMSwxNSArMTMxLDE1IEBA
IGJvb2wgUmVuZGVyU1ZHUGF0aDo6c2hvdWxkU3Ryb2tlWmVyb0xlbmd0aFN1YnBhdGgoKSBjb25z
dAogCiBQYXRoKiBSZW5kZXJTVkdQYXRoOjp6ZXJvTGVuZ3RoTGluZWNhcFBhdGgoY29uc3QgRmxv
YXRQb2ludCYgbGluZWNhcFBvc2l0aW9uKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChQYXRoLCB0ZW1wUGF0aCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxQYXRoPiB0ZW1wUGF0aDsKIAotICAgIHRlbXBQYXRoLmNsZWFyKCk7CisgICAgdGVtcFBh
dGguZ2V0KCkuY2xlYXIoKTsKICAgICBpZiAoc3R5bGUoKS5zdmdTdHlsZSgpLmNhcFN0eWxlKCkg
PT0gU3F1YXJlQ2FwKQotICAgICAgICB0ZW1wUGF0aC5hZGRSZWN0KHplcm9MZW5ndGhTdWJwYXRo
UmVjdChsaW5lY2FwUG9zaXRpb24sIHRoaXMtPnN0cm9rZVdpZHRoKCkpKTsKKyAgICAgICAgdGVt
cFBhdGguZ2V0KCkuYWRkUmVjdCh6ZXJvTGVuZ3RoU3VicGF0aFJlY3QobGluZWNhcFBvc2l0aW9u
LCB0aGlzLT5zdHJva2VXaWR0aCgpKSk7CiAgICAgZWxzZQotICAgICAgICB0ZW1wUGF0aC5hZGRF
bGxpcHNlKHplcm9MZW5ndGhTdWJwYXRoUmVjdChsaW5lY2FwUG9zaXRpb24sIHRoaXMtPnN0cm9r
ZVdpZHRoKCkpKTsKKyAgICAgICAgdGVtcFBhdGguZ2V0KCkuYWRkRWxsaXBzZSh6ZXJvTGVuZ3Ro
U3VicGF0aFJlY3QobGluZWNhcFBvc2l0aW9uLCB0aGlzLT5zdHJva2VXaWR0aCgpKSk7CiAKLSAg
ICByZXR1cm4gJnRlbXBQYXRoOworICAgIHJldHVybiAmdGVtcFBhdGguZ2V0KCk7CiB9CiAKIEZs
b2F0UmVjdCBSZW5kZXJTVkdQYXRoOjp6ZXJvTGVuZ3RoU3VicGF0aFJlY3QoY29uc3QgRmxvYXRQ
b2ludCYgbGluZWNhcFBvc2l0aW9uLCBmbG9hdCBzdHJva2VXaWR0aCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggODIyODU4
My4uOGExZmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5jcHAKQEAgLTE4NywxMiArMTg3LDEyIEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6Omxh
eW91dCgpCiAKIFBhdGgqIFJlbmRlclNWR1NoYXBlOjpub25TY2FsaW5nU3Ryb2tlUGF0aChjb25z
dCBQYXRoKiBwYXRoLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZVRyYW5zZm9ybSkgY29u
c3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUGF0aCwgdGVtcFBhdGgs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UGF0aD4gdGVtcFBhdGg7CiAKLSAgICB0
ZW1wUGF0aCA9ICpwYXRoOwotICAgIHRlbXBQYXRoLnRyYW5zZm9ybShzdHJva2VUcmFuc2Zvcm0p
OworICAgIHRlbXBQYXRoLmdldCgpID0gKnBhdGg7CisgICAgdGVtcFBhdGguZ2V0KCkudHJhbnNm
b3JtKHN0cm9rZVRyYW5zZm9ybSk7CiAKLSAgICByZXR1cm4gJnRlbXBQYXRoOworICAgIHJldHVy
biAmdGVtcFBhdGguZ2V0KCk7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHU2hhcGU6OnNldHVwTm9uU2Nh
bGluZ1N0cm9rZUNvbnRleHQoQWZmaW5lVHJhbnNmb3JtJiBzdHJva2VUcmFuc2Zvcm0sIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4YmMwYTk5Li41
MzdmZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IFBhaQogCiBzdGF0aWMgQWZmaW5lVHJhbnNmb3JtJiBjdXJyZW50Q29udGVudFRyYW5zZm9ybWF0
aW9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQWZmaW5lVHJhbnNm
b3JtLCBzX2N1cnJlbnRDb250ZW50VHJhbnNmb3JtYXRpb24sICgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QWZmaW5lVHJhbnNmb3JtPiBzX2N1cnJlbnRDb250ZW50VHJhbnNmb3JtYXRp
b247CiAgICAgcmV0dXJuIHNfY3VycmVudENvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCmluZGV4IGU2OGNl
MzguLjJlMWYyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291
cmNlcy5jcHAKQEAgLTQ1LDQ0ICs0NSw0NCBAQCBTVkdSZXNvdXJjZXM6OlNWR1Jlc291cmNlcygp
CiAKIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGNsaXBwZXJGaWx0ZXJNYXNrZXJUYWdz
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNT
dHJpbmc+LCBzX3RhZ0xpc3QsICgpKTsKLSAgICBpZiAoc190YWdMaXN0LmlzRW1wdHkoKSkgewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IHNfdGFnTGlz
dDsKKyAgICBpZiAoc190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgewogICAgICAgICAvLyAiY29u
dGFpbmVyIGVsZW1lbnRzIjogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvaW50cm8uaHRtbCNU
ZXJtQ29udGFpbmVyRWxlbWVudAogICAgICAgICAvLyAiZ3JhcGhpY3MgZWxlbWVudHMiIDogaHR0
cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvaW50cm8uaHRtbCNUZXJtR3JhcGhpY3NFbGVtZW50Ci0g
ICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmFUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpjaXJjbGVUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjplbGxpcHNlVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAg
ICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Z2x5cGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpnVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190
YWdMaXN0LmFkZChTVkdOYW1lczo6aW1hZ2VUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3Rh
Z0xpc3QuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdM
aXN0LmFkZChTVkdOYW1lczo6bWFya2VyVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdM
aXN0LmFkZChTVkdOYW1lczo6bWFza1RhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlz
dC5hZGQoU1ZHTmFtZXM6Om1pc3NpbmdfZ2x5cGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190
YWdMaXN0LmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNf
dGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6cmVjdFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNf
dGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnN2Z1RhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFn
TGlzdC5hZGQoU1ZHTmFtZXM6OnRleHRUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xp
c3QuYWRkKFNWR05hbWVzOjp1c2VUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3Qu
Z2V0KCkuYWRkKFNWR05hbWVzOjphVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0
LmdldCgpLmFkZChTVkdOYW1lczo6Y2lyY2xlVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190
YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6ZWxsaXBzZVRhZy5sb2NhbE5hbWUoKSk7CisgICAg
ICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmdseXBoVGFnLmxvY2FsTmFtZSgpKTsK
KyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6Z1RhZy5sb2NhbE5hbWUoKSk7
CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmltYWdlVGFnLmxvY2FsTmFt
ZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6bGluZVRhZy5sb2Nh
bE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6Om1hcmtlclRh
Zy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6Om1h
c2tUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVz
OjptaXNzaW5nX2dseXBoVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgp
LmFkZChTVkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3Rh
Z0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKSk7CisgICAg
ICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJlY3RUYWcubG9jYWxOYW1lKCkpOwor
ICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpzdmdUYWcubG9jYWxOYW1lKCkp
OworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0ZXh0VGFnLmxvY2FsTmFt
ZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dXNlVGFnLmxvY2Fs
TmFtZSgpKTsKIAogICAgICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBkZWZpbml0aW9ucyBpcyB0
aGUgY2xpcFBhdGggZWxlbWVudCwgdGhlIFNWRyBzcGVjIHNheXMgdGhvdWdoOgogICAgICAgICAv
LyBUaGUgImNsaXBQYXRoIiBlbGVtZW50IG9yIGFueSBvZiBpdHMgY2hpbGRyZW4gY2FuIHNwZWNp
ZnkgcHJvcGVydHkgImNsaXAtcGF0aCIuCiAgICAgICAgIC8vIFNvIHdlIGhhdmUgdG8gYWRkIGNs
aXBQYXRoVGFnIGhlcmUsIG90aGVyd2hpc2UgY2xpcC1wYXRoIG9uIGNsaXBQYXRoIHdpbGwgZmFp
bC4KICAgICAgICAgLy8gKEFscmVhZHkgbWFpbGVkIFNWRyBXRywgd2FpdGluZyBmb3IgYSBzb2x1
dGlvbikKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6Y2xpcFBhdGhUYWcubG9jYWxO
YW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpjbGlwUGF0aFRh
Zy5sb2NhbE5hbWUoKSk7CiAKICAgICAgICAgLy8gTm90IGxpc3RlZCBpbiB0aGUgZGVmaW5pdGlv
bnMgYXJlIHRoZSB0ZXh0IGNvbnRlbnQgZWxlbWVudHMsIHRob3VnaCBmaWx0ZXIvY2xpcHBlci9t
YXNrZXIgb24gdHNwYW4vdGV4dC8uLiBpcyBhbGxvd2VkLgogICAgICAgICAvLyAoQWxyZWFkeSBt
YWlsZWQgU1ZHIFdHLCB3YWl0aW5nIGZvciBhIHNvbHV0aW9uKQotICAgICAgICBzX3RhZ0xpc3Qu
YWRkKFNWR05hbWVzOjphbHRHbHlwaFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlz
dC5hZGQoU1ZHTmFtZXM6OnRleHRQYXRoVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdM
aXN0LmFkZChTVkdOYW1lczo6dHJlZlRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlz
dC5hZGQoU1ZHTmFtZXM6OnRzcGFuVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0
LmdldCgpLmFkZChTVkdOYW1lczo6YWx0R2x5cGhUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBz
X3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0ZXh0UGF0aFRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRyZWZUYWcubG9jYWxOYW1lKCkp
OworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0c3BhblRhZy5sb2NhbE5h
bWUoKSk7CiAKICAgICAgICAgLy8gTm90IGxpc3RlZCBpbiB0aGUgZGVmaW5pdGlvbnMgaXMgdGhl
IGZvcmVpZ25PYmplY3QgZWxlbWVudCwgYnV0IGNsaXAtcGF0aAogICAgICAgICAvLyBpcyBhIHN1
cHBvcnRlZCBhdHRyaWJ1dGUuCi0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmZvcmVp
Z25PYmplY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNW
R05hbWVzOjpmb3JlaWduT2JqZWN0VGFnLmxvY2FsTmFtZSgpKTsKIAogICAgICAgICAvLyBFbGVt
ZW50cyB0aGF0IHdlIGlnbm9yZSwgYXMgaXQgZG9lc24ndCBtYWtlIGFueSBzZW5zZS4KICAgICAg
ICAgLy8gZGVmcywgcGF0dGVybiwgc3dpdGNoIChGSVhNRTogTWFpbCBTVkcgV0cgYWJvdXQgdGhl
c2UpCkBAIC05NCwxMiArOTQsMTIgQEAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgY2xp
cHBlckZpbHRlck1hc2tlclRhZ3MoKQogCiBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBt
YXJrZXJUYWdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNl
dDxBdG9taWNTdHJpbmc+LCBzX3RhZ0xpc3QsICgpKTsKLSAgICBpZiAoc190YWdMaXN0LmlzRW1w
dHkoKSkgewotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFt
ZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUo
KSk7Ci0gICAgICAgIHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5h
bWUoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4g
c190YWdMaXN0OworICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAg
IHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxOYW1lKCkpOworICAg
ICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpKTsK
KyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWdvblRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlsaW5lVGFn
LmxvY2FsTmFtZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gc190YWdMaXN0OwpAQCAtMTA3LDIw
ICsxMDcsMjAgQEAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgbWFya2VyVGFncygpCiAK
IHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGZpbGxBbmRTdHJva2VUYWdzKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBz
X3RhZ0xpc3QsICgpKTsKLSAgICBpZiAoc190YWdMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjphbHRHbHlwaFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmNpcmNsZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OmVsbGlwc2VUYWcubG9jYWxOYW1lKCkpOwotICAgICAg
ICBzX3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAg
c190YWdMaXN0LmFkZChTVkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNf
dGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5hZGQoU1ZHTmFtZXM6OnJlY3RUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0ZXh0VGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190
YWdMaXN0LmFkZChTVkdOYW1lczo6dGV4dFBhdGhUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuYWRkKFNWR05hbWVzOjp0cmVmVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190
YWdMaXN0LmFkZChTVkdOYW1lczo6dHNwYW5UYWcubG9jYWxOYW1lKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IHNfdGFnTGlzdDsKKyAgICBpZiAo
c190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRk
KFNWR05hbWVzOjphbHRHbHlwaFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6OmNpcmNsZVRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFn
TGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmVsbGlwc2VUYWcubG9jYWxOYW1lKCkpOworICAgICAg
ICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpsaW5lVGFnLmxvY2FsTmFtZSgpKTsKKyAg
ICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cGF0aFRhZy5sb2NhbE5hbWUoKSk7
CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxO
YW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRh
Zy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJl
Y3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVz
Ojp0ZXh0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdO
YW1lczo6dGV4dFBhdGhUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCku
YWRkKFNWR05hbWVzOjp0cmVmVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgc190YWdMaXN0Lmdl
dCgpLmFkZChTVkdOYW1lczo6dHNwYW5UYWcubG9jYWxOYW1lKCkpOwogICAgIH0KIAogICAgIHJl
dHVybiBzX3RhZ0xpc3Q7CkBAIC0xMjgsMTIgKzEyOCwxMiBAQCBzdGF0aWMgSGFzaFNldDxBdG9t
aWNTdHJpbmc+JiBmaWxsQW5kU3Ryb2tlVGFncygpCiAKIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0
cmluZz4mIGNoYWluYWJsZVJlc291cmNlVGFncygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWljU3RyaW5nPiwgc190YWdMaXN0LCAoKSk7Ci0gICAg
aWYgKHNfdGFnTGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgc190YWdMaXN0LmFkZChTVkdOYW1l
czo6bGluZWFyR3JhZGllbnRUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRk
KFNWR05hbWVzOjpmaWx0ZXJUYWcubG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuYWRk
KFNWR05hbWVzOjpwYXR0ZXJuVGFnLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmFk
ZChTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcubG9jYWxOYW1lKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IHNfdGFnTGlzdDsKKyAgICBpZiAo
c190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRk
KFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgIHNfdGFn
TGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmZpbHRlclRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAg
IHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBhdHRlcm5UYWcubG9jYWxOYW1lKCkpOwor
ICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZy5s
b2NhbE5hbWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHNfdGFnTGlzdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5nbGUuY3BwCmluZGV4IDU4OGYyNzcuLjlhNjk0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNw
cApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEyLDE2ICsxMTMsMTYgQEAgU3RyaW5n
IFNWR0FuZ2xlOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdW5pdFR5
cGUpIHsKICAgICBjYXNlIFNWR19BTkdMRVRZUEVfREVHOiB7Ci0gICAgICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRlZ1N0cmluZywgKEFTQ0lJTGl0ZXJhbCgiZGVn
IikpKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzKSArIGRlZ1N0cmluZzsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
ZGVnU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZGVnIikpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpu
dW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgZGVnU3RyaW5nLmdldCgpOwogICAgIH0K
ICAgICBjYXNlIFNWR19BTkdMRVRZUEVfUkFEOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIHJhZFN0cmluZywgKEFTQ0lJTGl0ZXJhbCgicmFkIikpKTsK
LSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSAr
IHJhZFN0cmluZzsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcmFkU3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgicmFkIikpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIo
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgcmFkU3RyaW5nLmdldCgpOwogICAgIH0KICAgICBj
YXNlIFNWR19BTkdMRVRZUEVfR1JBRDogewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBncmFkU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJncmFkIikpKTsKLSAg
ICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIGdy
YWRTdHJpbmc7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGdyYWRTdHJp
bmcoQVNDSUlMaXRlcmFsKCJncmFkIikpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIo
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgZ3JhZFN0cmluZy5nZXQoKTsKICAgICB9CiAgICAg
Y2FzZSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9V
TktOT1dOOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3Bw
CmluZGV4IGQ0NDkyYWQuLjBmYjZkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgUmVmPFNWR0FuaW1hdGVDb2xv
ckVsZW1lbnQ+IFNWR0FuaW1hdGVDb2xvckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJgogCiBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVWYWx1ZUlzQ3VycmVudENvbG9yKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgY3VycmVudENvbG9yLCAoImN1cnJlbnRDb2xvciIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiBjdXJyZW50Q29sb3IoImN1cnJlbnRDb2xvciIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiB2YWx1ZSA9PSBjdXJyZW50Q29s
b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9u
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQu
Y3BwCmluZGV4IDQ5NmMyZjMuLjc5YzA0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAtMTA4LDggKzEwOCw4IEBAIHZvaWQgU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0CiAgICAgCiBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Um90YXRlTW9kZSBT
VkdBbmltYXRlTW90aW9uRWxlbWVudDo6cm90YXRlTW9kZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYXV0b1ZhbCwgKCJh
dXRvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGF1dG9SZXZlcnNlLCAo
ImF1dG8tcmV2ZXJzZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBhdXRvVmFsKCJhdXRv
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYXV0b1JldmVyc2UoImF1dG8tcmV2ZXJzZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgcm90YXRlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpyb3RhdGVBdHRyKTsKICAgICBp
ZiAocm90YXRlID09IGF1dG9WYWwpCiAgICAgICAgIHJldHVybiBSb3RhdGVBdXRvOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCmluZGV4IDM0NjI4YWQuLmViMTI0
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTI4
NiwxMCArMjg2LDEwIEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0aW9u
TW9kZSgpCiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0Q2FsY01vZGUoY29uc3QgQXRv
bWljU3RyaW5nJiBjYWxjTW9kZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBkaXNjcmV0ZSwgKCJkaXNjcmV0ZSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBsaW5lYXIsICgibGluZWFyIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHBhY2VkLCAoInBhY2VkIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHNwbGluZSwgKCJzcGxpbmUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gZGlzY3JldGUoImRpc2NyZXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gbGluZWFyKCJsaW5lYXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBwYWNlZCgicGFj
ZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzcGxpbmUoInNwbGluZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChjYWxjTW9kZSA9PSBkaXNjcmV0
ZSkKICAgICAgICAgc2V0Q2FsY01vZGUoQ2FsY01vZGVEaXNjcmV0ZSk7CiAgICAgZWxzZSBpZiAo
Y2FsY01vZGUgPT0gbGluZWFyKQpAQCAtMzA0LDggKzMwNCw4IEBAIHZvaWQgU1ZHQW5pbWF0aW9u
RWxlbWVudDo6c2V0Q2FsY01vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBjYWxjTW9kZSkKIAogdm9p
ZCBTVkdBbmltYXRpb25FbGVtZW50OjpzZXRBdHRyaWJ1dGVUeXBlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVHlwZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgQXRvbWljU3RyaW5nLCBjc3MsICgiQ1NTIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIHhtbCwgKCJYTUwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY3Nz
KCJDU1MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB4bWwoIlhNTCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChhdHRyaWJ1dGVUeXBlID09IGNzcykK
ICAgICAgICAgbV9hdHRyaWJ1dGVUeXBlID0gQXR0cmlidXRlVHlwZUNTUzsKICAgICBlbHNlIGlm
IChhdHRyaWJ1dGVUeXBlID09IHhtbCkKQEAgLTMzMiwxNCArMzMyLDE0IEBAIFN0cmluZyBTVkdB
bmltYXRpb25FbGVtZW50Ojpmcm9tVmFsdWUoKSBjb25zdAogCiBib29sIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzQWRkaXRpdmUoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1bSwgKCJzdW0iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gc3VtKCJzdW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShTVkdO
YW1lczo6YWRkaXRpdmVBdHRyKTsKICAgICByZXR1cm4gdmFsdWUgPT0gc3VtIHx8IGFuaW1hdGlv
bk1vZGUoKSA9PSBCeUFuaW1hdGlvbjsKIH0KIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojpp
c0FjY3VtdWxhdGVkKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdW0sICgic3VtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNT
dHJpbmc+IHN1bSgic3VtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6
OmFjY3VtdWxhdGVBdHRyKTsKICAgICByZXR1cm4gdmFsdWUgPT0gc3VtICYmIGFuaW1hdGlvbk1v
ZGUoKSAhPSBUb0FuaW1hdGlvbjsKIH0KQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIFNWR0FuaW1h
dGlvbkVsZW1lbnQ6OmFkanVzdEZvckluaGVyaXRhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1l
bnQsIGNvbnN0CiAKIHN0YXRpYyBib29sIGluaGVyaXRzRnJvbVByb3BlcnR5KFNWR0VsZW1lbnQq
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIGluaGVyaXQsICgiaW5oZXJpdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBpbmhl
cml0KCJpbmhlcml0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
CiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSB8fCB2YWx1ZSAhPSBpbmhlcml0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmNwcAppbmRleCAxZmFlYTUzLi5kZGY5MjY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTc1LDI1ICs3NSwy
NSBAQCBSZWY8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRp
ZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lk
ZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFlJZGVu
dGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHS2VybmVsVW5pdExlbmd0aFkiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdLZXJuZWxVbml0TGVuZ3RoWSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om9yZGVyWElk
ZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdPcmRlclgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
c19pZGVudGlmaWVyKCJTVkdPcmRlclgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpvcmRlcllJZGVudGlmaWVyKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIs
ICgiU1ZHT3JkZXJZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHT3Jk
ZXJZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNf
aWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBiYTJhM2Q0Li4xMmZhMGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtNjMs
MTMgKzYzLDEzIEBAIFJlZjxTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ+IFNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpCiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWElkZW50aWZp
ZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhYIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRM
ZW5ndGhZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0tlcm5lbFVuaXRMZW5ndGhZIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHS2VybmVsVW5pdExlbmd0aFkiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlm
aWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5j
cHAKaW5kZXggYWVlMDhkZC4uZjkzZGFjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBSZWY8U1ZHRkVEcm9w
U2hhZG93RWxlbWVudD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6
c3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdTdGREZXZpYXRpb25YIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHU3RkRGV2aWF0aW9uWCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZp
ZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3Rk
RGV2aWF0aW9uWUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdTdGREZXZpYXRpb25ZIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHU3RkRGV2aWF0aW9uWSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHAKaW5kZXggMjJjMTc4Yi4uN2IyMWRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBSZWY8U1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudDo6c3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdTdGREZXZpYXRp
b25YIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHU3RkRGV2aWF0aW9u
WCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lk
ZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjpzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1N0ZERldmlhdGlv
blkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdTdGREZXZpYXRpb25Z
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRl
bnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuY3BwCmluZGV4IDU5ZjA3ZDIuLjMzNzBlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTU2LDEzICs1NiwxMyBAQCBSZWY8U1ZHRkVN
b3JwaG9sb2d5RWxlbWVudD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6cmFkaXVzWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdSYWRpdXNYIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigiU1ZHUmFkaXVzWCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cmFkaXVzWUlkZW50aWZpZXIo
KQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNf
aWRlbnRpZmllciwgKCJTVkdSYWRpdXNZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRp
ZmllcigiU1ZHUmFkaXVzWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBmZWY3ZWVkLi4xOWY1ZDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuY3BwCkBAIC02NywxMyArNjcsMTMgQEAgUmVmPFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQ+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWEKIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjprZXJuZWxV
bml0TGVuZ3RoWElkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJuZWxVbml0TGVuZ3RoWCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tlcm5lbFVuaXRMZW5ndGhY
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRl
bnRpZmllcjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50OjprZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdLZXJu
ZWxVbml0TGVuZ3RoWSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR0tl
cm5lbFVuaXRMZW5ndGhZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwCmluZGV4IDg2ZGNhZjEuLmI4MDhiZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKQEAgLTYxLDEzICs2MSwx
MyBAQCBSZWY8U1ZHRkVUdXJidWxlbmNlRWxlbWVudD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVU
dXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgi
U1ZHQmFzZUZyZXF1ZW5jeVgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJT
VkdCYXNlRnJlcXVlbmN5WCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVU
dXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgi
U1ZHQmFzZUZyZXF1ZW5jeVkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJT
VkdCYXNlRnJlcXVlbmN5WSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJF
bGVtZW50LmNwcAppbmRleCBmMzJjMzJmLi4wYTc1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlckVsZW1lbnQuY3BwCkBAIC04MiwxMyArODIsMTMgQEAgUmVmPFNWR0ZpbHRlckVsZW1l
bnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2MKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdGaWx0ZXJFbGVtZW50OjpmaWx0ZXJSZXNY
SWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR0ZpbHRlclJlc1giLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gc19pZGVudGlmaWVyKCJTVkdGaWx0ZXJSZXNYIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBTVkdGaWx0ZXJFbGVtZW50OjpmaWx0ZXJSZXNZSWRlbnRpZmllcigpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlm
aWVyLCAoIlNWR0ZpbHRlclJlc1kiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVy
KCJTVkdGaWx0ZXJSZXNZIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAg
ICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dseXBoTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaAppbmRl
eCBiNzQ3YzZkLi5jZTBiNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5
cGhNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaApAQCAtMTQzLDcg
KzE0Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTVkdHbHlwaCYgc3ZnR2x5cGhGb3JHbHlwaChH
bHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghZ2x5cGggfHwgZ2x5cGggPiBt
X2dseXBoVGFibGUuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoU1ZHR2x5cGgsIGRlZmF1bHRHbHlwaCwgKCkpOworICAgICAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNWR0dseXBoPiBkZWZhdWx0R2x5cGg7CiAgICAgICAgICAgICByZXR1
cm4gZGVmYXVsdEdseXBoOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2dseXBoVGFibGVb
Z2x5cGggLSAxXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAKaW5kZXggNDhiZTBkYy4u
YjY1MTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAgdm9pZCBTVkdMYW5nU3BhY2U6OnNldFhtbGxhbmcoY29uc3QgQXRvbWljU3RyaW5nJiB4bWxM
YW5nKQogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdMYW5nU3BhY2U6OnhtbHNwYWNlKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fc3BhY2UpIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGVmYXVsdFN0cmluZywgKCJkZWZhdWx0IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBkZWZhdWx0U3RyaW5nKCJkZWZhdWx0IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiBkZWZhdWx0
U3RyaW5nOwogICAgIH0KIApAQCAtNjIsNyArNjIsNyBAQCBib29sIFNWR0xhbmdTcGFjZTo6aXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAKIHZvaWQg
U1ZHTGFuZ1NwYWNlOjphZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFt
ZT4mIHN1cHBvcnRlZEF0dHJpYnV0ZXMpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgeG1sUHJlZml4LCAoInhtbCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiB4bWxQcmVmaXgoInhtbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogCiAgICAgUXVhbGlmaWVkTmFtZSBsYW5nV2l0aFByZWZpeCA9IFhNTE5hbWVzOjpsYW5nQXR0
cjsKICAgICBsYW5nV2l0aFByZWZpeC5zZXRQcmVmaXgoeG1sUHJlZml4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAppbmRleCAwNjY4N2YyLi5kZjk2ZWEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCkBAIC05MCwxMyArOTAsMTMgQEAgUmVm
PFNWR01hcmtlckVsZW1lbnQ+IFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2MKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdNYXJrZXJFbGVt
ZW50OjpvcmllbnRUeXBlSWRlbnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlmaWVyLCAoIlNWR09yaWVudFR5cGUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gc19pZGVudGlmaWVyKCJTVkdPcmllbnRUeXBlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRBbmdsZUlk
ZW50aWZpZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHNfaWRlbnRpZmllciwgKCJTVkdPcmllbnRBbmdsZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBzX2lkZW50aWZpZXIoIlNWR09yaWVudEFuZ2xlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIApAQCAtMjM3LDcg
KzIzNyw3IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVPcmllbnRUeXBlKFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIGlmIChvd25lclR5cGUubV9vcmllbnRUeXBl
LnZhbHVlICE9IFNWR01hcmtlck9yaWVudEF1dG8pCiAgICAgICAgIHJldHVybjsKIAotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGF1dG9TdHJpbmcsICgi
YXV0byIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBhdXRvU3RyaW5nKCJhdXRvIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgb3duZXJUeXBlLm1fb3JpZW50VHlwZS5z
eW5jaHJvbml6ZSgmb3duZXJUeXBlLCBvcmllbnRUeXBlUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0
ZU5hbWUsIGF1dG9TdHJpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQu
Y3BwCmluZGV4IDhhYzI4ZGEuLjA0NWFlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVs
ZW1lbnQuY3BwCkBAIC02Miw5ICs2Miw5IEBAIHZvaWQgU1ZHU3R5bGVFbGVtZW50OjpzZXREaXNh
YmxlZChib29sIHNldERpc2FibGVkKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0eWxlRWxl
bWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgZGVmYXVsdFZhbHVlLCAoInRleHQvY3NzIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IGRlZmF1bHRWYWx1ZSgidGV4dC9jc3MiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBnZXRB
dHRyaWJ1dGUoU1ZHTmFtZXM6OnR5cGVBdHRyKTsKLSAgICByZXR1cm4gbi5pc051bGwoKSA/IGRl
ZmF1bHRWYWx1ZSA6IG47CisgICAgcmV0dXJuIG4uaXNOdWxsKCkgPyBkZWZhdWx0VmFsdWUuZ2V0
KCkgOiBuOwogfQogCiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0VHlwZShjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtNzQsOSArNzQsOSBAQCB2b2lkIFNWR1N0
eWxlRWxlbWVudDo6c2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNv
ZGUmKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6bWVkaWEoKSBjb25z
dAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIGRlZmF1bHRWYWx1ZSwgKCJhbGwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZGVm
YXVsdFZhbHVlKCJhbGwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBmYXN0R2V0QXR0cmlidXRlKFNWR05hbWVzOjptZWRp
YUF0dHIpOwotICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVlIDogbjsKKyAgICBy
ZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZS5nZXQoKSA6IG47CiB9CiAKIHZvaWQgU1ZH
U3R5bGVFbGVtZW50OjpzZXRNZWRpYShjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhLCBFeGNlcHRp
b25Db2RlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKaW5kZXggZThhM2YxMi4uMjEx
YWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJTVkdBbmdsZS5oIgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC0xMzQsMjcgKzEzNSwyNyBAQCBjb25zdCBTdHJpbmcmIFNWR1RyYW5zZm9y
bTo6dHJhbnNmb3JtVHlwZVByZWZpeEZvclBhcnNpbmcoU1ZHVHJhbnNmb3JtVHlwZSB0eXBlKQog
ICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9VTktOT1dOOgogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fTUFUUklYOiB7Ci0gICAgICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG1hdHJpeFN0cmluZywgKEFTQ0lJTGl0ZXJh
bCgibWF0cml4KCIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IG1h
dHJpeFN0cmluZyhBU0NJSUxpdGVyYWwoIm1hdHJpeCgiKSk7CiAgICAgICAgIHJldHVybiBtYXRy
aXhTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9UUkFOU0xBVEU6IHsKLSAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdHJhbnNsYXRlU3Ry
aW5nLCAoQVNDSUlMaXRlcmFsKCJ0cmFuc2xhdGUoIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gdHJhbnNsYXRlU3RyaW5nKEFTQ0lJTGl0ZXJhbCgidHJhbnNsYXRl
KCIpKTsKICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZVN0cmluZzsKICAgICB9CiAgICAgY2FzZSBT
VkdfVFJBTlNGT1JNX1NDQUxFOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIHNjYWxlU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzY2FsZSgiKSkpOworICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY2FsZVN0cmluZyhBU0NJSUxpdGVy
YWwoInNjYWxlKCIpKTsKICAgICAgICAgcmV0dXJuIHNjYWxlU3RyaW5nOwogICAgIH0KICAgICBj
YXNlIFNWR19UUkFOU0ZPUk1fUk9UQVRFOiB7Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHJvdGF0ZVN0cmluZywgKEFTQ0lJTGl0ZXJhbCgicm90YXRlKCIp
KSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHJvdGF0ZVN0cmluZyhB
U0NJSUxpdGVyYWwoInJvdGF0ZSgiKSk7CiAgICAgICAgIHJldHVybiByb3RhdGVTdHJpbmc7CiAg
ICAgfSAgICAKICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1g6IHsKLSAgICAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc2tld1hTdHJpbmcsIChBU0NJSUxpdGVy
YWwoInNrZXdYKCIpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNr
ZXdYU3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2tld1goIikpOwogICAgICAgICByZXR1cm4gc2tld1hT
dHJpbmc7CiAgICAgfQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWTogewotICAgICAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBza2V3WVN0cmluZywgKEFTQ0lJ
TGl0ZXJhbCgic2tld1koIikpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc2tld1lTdHJpbmcoQVNDSUlMaXRlcmFsKCJza2V3WSgiKSk7CiAgICAgICAgIHJldHVybiBz
a2V3WVN0cmluZzsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZpZXdTcGVjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKaW5k
ZXggYWM4NmVlMy4uMDA5OGNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Zp
ZXdTcGVjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCkBAIC04
NCwxOSArODQsMTkgQEAgU1ZHVmlld1NwZWM6OlNWR1ZpZXdTcGVjKFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1ZpZXdTcGVjOjp2aWV3Qm94SWRl
bnRpZmllcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgc19pZGVudGlmaWVyLCAoIlNWR1ZpZXdTcGVjVmlld0JveEF0dHJpYnV0ZSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBzX2lkZW50aWZpZXIoIlNWR1ZpZXdTcGVjVmlld0JveEF0dHJpYnV0
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzX2lk
ZW50aWZpZXI7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHVmlld1NwZWM6OnByZXNlcnZl
QXNwZWN0UmF0aW9JZGVudGlmaWVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBzX2lkZW50aWZpZXIsICgiU1ZHVmlld1NwZWNQcmVzZXJ2ZUFz
cGVjdFJhdGlvQXR0cmlidXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNfaWRlbnRpZmllcigi
U1ZHVmlld1NwZWNQcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cmlidXRlIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBTVkdWaWV3U3BlYzo6dHJhbnNmb3JtSWRlbnRpZmllcigpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc19pZGVudGlm
aWVyLCAoIlNWR1ZpZXdTcGVjVHJhbnNmb3JtQXR0cmlidXRlIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IHNfaWRlbnRpZmllcigiU1ZHVmlld1NwZWNUcmFuc2Zvcm1BdHRyaWJ1dGUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3Bw
CmluZGV4IDM1NjhiZTQuLjQ0MTBiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmlt
YXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0zMjksNyArMzI5LDcgQEAgU01JTFRpbWUgU1ZH
U01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgCiAg
ICAgU3RyaW5nIHBhcnNlID0gZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKIAotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGluZGVmaW5pdGVWYWx1
ZSwgKCJpbmRlZmluaXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGluZGVmaW5pdGVW
YWx1ZSgiaW5kZWZpbml0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIGlmIChwYXJzZSA9PSBpbmRlZmluaXRlVmFsdWUpCiAgICAgICAgIHJldHVybiBTTUlMVGlt
ZTo6aW5kZWZpbml0ZSgpOwogCkBAIC00NTIsMTkgKzQ1MiwxOSBAQCB2b2lkIFNWR1NNSUxFbGVt
ZW50OjpwYXJzZUJlZ2luT3JFbmQoY29uc3QgU3RyaW5nJiBwYXJzZVN0cmluZywgQmVnaW5PckVu
ZCBiZWdpbgogCiBib29sIFNWR1NNSUxFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoSGFzaFNldDxRdWFsaWZpZWROYW1lPiwgc3VwcG9ydGVkQXR0cmlidXRlcywgKCkp
OwotICAgIGlmIChzdXBwb3J0ZWRBdHRyaWJ1dGVzLmlzRW1wdHkoKSkgewotICAgICAgICBzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6YmVnaW5BdHRyKTsKLSAgICAgICAgc3VwcG9y
dGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6OmVuZEF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRB
dHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6ZHVyQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJp
YnV0ZXMuYWRkKFNWR05hbWVzOjpyZXBlYXREdXJBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0
cmlidXRlcy5hZGQoU1ZHTmFtZXM6OnJlcGVhdENvdW50QXR0cik7Ci0gICAgICAgIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuYWRkKFNWR05hbWVzOjptaW5BdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0
cmlidXRlcy5hZGQoU1ZHTmFtZXM6Om1heEF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1
dGVzLmFkZChTVkdOYW1lczo6YXR0cmlidXRlTmFtZUF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRB
dHRyaWJ1dGVzLmFkZChYTGlua05hbWVzOjpocmVmQXR0cik7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4+IHN1cHBvcnRlZEF0dHJpYnV0ZXM7CisgICAg
aWYgKHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHN1cHBv
cnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpiZWdpbkF0dHIpOworICAgICAgICBz
dXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6ZW5kQXR0cik7CisgICAgICAg
IHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpkdXJBdHRyKTsKKyAgICAg
ICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJlcGVhdER1ckF0dHIp
OworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6cmVwZWF0
Q291bnRBdHRyKTsKKyAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFt
ZXM6Om1pbkF0dHIpOworICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdO
YW1lczo6bWF4QXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNW
R05hbWVzOjphdHRyaWJ1dGVOYW1lQXR0cik7CisgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMu
Z2V0KCkuYWRkKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKICAgICB9Ci0gICAgcmV0dXJuIHN1cHBv
cnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8U1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJO
YW1lKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250YWluczxTVkdB
dHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCiB2b2lkIFNWR1NNSUxFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQpAQCAtNjQzLDggKzY0Myw4IEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6
OmlzRnJvemVuKCkgY29uc3QKICAgICAKIFNWR1NNSUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NNSUxF
bGVtZW50OjpyZXN0YXJ0KCkgY29uc3QKIHsgICAgCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbmV2ZXIsICgibmV2ZXIiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgd2hlbk5vdEFjdGl2ZSwgKCJ3aGVuTm90QWN0aXZl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IG5ldmVyKCJuZXZlciIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IHdoZW5Ob3RBY3RpdmUoIndoZW5Ob3RBY3RpdmUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
ID0gZmFzdEdldEF0dHJpYnV0ZShTVkdOYW1lczo6cmVzdGFydEF0dHIpOwogICAgIGlmICh2YWx1
ZSA9PSBuZXZlcikKICAgICAgICAgcmV0dXJuIFJlc3RhcnROZXZlcjsKQEAgLTY1NSw3ICs2NTUs
NyBAQCBTVkdTTUlMRWxlbWVudDo6UmVzdGFydCBTVkdTTUlMRWxlbWVudDo6cmVzdGFydCgpIGNv
bnN0CiAgICAgCiBTVkdTTUlMRWxlbWVudDo6RmlsbE1vZGUgU1ZHU01JTEVsZW1lbnQ6OmZpbGwo
KSBjb25zdAogeyAgIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIGZyZWV6ZSwgKCJmcmVlemUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gZnJlZXplKCJmcmVlemUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShTVkdOYW1l
czo6ZmlsbEF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBmcmVlemUgPyBGaWxsRnJlZXplIDog
RmlsbFJlbW92ZTsKIH0KQEAgLTY4OCw3ICs2ODgsNyBAQCBTTUlMVGltZSBTVkdTTUlMRWxlbWVu
dDo6cmVwZWF0Q291bnQoKSBjb25zdAogICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBpbmRlZmluaXRlVmFsdWUsICgiaW5kZWZp
bml0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBpbmRlZmluaXRlVmFsdWUoImluZGVm
aW5pdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAodmFs
dWUgPT0gaW5kZWZpbml0ZVZhbHVlKQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5p
dGUoKTsKICAgICBib29sIG9rOwpAQCAtMTE0MywxNiArMTE0MywxNiBAQCBib29sIFNWR1NNSUxF
bGVtZW50Ojpwcm9ncmVzcyhTTUlMVGltZSBlbGFwc2VkLCBTVkdTTUlMRWxlbWVudCogcmVzdWx0
RWxlbWVudCwgYgogdm9pZCBTVkdTTUlMRWxlbWVudDo6bm90aWZ5RGVwZW5kZW50c0ludGVydmFs
Q2hhbmdlZChOZXdPckV4aXN0aW5nSW50ZXJ2YWwgbmV3T3JFeGlzdGluZykKIHsKICAgICBBU1NF
UlQobV9pbnRlcnZhbEJlZ2luLmlzRmluaXRlKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChIYXNoU2V0PFNWR1NNSUxFbGVtZW50Kj4sIGxvb3BCcmVha2VyLCAoKSk7Ci0g
ICAgaWYgKGxvb3BCcmVha2VyLmNvbnRhaW5zKHRoaXMpKQorICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFNWR1NNSUxFbGVtZW50Kj4+IGxvb3BCcmVha2VyOworICAgIGlmIChsb29w
QnJlYWtlci5nZXQoKS5jb250YWlucyh0aGlzKSkKICAgICAgICAgcmV0dXJuOwotICAgIGxvb3BC
cmVha2VyLmFkZCh0aGlzKTsKKyAgICBsb29wQnJlYWtlci5nZXQoKS5hZGQodGhpcyk7CiAgICAg
CiAgICAgZm9yIChhdXRvJiBkZXBlbmRlbnQgOiBtX3RpbWVEZXBlbmRlbnRzKSB7CiAgICAgICAg
IGRlcGVuZGVudC0+Y3JlYXRlSW5zdGFuY2VUaW1lc0Zyb21TeW5jYmFzZSh0aGlzLCBuZXdPckV4
aXN0aW5nKTsKICAgICB9CiAKLSAgICBsb29wQnJlYWtlci5yZW1vdmUodGhpcyk7CisgICAgbG9v
cEJyZWFrZXIuZ2V0KCkucmVtb3ZlKHRoaXMpOwogfQogICAgIAogdm9pZCBTVkdTTUlMRWxlbWVu
dDo6Y3JlYXRlSW5zdGFuY2VUaW1lc0Zyb21TeW5jYmFzZShTVkdTTUlMRWxlbWVudCogc3luY2Jh
c2UsIE5ld09yRXhpc3RpbmdJbnRlcnZhbCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268628</attachid>
            <date>2016-01-09 15:03:54 -0800</date>
            <delta_ts>2016-01-09 17:18:55 -0800</delta_ts>
            <desc>Patch 2 (convert some more code)</desc>
            <filename>contd1-152902.diff</filename>
            <type>text/plain</type>
            <size>20714</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZDIzY2Y3Li5hODRjYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkg
QEAKIDIwMTYtMDEtMDkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTCBjb250J2QKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IHNv
bWUgbW9yZSBvZiB0aGUgcmVtYWluaW5nIGNsaWVudHMgdG8gdXNlIE5ldmVyRGVzdHJveWVkLgor
CisgICAgICAgICogaHRtbC90cmFjay9WVFRSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VlRUUmVnaW9uOjp0ZXh0VHJhY2tDdWVDb250YWluZXJTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAg
IChXZWJDb3JlOjpWVFRSZWdpb246OnRleHRUcmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkKToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmg6CisKKzIw
MTYtMDEtMDkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCiAgICAgICAgIFVz
ZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TAogICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyOTAyPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKaW5kZXggOTQxMWY3NS4uY2Y5NGIwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMzMzLDE2ICszMzMsMTQgQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBWVFRSZWdpb246OnRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9sbGlu
Z0NsYXNzKCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBWVFRSZWdpb246OnRleHRUcmFja0N1ZUNv
bnRhaW5lclNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclBzZXVkb0lk
LAotICAgICAgICAoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24tY29udGFpbmVyIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHRyYWNrUmVnaW9uQ3VlQ29udGFpbmVyUHNldWRv
SWQoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24tY29udGFpbmVyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICByZXR1cm4gdHJhY2tSZWdpb25DdWVD
b250YWluZXJQc2V1ZG9JZDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBWVFRSZWdpb246OnRl
eHRUcmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja1JlZ2lvblNoYWRvd1BzZXVkb0lk
LAotICAgICAgICAoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gdHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC1tZWRp
YS10ZXh0LXRyYWNrLXJlZ2lvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogCiAgICAgcmV0dXJuIHRyYWNrUmVnaW9uU2hhZG93UHNldWRvSWQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9z
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFj
cm9zLmgKaW5kZXggNTkzMzE0MC4uNzc3MDVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaApAQCAtODks
MTQgKzg5LDE0IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yIyNP
d25lclR5cGUoKSBcCiAvLyBQcm9wZXJ0eSBkZWZpbml0aW9uIGhlbHBlcnMgKHVzZWQgaW4gU1ZH
Ki5jcHAgZmlsZXMpCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFBy
b3BlcnR5VHlwZUVudW0sIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJ
ZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBjb25zdCBTVkdQcm9w
ZXJ0eUluZm8qIE93bmVyVHlwZTo6TG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJbmZvKCkgeyBcCi0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFNWR1Byb3BlcnR5SW5mbywg
c19wcm9wZXJ0eUluZm8sIFwKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU1ZHUHJv
cGVydHlJbmZvPiBzX3Byb3BlcnR5SW5mbyA9IFNWR1Byb3BlcnR5SW5mbyBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICAoQW5pbWF0ZWRQcm9wZXJ0eVR5cGVFbnVtLCBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHJvcGVydHlJc1JlYWRXcml0ZSwgXAogICAgICAgICAgICAgICAgICAgICAg
ICAgIERPTUF0dHJpYnV0ZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0RPTUF0dHJp
YnV0ZUlkZW50aWZpZXIsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAmT3duZXJUeXBlOjpz
eW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICZP
d25lclR5cGU6Omxvb2t1cE9yQ3JlYXRlIyNVcHBlclByb3BlcnR5IyNXcmFwcGVyKSk7IFwKLSAg
ICByZXR1cm4gJnNfcHJvcGVydHlJbmZvOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJk93
bmVyVHlwZTo6bG9va3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVydHkjI1dyYXBwZXIpOyBcCisgICAg
cmV0dXJuICZzX3Byb3BlcnR5SW5mby5nZXQoKTsgXAogfSAKIAogLy8gUHJvcGVydHkgZGVjbGFy
YXRpb24gaGVscGVycyAodXNlZCBpbiBTVkcqLmggZmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFjNDYzMWQu
LmY5ZDliMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDEtMDkgIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBp
bnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTCBjb250J2QKKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphY3RpdmVTdG9yYWdlVGhyZWFkcyk6CisKIDIwMTUtMTItMzEgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgV1RGOjptb3ZlIHdp
dGggV1RGTW92ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJl
YWQuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmluZGV4IDUw
NWMxZGYuLjhjYThiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAK
QEAgLTI3LDEzICsyNywxNCBAQAogCiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8U3RvcmFnZVRocmVh
ZCo+JiBhY3RpdmVTdG9yYWdlVGhyZWFkcygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdG9yYWdlVGhy
ZWFkKj4sIHRocmVhZHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxT
dG9yYWdlVGhyZWFkKj4+IHRocmVhZHM7CiAgICAgcmV0dXJuIHRocmVhZHM7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0No
YW5nZUxvZwppbmRleCBhMTJjOTVhLi4xYjBjMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTYtMDEtMDkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTCBjb250J2QKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1Mjkw
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOgorICAgICAgICAoV2ViRml4
ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jayk6CisKIDIwMTUtMTItMzEgIEFuZHkgRXN0ZXMgIDxh
ZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgV1RGOjptb3ZlIHdpdGggV1RGTW92
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQ
b3NpdGlvbkNvbnRlbnQubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aXhlZFBvc2l0aW9uQ29udGVudC5tbQppbmRleCAyMWU1ZmEyLi41OTZlOTM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0
aW9uQ29udGVudC5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
VGhyZWFkUnVuLmg+CiAKICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTUwLDcgKzUxLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3RhdGljIExvY2smIFdlYkZpeGVkUG9zaXRpb25D
b250ZW50RGF0YUxvY2soKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChM
b2NrLCBtdXRleCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NrPiBtdXRleDsK
ICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0NjU5YjQ5Li40YjI1
ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTYtMDEtMDkgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3ll
ZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTCBjb250J2QKKyAgICAg
ICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IHNvbWUgbW9yZSBvZiB0aGUgcmVtYWlu
aW5nIGNsaWVudHMgdG8gdXNlIE5ldmVyRGVzdHJveWVkLgorCisgICAgICAgICogSGlzdG9yeS9X
ZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgIChiYWNrRm9yd2FyZExpc3RzKToKKyAgICAg
ICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoaGlzdG9yeUl0ZW1XcmFw
cGVycyk6CisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW06CisgICAgICAg
ICgrW05TUGFzdGVib2FyZCBfd2ViX3dyaXRhYmxlVHlwZXNGb3JVUkxdKToKKyAgICAgICAgKF93
cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSk6CisgICAgICAgIChfd3JpdGFibGVU
eXBlc0ZvckltYWdlV2l0aEFyY2hpdmUpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
SG9zdE1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5Ib3N0UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OnBsdWdpblByb3h5TWFwKToK
KyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06
CisgICAgICAgIChXZWJLaXQ6Omdsb2JhbEV4Y2VwdGlvblN0cmluZyk6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6cHJveHlDbGFz
cyk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbToKKyAgICAg
ICAgKHN0cmVhbXMpOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tOgor
ICAgICAgICAodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW06CisgICAgICAgICh1c2Vy
TWVkaWFDaGVja01hcCk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW06CisgICAgICAgIChyZWdFeHBGb3JMYWJlbHMpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbToKKyAgICAgICAgKGFlRGVzY0Zyb21KU1ZhbHVlKToKKwogMjAxNi0wMS0wNyAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDYW4ndCBwbGF5IGlu
bGluZSB2aWRlbyBpbiBhIHN0b2NrIFdLMSBXZWJWaWV3IG9uIE1hYwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQppbmRleCA3OWZkYTM4Li5lMzVh
YTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJk
TGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlz
dC5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KQEAgLTYwLDcgKzYxLDcgQEAgdHlwZWRlZiBIYXNoTWFwPEJhY2tGb3J3YXJkTGlzdCos
IFdlYkJhY2tGb3J3YXJkTGlzdCo+IEJhY2tGb3J3YXJkTGlzdE1hcDsKIC8vIHdpdGggYSBwb2lu
dGVyIHRvIGEgV2ViQmFja0ZvcndhcmRMaXN0IGluIGl0Lgogc3RhdGljIEJhY2tGb3J3YXJkTGlz
dE1hcCYgYmFja0ZvcndhcmRMaXN0cygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEJhY2tGb3J3YXJkTGlzdE1hcCwgc3RhdGljQmFja0ZvcndhcmRMaXN0cywgKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCYWNrRm9yd2FyZExpc3RNYXA+IHN0YXRpY0JhY2tG
b3J3YXJkTGlzdHM7CiAgICAgcmV0dXJuIHN0YXRpY0JhY2tGb3J3YXJkTGlzdHM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4IGMyNmY5MzQu
LmY5YjdmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bQpAQCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQu
aD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3Au
aD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtMTAyLDcgKzEwMyw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViQ29yZUhpc3RvcnlJ
dGVtKiBjb3JlKFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogaXRlbVByaXZhdGUpCiAKIHN0YXRpYyBI
aXN0b3J5SXRlbU1hcCYgaGlzdG9yeUl0ZW1XcmFwcGVycygpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEhpc3RvcnlJdGVtTWFwLCBoaXN0b3J5SXRlbVdyYXBwZXJzLCAo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhpc3RvcnlJdGVtTWFwPiBoaXN0b3J5SXRl
bVdyYXBwZXJzOwogICAgIHJldHVybiBoaXN0b3J5SXRlbVdyYXBwZXJzOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4IDdlOGQ3
NGMuLjc3ZDE0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0
ZWJvYXJkRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJv
YXJkRXh0cmFzLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9N
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTYw
LDE0ICs2MSwxNCBAQCBOU1N0cmluZyAqV2ViVVJMTmFtZVBib2FyZFR5cGUgPSBAInB1YmxpYy51
cmwtbmFtZSI7CiAKICsgKE5TQXJyYXkgKilfd2ViX3dyaXRhYmxlVHlwZXNGb3JVUkwKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPE5TQXJyYXk+LCB0eXBl
cywgKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgorICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzKFtbTlNBcnJheSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzOgogICAgICAgICBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsCiAgICAgICAg
IE5TVVJMUGJvYXJkVHlwZSwKICAgICAgICAgV2ViVVJMUGJvYXJkVHlwZSwKICAgICAgICAgV2Vi
VVJMTmFtZVBib2FyZFR5cGUsCiAgICAgICAgIE5TU3RyaW5nUGJvYXJkVHlwZSwKLSAgICAgICAg
bmlsXSkpOwotICAgIHJldHVybiB0eXBlcy5nZXQoKTsKKyAgICAgICAgbmlsXSk7CisgICAgcmV0
dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQogCiBzdGF0aWMgaW5saW5lIE5TQXJyYXkgKl9jcmVh
dGVXcml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpCkBAIC03OSw4ICs4MCw4IEBA
IHN0YXRpYyBpbmxpbmUgTlNBcnJheSAqX2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhv
dXRBcmNoaXZlKCkKIAogc3RhdGljIE5TQXJyYXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRo
b3V0QXJjaGl2ZSAodm9pZCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
UmV0YWluUHRyPE5TQXJyYXk+LCB0eXBlcywgKF9jcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2VX
aXRob3V0QXJjaGl2ZSgpKSk7Ci0gICAgcmV0dXJuIHR5cGVzLmdldCgpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzKF9jcmVhdGVXcml0YWJsZVR5
cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpKTsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0
KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgTlNBcnJheSAqX2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJ
bWFnZVdpdGhBcmNoaXZlKCkKQEAgLTkzLDggKzk0LDggQEAgc3RhdGljIGlubGluZSBOU0FycmF5
ICpfY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aEFyY2hpdmUoKQogCiBzdGF0aWMgTlNB
cnJheSAqX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlICh2b2lkKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChSZXRhaW5QdHI8TlNBcnJheT4sIHR5cGVzLCAo
X2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlKCkpKTsKLSAgICByZXR1cm4g
dHlwZXMuZ2V0KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5
Pj4gdHlwZXMoX2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlKCkpOworICAg
IHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNBcnJheSAqKV93ZWJfd3JpdGFi
bGVUeXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooQk9PTCloYXNBcmNoaXZlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RN
YW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlci5tbQppbmRleCA0MGVjYjIwLi5kNDllZjZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dE1hbmFnZXIubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgPG1hY2gvbWFjaF9wb3J0Lmg+
CiAjaW1wb3J0IDxzcGF3bi5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9y
dCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC01MSw4ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyJiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5h
Z2VyOjpzaW5nbGV0b24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChO
ZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLCBwbHVnaW5Ib3N0TWFuYWdlciwgKCkpOwotICAgIAor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyPiBwbHVn
aW5Ib3N0TWFuYWdlcjsKICAgICByZXR1cm4gcGx1Z2luSG9zdE1hbmFnZXI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dFByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0UHJveHkubW0KaW5kZXggMzQ0MWU0Zi4uNGEyZTI1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJv
eHkubW0KQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSWRlbnRpZmllclJlcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250
cm9sbGVyLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogZXh0ZXJuICJDIiB7
CiAjaW1wb3J0ICJXZWJLaXRQbHVnaW5Ib3N0LmgiCkBAIC04NCw4ICs4NSw3IEBAIHByaXZhdGU6
CiB0eXBlZGVmIEhhc2hNYXA8bWFjaF9wb3J0X3QsIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5Kj4g
UGx1Z2luUHJveHlNYXA7CiBzdGF0aWMgUGx1Z2luUHJveHlNYXAmIHBsdWdpblByb3h5TWFwKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUGx1Z2luUHJveHlNYXAsIHBs
dWdpblByb3h5TWFwLCAoKSk7Ci0gICAgCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBsdWdp
blByb3h5TWFwPiBwbHVnaW5Qcm94eU1hcDsKICAgICByZXR1cm4gcGx1Z2luUHJveHlNYXA7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA3NmM0NjU1Li4xNGE4NTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC02NSw2ICs2NSw3IEBACiAjaW1wb3J0
IDxtYWNoL21hY2guaD4KICNpbXBvcnQgPHV0aWxpdHk+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRl
ZExlYWtDb3VudGVyLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogZXh0ZXJuICJDIiB7CkBAIC0xNjYzLDcgKzE2NjQsNyBA
QCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cHJpdmF0ZUJyb3dzaW5nTW9kZURp
ZENoYW5nZShib29sIGlzUHJpdmF0ZUJybwogCiBzdGF0aWMgU3RyaW5nJiBnbG9iYWxFeGNlcHRp
b25TdHJpbmcoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGV4Y2VwdGlvblN0cmluZywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IGV4Y2VwdGlvblN0cmluZzsKICAgICByZXR1cm4gZXhjZXB0aW9uU3RyaW5nOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRl
eCA3NTFiMTZhLi45Y2QwZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPHJ1bnRp
bWUvRXJyb3IuaD4KICNpbXBvcnQgPHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbXBv
cnQgPHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBleHRlcm4gIkMiIHsKICNpbXBvcnQgIldlYktpdFBsdWdpbkhvc3QuaCIKQEAg
LTY1LDggKzY2LDggQEAgRmllbGQqIFByb3h5Q2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb24KIAogc3RhdGljIFByb3h5Q2xh
c3MqIHByb3h5Q2xhc3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChQ
cm94eUNsYXNzLCBwcm94eUNsYXNzLCAoKSk7Ci0gICAgcmV0dXJuICZwcm94eUNsYXNzOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQcm94eUNsYXNzPiBwcm94eUNsYXNzOworICAgIHJldHVy
biAmcHJveHlDbGFzcy5nZXQoKTsKIH0KICAgICAKIGNsYXNzIFByb3h5RmllbGQgOiBwdWJsaWMg
SlNDOjpCaW5kaW5nczo6RmllbGQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggOTJmODk5MC4uMmZjYmQ5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3Ry
ZWFtLm1tCkBAIC01NCw2ICs1NCw3IEBACiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2Uu
aD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgor
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODMsNyArODQsNyBAQCBwcml2YXRl
OgogdHlwZWRlZiBIYXNoTWFwPE5QU3RyZWFtKiwgTlBQPiBTdHJlYW1NYXA7CiBzdGF0aWMgU3Ry
ZWFtTWFwJiBzdHJlYW1zKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyZWFtTWFwLCBzdGF0aWNTdHJlYW1zLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmVhbU1hcD4gc3RhdGljU3RyZWFtczsKICAgICByZXR1cm4gc3RhdGljU3RyZWFtczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFn
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQpp
bmRleCAzZjc4N2MxLi45OGM0MjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdl
L1dlYkRhdGFiYXNlTWFuYWdlci5tbQpAQCAtMzQsNiArMzQsNyBAQAogCiAjaW1wb3J0IDxXZWJD
b3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAj
aW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJJbnRlcm5hbC5oIgpAQCAtMjI4LDcgKzIyOSw3IEBA
IHN0YXRpYyBib29sIGlzRmlsZUhpZGRlbihOU1N0cmluZyAqZmlsZSkKIAogc3RhdGljIExvY2sm
IHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jaygpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKExvY2ssIG11dGV4LCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPExvY2s+IG11dGV4OwogICAgIHJldHVybiBtdXRleDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50
Lm1tCmluZGV4IDdkYmMzNTAuLjU0M2I0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0KQEAgLTgyLDcgKzgyLDcg
QEAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+LCBSZXRh
aW5QdHI8V2ViVXNlck1lZGlhUG9saWN5Q2gKIAogc3RhdGljIFVzZXJNZWRpYUNoZWNrTWFwJiB1
c2VyTWVkaWFDaGVja01hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFVzZXJNZWRpYUNoZWNrTWFwLCByZXF1ZXN0cywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxVc2VyTWVkaWFDaGVja01hcD4gcmVxdWVzdHM7CiAgICAgcmV0dXJuIHJlcXVlc3RzOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tCmluZGV4IDdlMGQwMzUuLjkxYmQzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC02Miw2ICs2Miw3IEBACiAj
aW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9NSFRNTElucHV0RWxlbWVudC5oPgogI2ltcG9ydCA8eWFy
ci9SZWd1bGFyRXhwcmVzc2lvbi5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0zNjMsMTUgKzM2NCwxNSBA
QCBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cEZvckxhYmVscyhOU0FycmF5ICpsYWJl
bHMpCiAgICAgLy8gdGhhdCB0aGUgYXBwIHdpbGwgdXNlIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIg
b2YgbG9jYWxlcyBpcyB1c2VkIGluIHNlYXJjaGluZy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgaW50IHJlZ0V4cENhY2hlU2l6ZSA9IDQ7CiAgICAgc3RhdGljIE5TTXV0YWJsZUFycmF5KiBy
ZWdFeHBMYWJlbHMgPSBuaWw7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFZl
Y3RvcjxSZWd1bGFyRXhwcmVzc2lvbio+LCByZWdFeHBzLCAoKSk7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFJlZ3VsYXJFeHByZXNzaW9uLCB3b3JkUmVnRXhwLCAoIlxcdyIs
IFRleHRDYXNlU2Vuc2l0aXZlKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxS
ZWd1bGFyRXhwcmVzc2lvbio+PiByZWdFeHBzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZWd1bGFyRXhwcmVzc2lvbj4gd29yZFJlZ0V4cCgiXFx3IiwgVGV4dENhc2VTZW5zaXRpdmUpOwog
CiAgICAgUmVndWxhckV4cHJlc3Npb24qIHJlc3VsdDsKICAgICBpZiAoIXJlZ0V4cExhYmVscykK
ICAgICAgICAgcmVnRXhwTGFiZWxzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTpyZWdFeHBDYWNoZVNpemVdOwogICAgIENGSW5kZXggY2FjaGVIaXQgPSBbcmVnRXhw
TGFiZWxzIGluZGV4T2ZPYmplY3Q6bGFiZWxzXTsKICAgICBpZiAoY2FjaGVIaXQgIT0gTlNOb3RG
b3VuZCkKLSAgICAgICAgcmVzdWx0ID0gcmVnRXhwcy5hdChjYWNoZUhpdCk7CisgICAgICAgIHJl
c3VsdCA9IHJlZ0V4cHMuZ2V0KCkuYXQoY2FjaGVIaXQpOwogICAgIGVsc2UgewogICAgICAgICBT
dHJpbmdCdWlsZGVyIHBhdHRlcm47CiAgICAgICAgIHBhdHRlcm4uYXBwZW5kKCcoJyk7CkBAIC0z
ODMsOCArMzg0LDggQEAgc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHBGb3JMYWJlbHMo
TlNBcnJheSAqbGFiZWxzKQogICAgICAgICAgICAgYm9vbCBzdGFydHNXaXRoV29yZENoYXIgPSBm
YWxzZTsKICAgICAgICAgICAgIGJvb2wgZW5kc1dpdGhXb3JkQ2hhciA9IGZhbHNlOwogICAgICAg
ICAgICAgaWYgKGxhYmVsLmxlbmd0aCgpICE9IDApIHsKLSAgICAgICAgICAgICAgICBzdGFydHNX
aXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0g
MDsKLSAgICAgICAgICAgICAgICBlbmRzV2l0aFdvcmRDaGFyID0gd29yZFJlZ0V4cC5tYXRjaChs
YWJlbC5zdWJzdHJpbmcobGFiZWwubGVuZ3RoKCkgLSAxLCAxKSkgPj0gMDsKKyAgICAgICAgICAg
ICAgICBzdGFydHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1
YnN0cmluZygwLCAxKSkgPj0gMDsKKyAgICAgICAgICAgICAgICBlbmRzV2l0aFdvcmRDaGFyID0g
d29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcobGFiZWwubGVuZ3RoKCkgLSAx
LCAxKSkgPj0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KGkgIT0gMCkKQEAgLTQwNywxNiArNDA4LDE2IEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiog
cmVnRXhwRm9yTGFiZWxzKE5TQXJyYXkgKmxhYmVscykKICAgICAgICAgaWYgKGNhY2hlSGl0ICE9
IE5TTm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIHJlbW92ZSBmcm9tIG9sZCBzcG90CiAgICAg
ICAgICAgICBbcmVnRXhwTGFiZWxzIHJlbW92ZU9iamVjdEF0SW5kZXg6Y2FjaGVIaXRdOwotICAg
ICAgICAgICAgcmVnRXhwcy5yZW1vdmUoY2FjaGVIaXQpOworICAgICAgICAgICAgcmVnRXhwcy5n
ZXQoKS5yZW1vdmUoY2FjaGVIaXQpOwogICAgICAgICB9CiAgICAgICAgIC8vIGFkZCB0byBzdGFy
dAogICAgICAgICBbcmVnRXhwTGFiZWxzIGluc2VydE9iamVjdDpsYWJlbHMgYXRJbmRleDowXTsK
LSAgICAgICAgcmVnRXhwcy5pbnNlcnQoMCwgcmVzdWx0KTsKKyAgICAgICAgcmVnRXhwcy5nZXQo
KS5pbnNlcnQoMCwgcmVzdWx0KTsKICAgICAgICAgLy8gdHJpbSBpZiB0b28gYmlnCiAgICAgICAg
IGlmIChbcmVnRXhwTGFiZWxzIGNvdW50XSA+IHJlZ0V4cENhY2hlU2l6ZSkgewogICAgICAgICAg
ICAgW3JlZ0V4cExhYmVscyByZW1vdmVPYmplY3RBdEluZGV4OnJlZ0V4cENhY2hlU2l6ZV07Ci0g
ICAgICAgICAgICBSZWd1bGFyRXhwcmVzc2lvbiogbGFzdCA9IHJlZ0V4cHMubGFzdCgpOwotICAg
ICAgICAgICAgcmVnRXhwcy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICBSZWd1bGFyRXhwcmVz
c2lvbiogbGFzdCA9IHJlZ0V4cHMuZ2V0KCkubGFzdCgpOworICAgICAgICAgICAgcmVnRXhwcy5n
ZXQoKS5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICBkZWxldGUgbGFzdDsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAyODRkOTRhLi5lNWQy
MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02ODA2LDkgKzY4MDYs
OSBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgagogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIGVsc2UgaWYgKG9iamVjdC0+aW5oZXJpdHMoSlNBcnJheTo6aW5mbygpKSkgewotICAg
ICAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8SlNPYmplY3Qq
PiwgdmlzaXRlZEVsZW1zLCAoKSk7Ci0gICAgICAgICAgICBpZiAoIXZpc2l0ZWRFbGVtcy5jb250
YWlucyhvYmplY3QpKSB7Ci0gICAgICAgICAgICAgICAgdmlzaXRlZEVsZW1zLmFkZChvYmplY3Qp
OworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8SlNPYmplY3QqPj4g
dmlzaXRlZEVsZW1zOworICAgICAgICAgICAgaWYgKCF2aXNpdGVkRWxlbXMuZ2V0KCkuY29udGFp
bnMob2JqZWN0KSkgeworICAgICAgICAgICAgICAgIHZpc2l0ZWRFbGVtcy5nZXQoKS5hZGQob2Jq
ZWN0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9
IHN0YXRpY19jYXN0PEpTQXJyYXkqPihvYmplY3QpOwogICAgICAgICAgICAgICAgIGFlRGVzYyA9
IFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGxpc3REZXNjcmlwdG9yXTsKQEAgLTY4MTYsNyArNjgx
Niw3IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqCiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bUl0ZW1zOyArK2kpCiAgICAgICAgICAgICAgICAgICAgIFthZURl
c2MgaW5zZXJ0RGVzY3JpcHRvcjphZURlc2NGcm9tSlNWYWx1ZShleGVjLCBhcnJheS0+Z2V0KGV4
ZWMsIGkpKSBhdEluZGV4OjBdOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHZp
c2l0ZWRFbGVtcy5yZW1vdmUob2JqZWN0KTsKKyAgICAgICAgICAgICAgICB2aXNpdGVkRWxlbXMu
Z2V0KCkucmVtb3ZlKG9iamVjdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFlRGVzYzsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268634</attachid>
            <date>2016-01-09 17:18:55 -0800</date>
            <delta_ts>2016-01-10 04:38:52 -0800</delta_ts>
            <desc>Patch 2 (convert some more code)</desc>
            <filename>contd1-152902-2.diff</filename>
            <type>text/plain</type>
            <size>21505</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZDIzY2Y3Li5hODRjYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkg
QEAKIDIwMTYtMDEtMDkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTCBjb250J2QKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IHNv
bWUgbW9yZSBvZiB0aGUgcmVtYWluaW5nIGNsaWVudHMgdG8gdXNlIE5ldmVyRGVzdHJveWVkLgor
CisgICAgICAgICogaHRtbC90cmFjay9WVFRSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VlRUUmVnaW9uOjp0ZXh0VHJhY2tDdWVDb250YWluZXJTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAg
IChXZWJDb3JlOjpWVFRSZWdpb246OnRleHRUcmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkKToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmg6CisKKzIw
MTYtMDEtMDkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCiAgICAgICAgIFVz
ZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TAogICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyOTAyPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKaW5kZXggOTQxMWY3NS4uY2Y5NGIwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMzMzLDE2ICszMzMsMTQgQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBWVFRSZWdpb246OnRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9sbGlu
Z0NsYXNzKCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBWVFRSZWdpb246OnRleHRUcmFja0N1ZUNv
bnRhaW5lclNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclBzZXVkb0lk
LAotICAgICAgICAoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24tY29udGFpbmVyIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHRyYWNrUmVnaW9uQ3VlQ29udGFpbmVyUHNldWRv
SWQoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24tY29udGFpbmVyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICByZXR1cm4gdHJhY2tSZWdpb25DdWVD
b250YWluZXJQc2V1ZG9JZDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBWVFRSZWdpb246OnRl
eHRUcmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja1JlZ2lvblNoYWRvd1BzZXVkb0lk
LAotICAgICAgICAoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gdHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC1tZWRp
YS10ZXh0LXRyYWNrLXJlZ2lvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogCiAgICAgcmV0dXJuIHRyYWNrUmVnaW9uU2hhZG93UHNldWRvSWQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9z
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFj
cm9zLmgKaW5kZXggNTkzMzE0MC4uNzc3MDVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaApAQCAtODks
MTQgKzg5LDE0IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yIyNP
d25lclR5cGUoKSBcCiAvLyBQcm9wZXJ0eSBkZWZpbml0aW9uIGhlbHBlcnMgKHVzZWQgaW4gU1ZH
Ki5jcHAgZmlsZXMpCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFBy
b3BlcnR5VHlwZUVudW0sIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJ
ZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBjb25zdCBTVkdQcm9w
ZXJ0eUluZm8qIE93bmVyVHlwZTo6TG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJbmZvKCkgeyBcCi0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFNWR1Byb3BlcnR5SW5mbywg
c19wcm9wZXJ0eUluZm8sIFwKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU1ZHUHJv
cGVydHlJbmZvPiBzX3Byb3BlcnR5SW5mbyA9IFNWR1Byb3BlcnR5SW5mbyBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICAoQW5pbWF0ZWRQcm9wZXJ0eVR5cGVFbnVtLCBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHJvcGVydHlJc1JlYWRXcml0ZSwgXAogICAgICAgICAgICAgICAgICAgICAg
ICAgIERPTUF0dHJpYnV0ZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0RPTUF0dHJp
YnV0ZUlkZW50aWZpZXIsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAmT3duZXJUeXBlOjpz
eW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICZP
d25lclR5cGU6Omxvb2t1cE9yQ3JlYXRlIyNVcHBlclByb3BlcnR5IyNXcmFwcGVyKSk7IFwKLSAg
ICByZXR1cm4gJnNfcHJvcGVydHlJbmZvOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJk93
bmVyVHlwZTo6bG9va3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVydHkjI1dyYXBwZXIpOyBcCisgICAg
cmV0dXJuICZzX3Byb3BlcnR5SW5mby5nZXQoKTsgXAogfSAKIAogLy8gUHJvcGVydHkgZGVjbGFy
YXRpb24gaGVscGVycyAodXNlZCBpbiBTVkcqLmggZmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFjNDYzMWQu
LmY5ZDliMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDEtMDkgIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBp
bnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTCBjb250J2QKKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphY3RpdmVTdG9yYWdlVGhyZWFkcyk6CisKIDIwMTUtMTItMzEgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgV1RGOjptb3ZlIHdp
dGggV1RGTW92ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJl
YWQuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmluZGV4IDUw
NWMxZGYuLjhjYThiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAK
QEAgLTI3LDEzICsyNywxNCBAQAogCiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8U3RvcmFnZVRocmVh
ZCo+JiBhY3RpdmVTdG9yYWdlVGhyZWFkcygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdG9yYWdlVGhy
ZWFkKj4sIHRocmVhZHMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxT
dG9yYWdlVGhyZWFkKj4+IHRocmVhZHM7CiAgICAgcmV0dXJuIHRocmVhZHM7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0No
YW5nZUxvZwppbmRleCBhMTJjOTVhLi4xYjBjMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTYtMDEtMDkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTCBjb250J2QKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1Mjkw
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOgorICAgICAgICAoV2ViRml4
ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jayk6CisKIDIwMTUtMTItMzEgIEFuZHkgRXN0ZXMgIDxh
ZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgV1RGOjptb3ZlIHdpdGggV1RGTW92
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQ
b3NpdGlvbkNvbnRlbnQubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aXhlZFBvc2l0aW9uQ29udGVudC5tbQppbmRleCAyMWU1ZmEyLi41OTZlOTM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0
aW9uQ29udGVudC5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
VGhyZWFkUnVuLmg+CiAKICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTUwLDcgKzUxLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3RhdGljIExvY2smIFdlYkZpeGVkUG9zaXRpb25D
b250ZW50RGF0YUxvY2soKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChM
b2NrLCBtdXRleCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NrPiBtdXRleDsK
ICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0NjU5YjQ5Li40YjI1
ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTYtMDEtMDkgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3ll
ZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTCBjb250J2QKKyAgICAg
ICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IHNvbWUgbW9yZSBvZiB0aGUgcmVtYWlu
aW5nIGNsaWVudHMgdG8gdXNlIE5ldmVyRGVzdHJveWVkLgorCisgICAgICAgICogSGlzdG9yeS9X
ZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgIChiYWNrRm9yd2FyZExpc3RzKToKKyAgICAg
ICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoaGlzdG9yeUl0ZW1XcmFw
cGVycyk6CisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW06CisgICAgICAg
ICgrW05TUGFzdGVib2FyZCBfd2ViX3dyaXRhYmxlVHlwZXNGb3JVUkxdKToKKyAgICAgICAgKF93
cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSk6CisgICAgICAgIChfd3JpdGFibGVU
eXBlc0ZvckltYWdlV2l0aEFyY2hpdmUpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
SG9zdE1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5Ib3N0UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OnBsdWdpblByb3h5TWFwKToK
KyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06
CisgICAgICAgIChXZWJLaXQ6Omdsb2JhbEV4Y2VwdGlvblN0cmluZyk6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6cHJveHlDbGFz
cyk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbToKKyAgICAg
ICAgKHN0cmVhbXMpOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tOgor
ICAgICAgICAodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW06CisgICAgICAgICh1c2Vy
TWVkaWFDaGVja01hcCk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW06CisgICAgICAgIChyZWdFeHBGb3JMYWJlbHMpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbToKKyAgICAgICAgKGFlRGVzY0Zyb21KU1ZhbHVlKToKKwogMjAxNi0wMS0wNyAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDYW4ndCBwbGF5IGlu
bGluZSB2aWRlbyBpbiBhIHN0b2NrIFdLMSBXZWJWaWV3IG9uIE1hYwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQppbmRleCA3OWZkYTM4Li5lMzVh
YTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJk
TGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlz
dC5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KQEAgLTYwLDcgKzYxLDcgQEAgdHlwZWRlZiBIYXNoTWFwPEJhY2tGb3J3YXJkTGlzdCos
IFdlYkJhY2tGb3J3YXJkTGlzdCo+IEJhY2tGb3J3YXJkTGlzdE1hcDsKIC8vIHdpdGggYSBwb2lu
dGVyIHRvIGEgV2ViQmFja0ZvcndhcmRMaXN0IGluIGl0Lgogc3RhdGljIEJhY2tGb3J3YXJkTGlz
dE1hcCYgYmFja0ZvcndhcmRMaXN0cygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKEJhY2tGb3J3YXJkTGlzdE1hcCwgc3RhdGljQmFja0ZvcndhcmRMaXN0cywgKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCYWNrRm9yd2FyZExpc3RNYXA+IHN0YXRpY0JhY2tG
b3J3YXJkTGlzdHM7CiAgICAgcmV0dXJuIHN0YXRpY0JhY2tGb3J3YXJkTGlzdHM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4IGMyNmY5MzQu
LmY5YjdmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bQpAQCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQu
aD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3Au
aD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtMTAyLDcgKzEwMyw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViQ29yZUhpc3RvcnlJ
dGVtKiBjb3JlKFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogaXRlbVByaXZhdGUpCiAKIHN0YXRpYyBI
aXN0b3J5SXRlbU1hcCYgaGlzdG9yeUl0ZW1XcmFwcGVycygpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKEhpc3RvcnlJdGVtTWFwLCBoaXN0b3J5SXRlbVdyYXBwZXJzLCAo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhpc3RvcnlJdGVtTWFwPiBoaXN0b3J5SXRl
bVdyYXBwZXJzOwogICAgIHJldHVybiBoaXN0b3J5SXRlbVdyYXBwZXJzOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4IDdlOGQ3
NGMuLjc3ZDE0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0
ZWJvYXJkRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJv
YXJkRXh0cmFzLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9N
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTYw
LDE0ICs2MSwxNCBAQCBOU1N0cmluZyAqV2ViVVJMTmFtZVBib2FyZFR5cGUgPSBAInB1YmxpYy51
cmwtbmFtZSI7CiAKICsgKE5TQXJyYXkgKilfd2ViX3dyaXRhYmxlVHlwZXNGb3JVUkwKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPE5TQXJyYXk+LCB0eXBl
cywgKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgorICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzKFtbTlNBcnJheSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzOgogICAgICAgICBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsCiAgICAgICAg
IE5TVVJMUGJvYXJkVHlwZSwKICAgICAgICAgV2ViVVJMUGJvYXJkVHlwZSwKICAgICAgICAgV2Vi
VVJMTmFtZVBib2FyZFR5cGUsCiAgICAgICAgIE5TU3RyaW5nUGJvYXJkVHlwZSwKLSAgICAgICAg
bmlsXSkpOwotICAgIHJldHVybiB0eXBlcy5nZXQoKTsKKyAgICAgICAgbmlsXSk7CisgICAgcmV0
dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQogCiBzdGF0aWMgaW5saW5lIE5TQXJyYXkgKl9jcmVh
dGVXcml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpCkBAIC03OSw4ICs4MCw4IEBA
IHN0YXRpYyBpbmxpbmUgTlNBcnJheSAqX2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhv
dXRBcmNoaXZlKCkKIAogc3RhdGljIE5TQXJyYXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRo
b3V0QXJjaGl2ZSAodm9pZCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
UmV0YWluUHRyPE5TQXJyYXk+LCB0eXBlcywgKF9jcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2VX
aXRob3V0QXJjaGl2ZSgpKSk7Ci0gICAgcmV0dXJuIHR5cGVzLmdldCgpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzKF9jcmVhdGVXcml0YWJsZVR5
cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpKTsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0
KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgTlNBcnJheSAqX2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJ
bWFnZVdpdGhBcmNoaXZlKCkKQEAgLTkzLDggKzk0LDggQEAgc3RhdGljIGlubGluZSBOU0FycmF5
ICpfY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aEFyY2hpdmUoKQogCiBzdGF0aWMgTlNB
cnJheSAqX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlICh2b2lkKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChSZXRhaW5QdHI8TlNBcnJheT4sIHR5cGVzLCAo
X2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlKCkpKTsKLSAgICByZXR1cm4g
dHlwZXMuZ2V0KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5
Pj4gdHlwZXMoX2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlKCkpOworICAg
IHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNBcnJheSAqKV93ZWJfd3JpdGFi
bGVUeXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooQk9PTCloYXNBcmNoaXZlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLmgKaW5kZXggZmNiMjIwYS4uZDg0OTQ5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1h
bmFnZXIuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2lt
cG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTUzLDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlV2lu
ZG93KCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPE5ldHNj
YXBlUGx1Z2luSG9zdE1hbmFnZXI+OwogICAgIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KiBob3N0
Rm9yUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5cGVfdCBwbHVnaW5BcmNo
aXRlY3R1cmUsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllcik7CiAKICAgICBOZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCA0MGVj
YjIwLi5kNDllZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgPG1hY2gvbWFjaF9wb3J0Lmg+CiAjaW1wb3J0IDxzcGF3bi5oPgogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBA
IC01MSw4ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBOZXRzY2FwZVBsdWdpbkhvc3RN
YW5hZ2VyJiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpzaW5nbGV0b24oKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLCBw
bHVnaW5Ib3N0TWFuYWdlciwgKCkpOwotICAgIAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxO
ZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyPiBwbHVnaW5Ib3N0TWFuYWdlcjsKICAgICByZXR1cm4g
cGx1Z2luSG9zdE1hbmFnZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KaW5kZXggMzQ0MWU0
Zi4uNGEyZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KQEAgLTQwLDYgKzQwLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSWRlbnRpZmllclJlcC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogZXh0ZXJuICJDIiB7CiAjaW1wb3J0ICJXZWJLaXRQbHVnaW5Ib3N0
LmgiCkBAIC04NCw4ICs4NSw3IEBAIHByaXZhdGU6CiB0eXBlZGVmIEhhc2hNYXA8bWFjaF9wb3J0
X3QsIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5Kj4gUGx1Z2luUHJveHlNYXA7CiBzdGF0aWMgUGx1
Z2luUHJveHlNYXAmIHBsdWdpblByb3h5TWFwKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUGx1Z2luUHJveHlNYXAsIHBsdWdpblByb3h5TWFwLCAoKSk7Ci0gICAgCisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBsdWdpblByb3h5TWFwPiBwbHVnaW5Qcm94eU1hcDsK
ICAgICByZXR1cm4gcGx1Z2luUHJveHlNYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQppbmRleCA3NmM0NjU1Li5mZThjMTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCkBAIC02NCw2ICs2NCw3IEBACiAjaW1wb3J0IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgog
I2ltcG9ydCA8bWFjaC9tYWNoLmg+CiAjaW1wb3J0IDx1dGlsaXR5PgorI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTE2NjMsNyArMTY2NCw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpwcml2YXRlQnJvd3NpbmdNb2RlRGlkQ2hhbmdl
KGJvb2wgaXNQcml2YXRlQnJvCiAKIHN0YXRpYyBTdHJpbmcmIGdsb2JhbEV4Y2VwdGlvblN0cmlu
ZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZXhjZXB0
aW9uU3RyaW5nLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZXhjZXB0
aW9uU3RyaW5nOwogICAgIHJldHVybiBleGNlcHRpb25TdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDc1MWIx
NmEuLjljZDBmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
UHJveHlJbnN0YW5jZS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8cnVudGltZS9FcnJv
ci5oPgogI2ltcG9ydCA8cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2ltcG9ydCA8cnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKIGV4dGVybiAiQyIgewogI2ltcG9ydCAiV2ViS2l0UGx1Z2luSG9zdC5oIgpAQCAtNjUsOCAr
NjYsOCBAQCBGaWVsZCogUHJveHlDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbgogCiBzdGF0aWMgUHJveHlDbGFzcyogcHJv
eHlDbGFzcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFByb3h5Q2xh
c3MsIHByb3h5Q2xhc3MsICgpKTsKLSAgICByZXR1cm4gJnByb3h5Q2xhc3M7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFByb3h5Q2xhc3M+IHByb3h5Q2xhc3M7CisgICAgcmV0dXJuICZwcm94
eUNsYXNzLmdldCgpOwogfQogICAgIAogY2xhc3MgUHJveHlGaWVsZCA6IHB1YmxpYyBKU0M6OkJp
bmRpbmdzOjpGaWVsZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCA5MmY4OTkwLi4yZmNiZDljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0K
QEAgLTU0LDYgKzU0LDcgQEAKICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2lt
cG9ydCA8cnVudGltZS9KU0xvY2suaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04Myw3ICs4NCw3IEBAIHByaXZhdGU6CiB0eXBl
ZGVmIEhhc2hNYXA8TlBTdHJlYW0qLCBOUFA+IFN0cmVhbU1hcDsKIHN0YXRpYyBTdHJlYW1NYXAm
IHN0cmVhbXMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJlYW1N
YXAsIHN0YXRpY1N0cmVhbXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyZWFt
TWFwPiBzdGF0aWNTdHJlYW1zOwogICAgIHJldHVybiBzdGF0aWNTdHJlYW1zOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCmluZGV4IDNm
Nzg3YzEuLjk4YzQyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2Vi
RGF0YWJhc2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VNYW5hZ2VyLm1tCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbXBvcnQgPFdlYkNvcmUvRGF0
YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW1w
b3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQg
IldlYkRhdGFiYXNlTWFuYWdlckludGVybmFsLmgiCkBAIC0yMjgsNyArMjI5LDcgQEAgc3RhdGlj
IGJvb2wgaXNGaWxlSGlkZGVuKE5TU3RyaW5nICpmaWxlKQogCiBzdGF0aWMgTG9jayYgdHJhbnNh
Y3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoTG9jaywgbXV0ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8TG9jaz4gbXV0ZXg7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0KaW5k
ZXggN2RiYzM1MC4uNTQzYjQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQpAQCAtODIsNyArODIsNyBAQCB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4sIFJldGFpblB0cjxX
ZWJVc2VyTWVkaWFQb2xpY3lDaAogCiBzdGF0aWMgVXNlck1lZGlhQ2hlY2tNYXAmIHVzZXJNZWRp
YUNoZWNrTWFwKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVXNlck1l
ZGlhQ2hlY2tNYXAsIHJlcXVlc3RzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVz
ZXJNZWRpYUNoZWNrTWFwPiByZXF1ZXN0czsKICAgICByZXR1cm4gcmVxdWVzdHM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0K
aW5kZXggN2UwZDAzNS4uOTFiZDNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTYyLDYgKzYyLDcgQEAKICNpbXBvcnQg
PFdlYktpdExlZ2FjeS9ET01IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW1wb3J0IDx5YXJyL1JlZ3Vs
YXJFeHByZXNzaW9uLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTM2MywxNSArMzY0LDE1IEBAIHN0YXRp
YyBSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwRm9yTGFiZWxzKE5TQXJyYXkgKmxhYmVscykKICAg
ICAvLyB0aGF0IHRoZSBhcHAgd2lsbCB1c2UgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBsb2Nh
bGVzIGlzIHVzZWQgaW4gc2VhcmNoaW5nLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQg
cmVnRXhwQ2FjaGVTaXplID0gNDsKICAgICBzdGF0aWMgTlNNdXRhYmxlQXJyYXkqIHJlZ0V4cExh
YmVscyA9IG5pbDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFJl
Z3VsYXJFeHByZXNzaW9uKj4sIHJlZ0V4cHMsICgpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoUmVndWxhckV4cHJlc3Npb24sIHdvcmRSZWdFeHAsICgiXFx3IiwgVGV4dENh
c2VTZW5zaXRpdmUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFJlZ3VsYXJF
eHByZXNzaW9uKj4+IHJlZ0V4cHM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ3VsYXJF
eHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHciLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7CiAKICAgICBS
ZWd1bGFyRXhwcmVzc2lvbiogcmVzdWx0OwogICAgIGlmICghcmVnRXhwTGFiZWxzKQogICAgICAg
ICByZWdFeHBMYWJlbHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OnJlZ0V4cENhY2hlU2l6ZV07CiAgICAgQ0ZJbmRleCBjYWNoZUhpdCA9IFtyZWdFeHBMYWJlbHMg
aW5kZXhPZk9iamVjdDpsYWJlbHNdOwogICAgIGlmIChjYWNoZUhpdCAhPSBOU05vdEZvdW5kKQot
ICAgICAgICByZXN1bHQgPSByZWdFeHBzLmF0KGNhY2hlSGl0KTsKKyAgICAgICAgcmVzdWx0ID0g
cmVnRXhwcy5nZXQoKS5hdChjYWNoZUhpdCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1
aWxkZXIgcGF0dGVybjsKICAgICAgICAgcGF0dGVybi5hcHBlbmQoJygnKTsKQEAgLTM4Myw4ICsz
ODQsOCBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cEZvckxhYmVscyhOU0FycmF5
ICpsYWJlbHMpCiAgICAgICAgICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IGZhbHNlOwog
ICAgICAgICAgICAgYm9vbCBlbmRzV2l0aFdvcmRDaGFyID0gZmFsc2U7CiAgICAgICAgICAgICBp
ZiAobGFiZWwubGVuZ3RoKCkgIT0gMCkgewotICAgICAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3Jk
Q2hhciA9IHdvcmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAwOwotICAg
ICAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLm1hdGNoKGxhYmVsLnN1
YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOworICAgICAgICAgICAgICAgIHN0
YXJ0c1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3RyaW5n
KDAsIDEpKSA+PSAwOworICAgICAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXIgPSB3b3JkUmVn
RXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+
PSAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaSAhPSAw
KQpAQCAtNDA3LDE2ICs0MDgsMTYgQEAgc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHBG
b3JMYWJlbHMoTlNBcnJheSAqbGFiZWxzKQogICAgICAgICBpZiAoY2FjaGVIaXQgIT0gTlNOb3RG
b3VuZCkgewogICAgICAgICAgICAgLy8gcmVtb3ZlIGZyb20gb2xkIHNwb3QKICAgICAgICAgICAg
IFtyZWdFeHBMYWJlbHMgcmVtb3ZlT2JqZWN0QXRJbmRleDpjYWNoZUhpdF07Ci0gICAgICAgICAg
ICByZWdFeHBzLnJlbW92ZShjYWNoZUhpdCk7CisgICAgICAgICAgICByZWdFeHBzLmdldCgpLnJl
bW92ZShjYWNoZUhpdCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gYWRkIHRvIHN0YXJ0CiAgICAg
ICAgIFtyZWdFeHBMYWJlbHMgaW5zZXJ0T2JqZWN0OmxhYmVscyBhdEluZGV4OjBdOwotICAgICAg
ICByZWdFeHBzLmluc2VydCgwLCByZXN1bHQpOworICAgICAgICByZWdFeHBzLmdldCgpLmluc2Vy
dCgwLCByZXN1bHQpOwogICAgICAgICAvLyB0cmltIGlmIHRvbyBiaWcKICAgICAgICAgaWYgKFty
ZWdFeHBMYWJlbHMgY291bnRdID4gcmVnRXhwQ2FjaGVTaXplKSB7CiAgICAgICAgICAgICBbcmVn
RXhwTGFiZWxzIHJlbW92ZU9iamVjdEF0SW5kZXg6cmVnRXhwQ2FjaGVTaXplXTsKLSAgICAgICAg
ICAgIFJlZ3VsYXJFeHByZXNzaW9uKiBsYXN0ID0gcmVnRXhwcy5sYXN0KCk7Ci0gICAgICAgICAg
ICByZWdFeHBzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIFJlZ3VsYXJFeHByZXNzaW9uKiBs
YXN0ID0gcmVnRXhwcy5nZXQoKS5sYXN0KCk7CisgICAgICAgICAgICByZWdFeHBzLmdldCgpLnJl
bW92ZUxhc3QoKTsKICAgICAgICAgICAgIGRlbGV0ZSBsYXN0OwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDI4NGQ5NGEuLmU1ZDIxNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTY4MDYsOSArNjgwNiw5IEBAIHN0
YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6SlNWYWx1ZSBqCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZSBpZiAob2JqZWN0LT5pbmhlcml0cyhKU0FycmF5OjppbmZvKCkpKSB7Ci0gICAgICAgICAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxKU09iamVjdCo+LCB2aXNp
dGVkRWxlbXMsICgpKTsKLSAgICAgICAgICAgIGlmICghdmlzaXRlZEVsZW1zLmNvbnRhaW5zKG9i
amVjdCkpIHsKLSAgICAgICAgICAgICAgICB2aXNpdGVkRWxlbXMuYWRkKG9iamVjdCk7CisgICAg
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxKU09iamVjdCo+PiB2aXNpdGVk
RWxlbXM7CisgICAgICAgICAgICBpZiAoIXZpc2l0ZWRFbGVtcy5nZXQoKS5jb250YWlucyhvYmpl
Y3QpKSB7CisgICAgICAgICAgICAgICAgdmlzaXRlZEVsZW1zLmdldCgpLmFkZChvYmplY3QpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gc3RhdGlj
X2Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAgICAgICAgICAgICAgICAgYWVEZXNjID0gW05TQXBw
bGVFdmVudERlc2NyaXB0b3IgbGlzdERlc2NyaXB0b3JdOwpAQCAtNjgxNiw3ICs2ODE2LDcgQEAg
c3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtSXRlbXM7ICsraSkKICAgICAgICAgICAgICAgICAgICAgW2FlRGVzYyBpbnNl
cnREZXNjcmlwdG9yOmFlRGVzY0Zyb21KU1ZhbHVlKGV4ZWMsIGFycmF5LT5nZXQoZXhlYywgaSkp
IGF0SW5kZXg6MF07CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgdmlzaXRlZEVs
ZW1zLnJlbW92ZShvYmplY3QpOworICAgICAgICAgICAgICAgIHZpc2l0ZWRFbGVtcy5nZXQoKS5y
ZW1vdmUob2JqZWN0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gYWVEZXNjOwogICAgICAgICAg
ICAgfQogICAgICAgICB9Cg==
</data>
<flag name="review"
          id="293611"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268644</attachid>
            <date>2016-01-10 04:38:52 -0800</date>
            <delta_ts>2016-01-10 05:27:58 -0800</delta_ts>
            <desc>Patch 2 for landing</desc>
            <filename>land-152902.diff</filename>
            <type>text/plain</type>
            <size>21169</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZDIzY2Y3Li40NTYxZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkg
QEAKIDIwMTYtMDEtMDkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTCBjb250J2QKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjkwMj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisgICAgICAgIENvbnZlcnQgc29tZSBt
b3JlIG9mIHRoZSByZW1haW5pbmcgY2xpZW50cyB0byB1c2UgTmV2ZXJEZXN0cm95ZWQuCisKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRS
ZWdpb246OnRleHRUcmFja0N1ZUNvbnRhaW5lclNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdl
YkNvcmU6OlZUVFJlZ2lvbjo6dGV4dFRyYWNrUmVnaW9uU2hhZG93UHNldWRvSWQpOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaDoKKworMjAxNi0w
MS0wOSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKICAgICAgICAgVXNlIE5l
dmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMCiAg
ICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTI5MDI+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVlRUUmVnaW9uLmNwcAppbmRleCA5NDExZjc1Li5jZjk0YjAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCkBAIC0zMzMsMTYgKzMzMywxNCBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIFZUVFJlZ2lvbjo6dGV4dFRyYWNrQ3VlQ29udGFpbmVyU2Nyb2xsaW5nQ2xh
c3MoKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZUVFJlZ2lvbjo6dGV4dFRyYWNrQ3VlQ29udGFp
bmVyU2hhZG93UHNldWRvSWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHRyYWNrUmVnaW9uQ3VlQ29udGFpbmVyUHNldWRvSWQsCi0g
ICAgICAgICgiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbi1jb250YWluZXIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHJhY2tSZWdpb25DdWVDb250YWluZXJQc2V1ZG9JZCgi
LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbi1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIHJldHVybiB0cmFja1JlZ2lvbkN1ZUNvbnRh
aW5lclBzZXVkb0lkOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFZUVFJlZ2lvbjo6dGV4dFRy
YWNrUmVnaW9uU2hhZG93UHNldWRvSWQoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHRyYWNrUmVnaW9uU2hhZG93UHNldWRvSWQsCi0g
ICAgICAgICgiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbiIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiB0cmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRl
eHQtdHJhY2stcmVnaW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICByZXR1cm4gdHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3Mu
aAppbmRleCA1OTMzMTQwLi43NzcwNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oCkBAIC04OSwxNCAr
ODksMTQgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3IjI093bmVy
VHlwZSgpIFwKIC8vIFByb3BlcnR5IGRlZmluaXRpb24gaGVscGVycyAodXNlZCBpbiBTVkcqLmNw
cCBmaWxlcykKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkUHJvcGVy
dHlUeXBlRW51bSwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50
aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKIGNvbnN0IFNWR1Byb3BlcnR5
SW5mbyogT3duZXJUeXBlOjpMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8oKSB7IFwKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU1ZHUHJvcGVydHlJbmZvLCBzX3By
b3BlcnR5SW5mbywgXAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTVkdQcm9wZXJ0
eUluZm8+IHNfcHJvcGVydHlJbmZvID0gU1ZHUHJvcGVydHlJbmZvIFwKICAgICAgICAgICAgICAg
ICAgICAgICAgIChBbmltYXRlZFByb3BlcnR5VHlwZUVudW0sIFwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBQcm9wZXJ0eUlzUmVhZFdyaXRlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg
RE9NQXR0cmlidXRlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRE9NQXR0cmlidXRl
SWRlbnRpZmllciwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICZPd25lclR5cGU6OnN5bmNo
cm9uaXplIyNVcHBlclByb3BlcnR5LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJk93bmVy
VHlwZTo6bG9va3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVydHkjI1dyYXBwZXIpKTsgXAotICAgIHJl
dHVybiAmc19wcm9wZXJ0eUluZm87IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmT3duZXJU
eXBlOjpsb29rdXBPckNyZWF0ZSMjVXBwZXJQcm9wZXJ0eSMjV3JhcHBlcik7IFwKKyAgICByZXR1
cm4gJnNfcHJvcGVydHlJbmZvLmdldCgpOyBcCiB9IAogCiAvLyBQcm9wZXJ0eSBkZWNsYXJhdGlv
biBoZWxwZXJzICh1c2VkIGluIFNWRyouaCBmaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWM0NjMxZC4uOWU5
ZDA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wMS0wOSAgQW5kcmVhcyBLbGlu
ZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE5ldmVyRGVzdHJveWVkIGluc3Rl
YWQgb2YgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMIGNvbnQnZAorICAgICAgICA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTUyOTAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0
ZXMuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YWN0aXZlU3RvcmFnZVRocmVhZHMpOgorCiAyMDE1LTEyLTMxICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIFdURjo6bW92ZSB3aXRoIFdURk1v
dmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAppbmRleCA1MDVjMWRmLi44
Y2E4YmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCkBAIC0yNywx
MyArMjcsMTQgQEAKIAogI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PFN0b3JhZ2VUaHJlYWQqPiYgYWN0
aXZlU3RvcmFnZVRocmVhZHMoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RvcmFnZVRocmVhZCo+LCB0
aHJlYWRzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RvcmFnZVRo
cmVhZCo+PiB0aHJlYWRzOwogICAgIHJldHVybiB0aHJlYWRzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cK
aW5kZXggYTEyYzk1YS4uNzAxMWYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDE2LTAxLTA5ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAg
ICBVc2UgTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCBvZiBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwgY29udCdkCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTI5MDI+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOgorICAgICAgICAoV2ViRml4ZWRQb3NpdGlvbkNv
bnRlbnREYXRhTG9jayk6CisKIDIwMTUtMTItMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlcGxhY2UgV1RGOjptb3ZlIHdpdGggV1RGTW92ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRl
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9u
Q29udGVudC5tbQppbmRleCAyMWU1ZmEyLi41OTZlOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5t
bQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+
CiAKICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTUwLDcgKzUxLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAogc3RhdGljIExvY2smIFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxv
Y2soKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMb2NrLCBtdXRleCwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NrPiBtdXRleDsKICAgICByZXR1cm4g
bXV0ZXg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0NjU5YjQ5Li5kMWMxMThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTYtMDEtMDkgIEFuZHJlYXMgS2xpbmcgIDxh
a2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9m
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTCBjb250J2QKKyAgICAgICAgPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE1MjkwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgor
CisgICAgICAgIENvbnZlcnQgc29tZSBtb3JlIG9mIHRoZSByZW1haW5pbmcgY2xpZW50cyB0byB1
c2UgTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlz
dC5tbToKKyAgICAgICAgKGJhY2tGb3J3YXJkTGlzdHMpOgorICAgICAgICAqIEhpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW06CisgICAgICAgIChoaXN0b3J5SXRlbVdyYXBwZXJzKToKKyAgICAgICAg
KiBNaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbToKKyAgICAgICAgKCtbTlNQYXN0ZWJvYXJk
IF93ZWJfd3JpdGFibGVUeXBlc0ZvclVSTF0pOgorICAgICAgICAoX3dyaXRhYmxlVHlwZXNGb3JJ
bWFnZVdpdGhvdXRBcmNoaXZlKToKKyAgICAgICAgKF93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRo
QXJjaGl2ZSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFu
YWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6c2lu
Z2xldG9uKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6cGx1Z2luUHJveHlNYXApOgorICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktp
dDo6Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94
eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0Ojpwcm94eUNsYXNzKToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAgICAoc3RyZWFtcyk6Cisg
ICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW06CisgICAgICAgICh0cmFuc2Fj
dGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxvY2spOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbToKKyAgICAgICAgKHVzZXJNZWRpYUNoZWNrTWFwKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKHJl
Z0V4cEZvckxhYmVscyk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
YWVEZXNjRnJvbUpTVmFsdWUpOgorCiAyMDE2LTAxLTA3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENhbid0IHBsYXkgaW5saW5lIHZpZGVvIGluIGEg
c3RvY2sgV0sxIFdlYlZpZXcgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9I
aXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3Rvcnkv
V2ViQmFja0ZvcndhcmRMaXN0Lm1tCmluZGV4IDc5ZmRhMzguLmUzNWFhNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCkBAIC00OCw2ICs0
OCw3IEBACiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0
IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtNjAsNyAr
NjEsNyBAQCB0eXBlZGVmIEhhc2hNYXA8QmFja0ZvcndhcmRMaXN0KiwgV2ViQmFja0ZvcndhcmRM
aXN0Kj4gQmFja0ZvcndhcmRMaXN0TWFwOwogLy8gd2l0aCBhIHBvaW50ZXIgdG8gYSBXZWJCYWNr
Rm9yd2FyZExpc3QgaW4gaXQuCiBzdGF0aWMgQmFja0ZvcndhcmRMaXN0TWFwJiBiYWNrRm9yd2Fy
ZExpc3RzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQmFja0Zvcndh
cmRMaXN0TWFwLCBzdGF0aWNCYWNrRm9yd2FyZExpc3RzLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEJhY2tGb3J3YXJkTGlzdE1hcD4gc3RhdGljQmFja0ZvcndhcmRMaXN0czsKICAg
ICByZXR1cm4gc3RhdGljQmFja0ZvcndhcmRMaXN0czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KaW5kZXggYzI2ZjkzNC4uZjliN2ZkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC01MSw2ICs1MSw3
IEBACiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMDIs
NyArMTAzLDcgQEAgc3RhdGljIGlubGluZSBXZWJDb3JlSGlzdG9yeUl0ZW0qIGNvcmUoV2ViSGlz
dG9yeUl0ZW1Qcml2YXRlKiBpdGVtUHJpdmF0ZSkKIAogc3RhdGljIEhpc3RvcnlJdGVtTWFwJiBo
aXN0b3J5SXRlbVdyYXBwZXJzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoSGlzdG9yeUl0ZW1NYXAsIGhpc3RvcnlJdGVtV3JhcHBlcnMsICgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGlzdG9yeUl0ZW1NYXA+IGhpc3RvcnlJdGVtV3JhcHBlcnM7CiAgICAg
cmV0dXJuIGhpc3RvcnlJdGVtV3JhcHBlcnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KaW5kZXggN2U4ZDc0Yy4uYjRkOTY2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KQEAg
LTYwLDE0ICs2MCwxNCBAQCBOU1N0cmluZyAqV2ViVVJMTmFtZVBib2FyZFR5cGUgPSBAInB1Ymxp
Yy51cmwtbmFtZSI7CiAKICsgKE5TQXJyYXkgKilfd2ViX3dyaXRhYmxlVHlwZXNGb3JVUkwKIHsK
LSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPE5TQXJyYXk+LCB0
eXBlcywgKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgorICAgIHN0YXRpYyBOU0Fy
cmF5ICp0eXBlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgogICAgICAgICBX
ZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsCiAgICAgICAgIE5TVVJMUGJvYXJkVHlwZSwKICAg
ICAgICAgV2ViVVJMUGJvYXJkVHlwZSwKICAgICAgICAgV2ViVVJMTmFtZVBib2FyZFR5cGUsCiAg
ICAgICAgIE5TU3RyaW5nUGJvYXJkVHlwZSwKLSAgICAgICAgbmlsXSkpOwotICAgIHJldHVybiB0
eXBlcy5nZXQoKTsKKyAgICAgICAgbmlsXTsKKyAgICByZXR1cm4gdHlwZXM7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgTlNBcnJheSAqX2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNo
aXZlKCkKQEAgLTc5LDggKzc5LDggQEAgc3RhdGljIGlubGluZSBOU0FycmF5ICpfY3JlYXRlV3Jp
dGFibGVUeXBlc0ZvckltYWdlV2l0aG91dEFyY2hpdmUoKQogCiBzdGF0aWMgTlNBcnJheSAqX3dy
aXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlICh2b2lkKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChSZXRhaW5QdHI8TlNBcnJheT4sIHR5cGVzLCAoX2NyZWF0
ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlKCkpKTsKLSAgICByZXR1cm4gdHlw
ZXMuZ2V0KCk7CisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gX2NyZWF0ZVdyaXRhYmxlVHlw
ZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlKCk7CisgICAgcmV0dXJuIHR5cGVzOwogfQogCiBzdGF0
aWMgaW5saW5lIE5TQXJyYXkgKl9jcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2
ZSgpCkBAIC05Myw4ICs5Myw4IEBAIHN0YXRpYyBpbmxpbmUgTlNBcnJheSAqX2NyZWF0ZVdyaXRh
YmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlKCkKIAogc3RhdGljIE5TQXJyYXkgKl93cml0YWJs
ZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSAodm9pZCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPE5TQXJyYXk+LCB0eXBlcywgKF9jcmVhdGVXcml0YWJs
ZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSgpKSk7Ci0gICAgcmV0dXJuIHR5cGVzLmdldCgpOwor
ICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IF9jcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2VX
aXRoQXJjaGl2ZSgpOworICAgIHJldHVybiB0eXBlczsKIH0KIAogKyAoTlNBcnJheSAqKV93ZWJf
d3JpdGFibGVUeXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooQk9PTCloYXNBcmNoaXZlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyLmgKaW5kZXggZmNiMjIwYS4uZDg0OTQ5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SG9zdE1hbmFnZXIuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5o
PgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTUzLDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ3Jl
YXRlV2luZG93KCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVk
PE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI+OwogICAgIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5
KiBob3N0Rm9yUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5cGVfdCBwbHVn
aW5BcmNoaXRlY3R1cmUsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllcik7CiAKICAgICBO
ZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRl
eCA0MGVjYjIwLi5kNDllZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTM3LDYg
KzM3LDcgQEAKICNpbXBvcnQgPG1hY2gvbWFjaF9wb3J0Lmg+CiAjaW1wb3J0IDxzcGF3bi5oPgog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCkBAIC01MSw4ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBOZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyJiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpzaW5nbGV0b24oKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChOZXRzY2FwZVBsdWdpbkhvc3RNYW5h
Z2VyLCBwbHVnaW5Ib3N0TWFuYWdlciwgKCkpOwotICAgIAorICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyPiBwbHVnaW5Ib3N0TWFuYWdlcjsKICAgICBy
ZXR1cm4gcGx1Z2luSG9zdE1hbmFnZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KaW5kZXgg
MzQ0MWU0Zi4uNGEyZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KQEAgLTQwLDYgKzQwLDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSWRlbnRpZmll
clJlcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogZXh0ZXJuICJDIiB7CiAjaW1wb3J0ICJXZWJLaXRQbHVn
aW5Ib3N0LmgiCkBAIC04NCw4ICs4NSw3IEBAIHByaXZhdGU6CiB0eXBlZGVmIEhhc2hNYXA8bWFj
aF9wb3J0X3QsIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5Kj4gUGx1Z2luUHJveHlNYXA7CiBzdGF0
aWMgUGx1Z2luUHJveHlNYXAmIHBsdWdpblByb3h5TWFwKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoUGx1Z2luUHJveHlNYXAsIHBsdWdpblByb3h5TWFwLCAoKSk7Ci0g
ICAgCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBsdWdpblByb3h5TWFwPiBwbHVnaW5Qcm94
eU1hcDsKICAgICByZXR1cm4gcGx1Z2luUHJveHlNYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQppbmRleCA3NmM0NjU1Li5mZThjMTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tCkBAIC02NCw2ICs2NCw3IEBACiAjaW1wb3J0IDxiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5oPgogI2ltcG9ydCA8bWFjaC9tYWNoLmg+CiAjaW1wb3J0IDx1dGlsaXR5PgorI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVy
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTE2NjMsNyArMTY2NCw3IEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpwcml2YXRlQnJvd3NpbmdNb2RlRGlk
Q2hhbmdlKGJvb2wgaXNQcml2YXRlQnJvCiAKIHN0YXRpYyBTdHJpbmcmIGdsb2JhbEV4Y2VwdGlv
blN0cmluZygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
ZXhjZXB0aW9uU3RyaW5nLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
ZXhjZXB0aW9uU3RyaW5nOwogICAgIHJldHVybiBleGNlcHRpb25TdHJpbmc7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4
IDc1MWIxNmEuLjljZDBmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8cnVudGlt
ZS9FcnJvci5oPgogI2ltcG9ydCA8cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2ltcG9y
dCA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKIGV4dGVybiAiQyIgewogI2ltcG9ydCAiV2ViS2l0UGx1Z2luSG9zdC5oIgpAQCAt
NjUsOCArNjYsOCBAQCBGaWVsZCogUHJveHlDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbgogCiBzdGF0aWMgUHJveHlDbGFz
cyogcHJveHlDbGFzcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFBy
b3h5Q2xhc3MsIHByb3h5Q2xhc3MsICgpKTsKLSAgICByZXR1cm4gJnByb3h5Q2xhc3M7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFByb3h5Q2xhc3M+IHByb3h5Q2xhc3M7CisgICAgcmV0dXJu
ICZwcm94eUNsYXNzLmdldCgpOwogfQogICAgIAogY2xhc3MgUHJveHlGaWVsZCA6IHB1YmxpYyBK
U0M6OkJpbmRpbmdzOjpGaWVsZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCA5MmY4OTkwLi4yZmNiZDljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFt
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW0KQEAgLTU0LDYgKzU0LDcgQEAKICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5o
PgogI2ltcG9ydCA8cnVudGltZS9KU0xvY2suaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+Cisj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04Myw3ICs4NCw3IEBAIHByaXZhdGU6
CiB0eXBlZGVmIEhhc2hNYXA8TlBTdHJlYW0qLCBOUFA+IFN0cmVhbU1hcDsKIHN0YXRpYyBTdHJl
YW1NYXAmIHN0cmVhbXMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJlYW1NYXAsIHN0YXRpY1N0cmVhbXMsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3RyZWFtTWFwPiBzdGF0aWNTdHJlYW1zOwogICAgIHJldHVybiBzdGF0aWNTdHJlYW1zOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCmlu
ZGV4IDNmNzg3YzEuLjk4YzQyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3Jh
Z2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyLm1tCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbXBvcnQgPFdlYkNv
cmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNp
bXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlckludGVybmFsLmgiCkBAIC0yMjgsNyArMjI5LDcgQEAg
c3RhdGljIGJvb2wgaXNGaWxlSGlkZGVuKE5TU3RyaW5nICpmaWxlKQogCiBzdGF0aWMgTG9jayYg
dHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTG9jaywgbXV0ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8TG9jaz4gbXV0ZXg7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
bW0KaW5kZXggN2RiYzM1MC4uNTQzYjQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQpAQCAtODIsNyArODIsNyBA
QCB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4sIFJldGFp
blB0cjxXZWJVc2VyTWVkaWFQb2xpY3lDaAogCiBzdGF0aWMgVXNlck1lZGlhQ2hlY2tNYXAmIHVz
ZXJNZWRpYUNoZWNrTWFwKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
VXNlck1lZGlhQ2hlY2tNYXAsIHJlcXVlc3RzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVzZXJNZWRpYUNoZWNrTWFwPiByZXF1ZXN0czsKICAgICByZXR1cm4gcmVxdWVzdHM7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW0KaW5kZXggN2UwZDAzNS4uOTFiZDNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTYyLDYgKzYyLDcgQEAKICNp
bXBvcnQgPFdlYktpdExlZ2FjeS9ET01IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW1wb3J0IDx5YXJy
L1JlZ3VsYXJFeHByZXNzaW9uLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9y
dCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTM2MywxNSArMzY0LDE1IEBA
IHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwRm9yTGFiZWxzKE5TQXJyYXkgKmxhYmVs
cykKICAgICAvLyB0aGF0IHRoZSBhcHAgd2lsbCB1c2UgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBv
ZiBsb2NhbGVzIGlzIHVzZWQgaW4gc2VhcmNoaW5nLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBpbnQgcmVnRXhwQ2FjaGVTaXplID0gNDsKICAgICBzdGF0aWMgTlNNdXRhYmxlQXJyYXkqIHJl
Z0V4cExhYmVscyA9IG5pbDsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVmVj
dG9yPFJlZ3VsYXJFeHByZXNzaW9uKj4sIHJlZ0V4cHMsICgpKTsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoUmVndWxhckV4cHJlc3Npb24sIHdvcmRSZWdFeHAsICgiXFx3Iiwg
VGV4dENhc2VTZW5zaXRpdmUpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFJl
Z3VsYXJFeHByZXNzaW9uKj4+IHJlZ0V4cHM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
Z3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHciLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7CiAK
ICAgICBSZWd1bGFyRXhwcmVzc2lvbiogcmVzdWx0OwogICAgIGlmICghcmVnRXhwTGFiZWxzKQog
ICAgICAgICByZWdFeHBMYWJlbHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OnJlZ0V4cENhY2hlU2l6ZV07CiAgICAgQ0ZJbmRleCBjYWNoZUhpdCA9IFtyZWdFeHBM
YWJlbHMgaW5kZXhPZk9iamVjdDpsYWJlbHNdOwogICAgIGlmIChjYWNoZUhpdCAhPSBOU05vdEZv
dW5kKQotICAgICAgICByZXN1bHQgPSByZWdFeHBzLmF0KGNhY2hlSGl0KTsKKyAgICAgICAgcmVz
dWx0ID0gcmVnRXhwcy5nZXQoKS5hdChjYWNoZUhpdCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0
cmluZ0J1aWxkZXIgcGF0dGVybjsKICAgICAgICAgcGF0dGVybi5hcHBlbmQoJygnKTsKQEAgLTM4
Myw4ICszODQsOCBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cEZvckxhYmVscyhO
U0FycmF5ICpsYWJlbHMpCiAgICAgICAgICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IGZh
bHNlOwogICAgICAgICAgICAgYm9vbCBlbmRzV2l0aFdvcmRDaGFyID0gZmFsc2U7CiAgICAgICAg
ICAgICBpZiAobGFiZWwubGVuZ3RoKCkgIT0gMCkgewotICAgICAgICAgICAgICAgIHN0YXJ0c1dp
dGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAw
OwotICAgICAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLm1hdGNoKGxh
YmVsLnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOworICAgICAgICAgICAg
ICAgIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vi
c3RyaW5nKDAsIDEpKSA+PSAwOworICAgICAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXIgPSB3
b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEs
IDEpKSA+PSAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
aSAhPSAwKQpAQCAtNDA3LDE2ICs0MDgsMTYgQEAgc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uKiBy
ZWdFeHBGb3JMYWJlbHMoTlNBcnJheSAqbGFiZWxzKQogICAgICAgICBpZiAoY2FjaGVIaXQgIT0g
TlNOb3RGb3VuZCkgewogICAgICAgICAgICAgLy8gcmVtb3ZlIGZyb20gb2xkIHNwb3QKICAgICAg
ICAgICAgIFtyZWdFeHBMYWJlbHMgcmVtb3ZlT2JqZWN0QXRJbmRleDpjYWNoZUhpdF07Ci0gICAg
ICAgICAgICByZWdFeHBzLnJlbW92ZShjYWNoZUhpdCk7CisgICAgICAgICAgICByZWdFeHBzLmdl
dCgpLnJlbW92ZShjYWNoZUhpdCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gYWRkIHRvIHN0YXJ0
CiAgICAgICAgIFtyZWdFeHBMYWJlbHMgaW5zZXJ0T2JqZWN0OmxhYmVscyBhdEluZGV4OjBdOwot
ICAgICAgICByZWdFeHBzLmluc2VydCgwLCByZXN1bHQpOworICAgICAgICByZWdFeHBzLmdldCgp
Lmluc2VydCgwLCByZXN1bHQpOwogICAgICAgICAvLyB0cmltIGlmIHRvbyBiaWcKICAgICAgICAg
aWYgKFtyZWdFeHBMYWJlbHMgY291bnRdID4gcmVnRXhwQ2FjaGVTaXplKSB7CiAgICAgICAgICAg
ICBbcmVnRXhwTGFiZWxzIHJlbW92ZU9iamVjdEF0SW5kZXg6cmVnRXhwQ2FjaGVTaXplXTsKLSAg
ICAgICAgICAgIFJlZ3VsYXJFeHByZXNzaW9uKiBsYXN0ID0gcmVnRXhwcy5sYXN0KCk7Ci0gICAg
ICAgICAgICByZWdFeHBzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIFJlZ3VsYXJFeHByZXNz
aW9uKiBsYXN0ID0gcmVnRXhwcy5nZXQoKS5sYXN0KCk7CisgICAgICAgICAgICByZWdFeHBzLmdl
dCgpLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgIGRlbGV0ZSBsYXN0OwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDI4NGQ5NGEuLmU1ZDIx
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTY4MDYsOSArNjgwNiw5
IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgZWxzZSBpZiAob2JqZWN0LT5pbmhlcml0cyhKU0FycmF5OjppbmZvKCkpKSB7Ci0gICAg
ICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxKU09iamVjdCo+
LCB2aXNpdGVkRWxlbXMsICgpKTsKLSAgICAgICAgICAgIGlmICghdmlzaXRlZEVsZW1zLmNvbnRh
aW5zKG9iamVjdCkpIHsKLSAgICAgICAgICAgICAgICB2aXNpdGVkRWxlbXMuYWRkKG9iamVjdCk7
CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxKU09iamVjdCo+PiB2
aXNpdGVkRWxlbXM7CisgICAgICAgICAgICBpZiAoIXZpc2l0ZWRFbGVtcy5nZXQoKS5jb250YWlu
cyhvYmplY3QpKSB7CisgICAgICAgICAgICAgICAgdmlzaXRlZEVsZW1zLmdldCgpLmFkZChvYmpl
Y3QpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0g
c3RhdGljX2Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAgICAgICAgICAgICAgICAgYWVEZXNjID0g
W05TQXBwbGVFdmVudERlc2NyaXB0b3IgbGlzdERlc2NyaXB0b3JdOwpAQCAtNjgxNiw3ICs2ODE2
LDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbnVtSXRlbXM7ICsraSkKICAgICAgICAgICAgICAgICAgICAgW2FlRGVz
YyBpbnNlcnREZXNjcmlwdG9yOmFlRGVzY0Zyb21KU1ZhbHVlKGV4ZWMsIGFycmF5LT5nZXQoZXhl
YywgaSkpIGF0SW5kZXg6MF07CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgdmlz
aXRlZEVsZW1zLnJlbW92ZShvYmplY3QpOworICAgICAgICAgICAgICAgIHZpc2l0ZWRFbGVtcy5n
ZXQoKS5yZW1vdmUob2JqZWN0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gYWVEZXNjOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>