<?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>161500</bug_id>
          
          <creation_ts>2016-09-01 12:01:07 -0700</creation_ts>
          <short_desc>Rename WASM classes dropping the WASM prefix</short_desc>
          <delta_ts>2016-09-01 13:06:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1225445</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-01 12:01:07 -0700</bug_when>
    <thetext>Rename WASM classes dropping the WASM prefix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225447</commentid>
    <comment_count>1</comment_count>
      <attachid>287652</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-01 12:04:46 -0700</bug_when>
    <thetext>Created attachment 287652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225448</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-01 12:07:26 -0700</bug_when>
    <thetext>Attachment 287652 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WASMFormat.h:63:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 14 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>1225451</commentid>
    <comment_count>3</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-01 12:09:26 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 287652 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/wasm/WASMFormat.h:63:  Tests for true/false,
&gt; null/non-null, and zero/non-zero should all be done without equality
&gt; comparisons.  [readability/comparison_to_zero] [5]
&gt; Total errors found: 1 in 14 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

While this is technically a violation of WebKit style I think its are warranted in this case. The case is surrounded by other checks that the result of similar expressions are equal to non-zero values. Using ! instead just makes the code harder to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225453</commentid>
    <comment_count>4</comment_count>
      <attachid>287652</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 12:15:04 -0700</bug_when>
    <thetext>Comment on attachment 287652
Patch

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

r=me if you resolve the question about the Signature vector in WASMModuleParser.h.

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        primitive type makes it much trivial to convert a Vector of WASM

/much/more/ or /much/much more/

&gt; Source/JavaScriptCore/wasm/WASMModuleParser.h:61
&gt; +    Vector&lt;FunctionInformation&gt; m_functions;
&gt; +    Vector&lt;Signature&gt; m_signatures;

FunctionInformation embeds a Signature.  Why do we need this separate Signature Vector?  I also don&apos;t see it used anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225454</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 12:15:46 -0700</bug_when>
    <thetext>Please fix the build failures too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225457</commentid>
    <comment_count>6</comment_count>
      <attachid>287652</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-01 12:21:31 -0700</bug_when>
    <thetext>Comment on attachment 287652
Patch

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

Fixed the build failure locally.

&gt;&gt; Source/JavaScriptCore/wasm/WASMModuleParser.h:61
&gt;&gt; +    Vector&lt;Signature&gt; m_signatures;
&gt; 
&gt; FunctionInformation embeds a Signature.  Why do we need this separate Signature Vector?  I also don&apos;t see it used anywhere.

m_signatures owns the signatures used by FunctionInformation. It&apos;s likely that many functions all have the same signature so rather than duplicate that everywhere we just have each function point to a shared signature. You&apos;re right that it&apos;s not used in this patch. I&apos;ll delete them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225459</commentid>
    <comment_count>7</comment_count>
      <attachid>287652</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 12:24:44 -0700</bug_when>
    <thetext>Comment on attachment 287652
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/wasm/WASMModuleParser.h:61
&gt;&gt;&gt; +    Vector&lt;Signature&gt; m_signatures;
&gt;&gt; 
&gt;&gt; FunctionInformation embeds a Signature.  Why do we need this separate Signature Vector?  I also don&apos;t see it used anywhere.
&gt; 
&gt; m_signatures owns the signatures used by FunctionInformation. It&apos;s likely that many functions all have the same signature so rather than duplicate that everywhere we just have each function point to a shared signature. You&apos;re right that it&apos;s not used in this patch. I&apos;ll delete them.

Ah.  I missed the detail that the signature in FunctionInformation is a Signature* and not the Signature itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225482</commentid>
    <comment_count>8</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-01 13:06:00 -0700</bug_when>
    <thetext>Committed r205309: &lt;http://trac.webkit.org/changeset/205309&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287652</attachid>
            <date>2016-09-01 12:04:46 -0700</date>
            <delta_ts>2016-09-01 12:15:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161500-20160901120232.patch</filename>
            <type>text/plain</type>
            <size>33896</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjY4MWE4MGM2MjJmMTEzZWRiMzEwYjNjYTJmY2VhM2ZkNWUwMTQwLi5mMjFmMjNkYTVkZDI2MzUx
MDUxYzRkOTUyNTM0MmM0M2Q2ZGM2OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxNi0wOS0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgV0FTTSBjbGFzc2VzIGRyb3BwaW5nIHRoZSBXQVNNIHBy
ZWZpeAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYx
NTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2
aW5nIHRvIHdyaXRlIFdBU006OldBU01Nb2R1bGUgc2VlbXMgc2lsbHkuIEFsc28sIHRoaXMgcGF0
Y2gKKyAgICAgICAgbWVyZ2VzIFdBU01GdW5jdGlvblJldHVyblR5cGUgYW5kIFdBU01WYWx1ZVR5
cGUgaW50byBvbmUgdHlwZQorICAgICAgICB0aGF0IGlzIGEgdHlwZWRlZiBvZiBCMzo6VHlwZS4g
VXNpbmcgQjM6OlR5cGUgYXMgdGhlIFdBU00KKyAgICAgICAgcHJpbWl0aXZlIHR5cGUgbWFrZXMg
aXQgbXVjaCB0cml2aWFsIHRvIGNvbnZlcnQgYSBWZWN0b3Igb2YgV0FTTQorICAgICAgICB0eXBl
cyBpbnRvIGEgVmVjdG9yIG9mIEIzIHR5cGVzLgorCisgICAgICAgICogYjMvQjNUeXBlLmg6Cisg
ICAgICAgICogd2FzbS9KU1dBU01Nb2R1bGUuaDoKKyAgICAgICAgKEpTQzo6SlNXQVNNTW9kdWxl
OjpzaWduYXR1cmVzKToKKyAgICAgICAgKEpTQzo6SlNXQVNNTW9kdWxlOjpmdW5jdGlvbkltcG9y
dHMpOgorICAgICAgICAoSlNDOjpKU1dBU01Nb2R1bGU6OmZ1bmN0aW9uSW1wb3J0U2lnbmF0dXJl
cyk6CisgICAgICAgIChKU0M6OkpTV0FTTU1vZHVsZTo6Z2xvYmFsVmFyaWFibGVUeXBlcyk6Cisg
ICAgICAgIChKU0M6OkpTV0FTTU1vZHVsZTo6ZnVuY3Rpb25EZWNsYXJhdGlvbnMpOgorICAgICAg
ICAoSlNDOjpKU1dBU01Nb2R1bGU6OmZ1bmN0aW9uUG9pbnRlclRhYmxlcyk6CisgICAgICAgICog
d2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OldBU006OnRvQjNPcCk6
CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OmFkZExvY2FsKToKKyAgICAgICAg
KEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6dW5hcnlPcCk6CisgICAgICAgIChKU0M6OldBU006
OkIzSVJHZW5lcmF0b3I6OmJpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVy
YXRvcjo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpXQVNNOjpwYXJzZUFuZENvbXBpbGUp
OgorICAgICAgICAqIHdhc20vV0FTTUIzSVJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiB3YXNtL1dB
U01Gb3JtYXQuaDoKKyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5oOgorICAgICAg
ICAoSlNDOjpXQVNNOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6RnVuY3Rpb25QYXJzZXIpOgor
ICAgICAgICAoSlNDOjpXQVNNOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2UpOgorICAg
ICAgICAoSlNDOjpXQVNNOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCbG9jayk6Cisg
ICAgICAgIChKU0M6OldBU006OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjpXQVNNOjpXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OldB
U01GdW5jdGlvblBhcnNlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldBU006OldBU01GdW5j
dGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXQVNN
OjpXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlQmxvY2spOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpXQVNNOjpXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVz
c2lvbik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgIChKU0M6OldB
U006Ok1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGVzKToKKyAgICAgICAgKEpTQzo6V0FT
TTo6TW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uU2lnbmF0dXJlcyk6CisgICAgICAgIChKU0M6
OldBU006Ok1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKToKKyAgICAgICAg
KEpTQzo6V0FTTTo6V0FTTU1vZHVsZVBhcnNlcjo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpXQVNNOjpXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uVHlwZXMpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpXQVNNOjpXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uU2ln
bmF0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldBU006OldBU01Nb2R1bGVQYXJzZXI6
OnBhcnNlRnVuY3Rpb25EZWZpbml0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XQVNN
TW9kdWxlUGFyc2VyLmg6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZVBhcnNlcjo6TW9kdWxl
UGFyc2VyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpmdW5jdGlvbkluZm9y
bWF0aW9uKToKKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTU1vZHVsZVBhcnNlcjo6V0FTTU1vZHVs
ZVBhcnNlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldBU006OldBU01Nb2R1bGVQYXJzZXI6
OmZ1bmN0aW9uSW5mb3JtYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV0FTTU9wcy5o
OgorICAgICAgICAqIHdhc20vV0FTTVBhcnNlci5oOgorICAgICAgICAoSlNDOjpXQVNNOjpQYXJz
ZXI6OlBhcnNlcik6CisgICAgICAgIChKU0M6OldBU006OlBhcnNlcjo6Y29uc3VtZUNoYXJhY3Rl
cik6CisgICAgICAgIChKU0M6OldBU006OlBhcnNlcjo6Y29uc3VtZVN0cmluZyk6CisgICAgICAg
IChKU0M6OldBU006OlBhcnNlcjo6cGFyc2VVSW50MzIpOgorICAgICAgICAoSlNDOjpXQVNNOjpQ
YXJzZXI6OnBhcnNlVUludDcpOgorICAgICAgICAoSlNDOjpXQVNNOjpQYXJzZXI6OnBhcnNlVmFy
VUludDEpOgorICAgICAgICAoSlNDOjpXQVNNOjpQYXJzZXI6OnBhcnNlVmFsdWVUeXBlKToKKyAg
ICAgICAgKEpTQzo6V0FTTTo6V0FTTVBhcnNlcjo6V0FTTVBhcnNlcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OldBU006OldBU01QYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpXQVNNOjpXQVNNUGFyc2VyOjpjb25zdW1lU3RyaW5nKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTVBhcnNlcjo6cGFyc2VVSW50MzIpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpXQVNNOjpXQVNNUGFyc2VyOjpwYXJzZVVJbnQ3KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6V0FTTTo6V0FTTVBhcnNlcjo6cGFyc2VWYXJVSW50MSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OldBU006OldBU01QYXJzZXI6OnBhcnNlVmFsdWVUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKiB3YXNtL1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6
UGxhbik6CisgICAgICAgICogd2FzbS9XQVNNU2VjdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpX
QVNNOjpTZWN0aW9uczo6bG9va3VwKToKKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTVNlY3Rpb25z
Ojpsb29rdXApOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV0FTTVNlY3Rpb25zLmg6CisgICAg
ICAgIChKU0M6OldBU006OlNlY3Rpb25zOjp2YWxpZGF0ZU9yZGVyKToKKyAgICAgICAgKEpTQzo6
V0FTTTo6V0FTTVNlY3Rpb25zOjp2YWxpZGF0ZU9yZGVyKTogRGVsZXRlZC4KKwogMjAxNi0wOC0z
MSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlND
XSBBZGQgaW5pdGlhdG9yIHBhcmFtZXRlciB0byBtb2R1bGUgcGlwZWxpbmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1R5cGUuaAppbmRleCA1ZGIwNjk3NzkzYTczYzFmNTFkNGIyZmM0MWE5M2FkMjA0ZWY2
MTg1Li4yOWI3ZDM2ZjI4Y2UwMDc2NjNlNjdjNDQ5NWFmYzdkYTk2MTgyZThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVHlwZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDExICszOSwxMiBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7CiAKIGVudW0gVHlwZSA6IGludDhfdCB7Ci0gICAgVm9pZCwKICAgICBJbnQzMiwK
ICAgICBJbnQ2NCwKICAgICBGbG9hdCwKLSAgICBEb3VibGUKKyAgICBEb3VibGUsCisgICAgTGFz
dFZhbHVlVHlwZSA9IERvdWJsZSwKKyAgICBWb2lkCiB9OwogCiBpbmxpbmUgYm9vbCBpc0ludChU
eXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dBU01N
b2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5oCmluZGV4
IGNjMDJhYjQ3Mzc1YmZjODU1NTllOGYxNDlhOTUzZWM5NThmODc5NGIuLjE0YjZlYjVmZDExYWM0
ODIwNmRkZjM4YjAzZWM0YzQ1NDljZTgxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L0pTV0FTTU1vZHVsZS5oCkBAIC03NSwxMiArNzUsMTIgQEAgcHVibGljOgogICAgIFZlY3Rvcjx1
aW50MzJfdD4mIGkzMkNvbnN0YW50cygpIHsgcmV0dXJuIG1faTMyQ29uc3RhbnRzOyB9CiAgICAg
VmVjdG9yPGZsb2F0PiYgZjMyQ29uc3RhbnRzKCkgeyByZXR1cm4gbV9mMzJDb25zdGFudHM7IH0K
ICAgICBWZWN0b3I8ZG91YmxlPiYgZjY0Q29uc3RhbnRzKCkgeyByZXR1cm4gbV9mNjRDb25zdGFu
dHM7IH0KLSAgICBWZWN0b3I8V0FTTVNpZ25hdHVyZT4mIHNpZ25hdHVyZXMoKSB7IHJldHVybiBt
X3NpZ25hdHVyZXM7IH0KLSAgICBWZWN0b3I8V0FTTUZ1bmN0aW9uSW1wb3J0PiYgZnVuY3Rpb25J
bXBvcnRzKCkgeyByZXR1cm4gbV9mdW5jdGlvbkltcG9ydHM7IH0KLSAgICBWZWN0b3I8V0FTTUZ1
bmN0aW9uSW1wb3J0U2lnbmF0dXJlPiYgZnVuY3Rpb25JbXBvcnRTaWduYXR1cmVzKCkgeyByZXR1
cm4gbV9mdW5jdGlvbkltcG9ydFNpZ25hdHVyZXM7IH0KLSAgICBWZWN0b3I8V0FTTVZhbHVlVHlw
ZT4mIGdsb2JhbFZhcmlhYmxlVHlwZXMoKSB7IHJldHVybiBtX2dsb2JhbFZhcmlhYmxlVHlwZXM7
IH0KLSAgICBWZWN0b3I8V0FTTUZ1bmN0aW9uRGVjbGFyYXRpb24+JiBmdW5jdGlvbkRlY2xhcmF0
aW9ucygpIHsgcmV0dXJuIG1fZnVuY3Rpb25EZWNsYXJhdGlvbnM7IH0KLSAgICBWZWN0b3I8V0FT
TUZ1bmN0aW9uUG9pbnRlclRhYmxlPiYgZnVuY3Rpb25Qb2ludGVyVGFibGVzKCkgeyByZXR1cm4g
bV9mdW5jdGlvblBvaW50ZXJUYWJsZXM7IH0KKyAgICBWZWN0b3I8V0FTTTo6U2lnbmF0dXJlPiYg
c2lnbmF0dXJlcygpIHsgcmV0dXJuIG1fc2lnbmF0dXJlczsgfQorICAgIFZlY3RvcjxXQVNNOjpG
dW5jdGlvbkltcG9ydD4mIGZ1bmN0aW9uSW1wb3J0cygpIHsgcmV0dXJuIG1fZnVuY3Rpb25JbXBv
cnRzOyB9CisgICAgVmVjdG9yPFdBU006OkZ1bmN0aW9uSW1wb3J0U2lnbmF0dXJlPiYgZnVuY3Rp
b25JbXBvcnRTaWduYXR1cmVzKCkgeyByZXR1cm4gbV9mdW5jdGlvbkltcG9ydFNpZ25hdHVyZXM7
IH0KKyAgICBWZWN0b3I8V0FTTTo6VHlwZT4mIGdsb2JhbFZhcmlhYmxlVHlwZXMoKSB7IHJldHVy
biBtX2dsb2JhbFZhcmlhYmxlVHlwZXM7IH0KKyAgICBWZWN0b3I8V0FTTTo6RnVuY3Rpb25EZWNs
YXJhdGlvbj4mIGZ1bmN0aW9uRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlvbkRlY2xh
cmF0aW9uczsgfQorICAgIFZlY3RvcjxXQVNNOjpGdW5jdGlvblBvaW50ZXJUYWJsZT4mIGZ1bmN0
aW9uUG9pbnRlclRhYmxlcygpIHsgcmV0dXJuIG1fZnVuY3Rpb25Qb2ludGVyVGFibGVzOyB9CiAK
ICAgICBjb25zdCBKU0FycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YXJyYXlCdWZmZXIuZ2V0KCk7IH0KICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+
PiYgZnVuY3Rpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlvbnM7IH0KQEAgLTk1LDEyICs5NSwxMiBA
QCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50MzJfdD4gbV9pMzJDb25zdGFudHM7CiAgICAgVmVj
dG9yPGZsb2F0PiBtX2YzMkNvbnN0YW50czsKICAgICBWZWN0b3I8ZG91YmxlPiBtX2Y2NENvbnN0
YW50czsKLSAgICBWZWN0b3I8V0FTTVNpZ25hdHVyZT4gbV9zaWduYXR1cmVzOwotICAgIFZlY3Rv
cjxXQVNNRnVuY3Rpb25JbXBvcnQ+IG1fZnVuY3Rpb25JbXBvcnRzOwotICAgIFZlY3RvcjxXQVNN
RnVuY3Rpb25JbXBvcnRTaWduYXR1cmU+IG1fZnVuY3Rpb25JbXBvcnRTaWduYXR1cmVzOwotICAg
IFZlY3RvcjxXQVNNVmFsdWVUeXBlPiBtX2dsb2JhbFZhcmlhYmxlVHlwZXM7Ci0gICAgVmVjdG9y
PFdBU01GdW5jdGlvbkRlY2xhcmF0aW9uPiBtX2Z1bmN0aW9uRGVjbGFyYXRpb25zOwotICAgIFZl
Y3RvcjxXQVNNRnVuY3Rpb25Qb2ludGVyVGFibGU+IG1fZnVuY3Rpb25Qb2ludGVyVGFibGVzOwor
ICAgIFZlY3RvcjxXQVNNOjpTaWduYXR1cmU+IG1fc2lnbmF0dXJlczsKKyAgICBWZWN0b3I8V0FT
TTo6RnVuY3Rpb25JbXBvcnQ+IG1fZnVuY3Rpb25JbXBvcnRzOworICAgIFZlY3RvcjxXQVNNOjpG
dW5jdGlvbkltcG9ydFNpZ25hdHVyZT4gbV9mdW5jdGlvbkltcG9ydFNpZ25hdHVyZXM7CisgICAg
VmVjdG9yPFdBU006OlR5cGU+IG1fZ2xvYmFsVmFyaWFibGVUeXBlczsKKyAgICBWZWN0b3I8V0FT
TTo6RnVuY3Rpb25EZWNsYXJhdGlvbj4gbV9mdW5jdGlvbkRlY2xhcmF0aW9uczsKKyAgICBWZWN0
b3I8V0FTTTo6RnVuY3Rpb25Qb2ludGVyVGFibGU+IG1fZnVuY3Rpb25Qb2ludGVyVGFibGVzOwog
CiAgICAgV3JpdGVCYXJyaWVyPEpTQXJyYXlCdWZmZXI+IG1fYXJyYXlCdWZmZXI7CiAgICAgVmVj
dG9yPFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPj4gbV9mdW5jdGlvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggZTE0ZDk3ZWVk
NWRhNmY2ZjJhZmUyZjcwNmQwYzQ1YzEyYjNkMWQyMC4uZDkwZjEwYjBkNjQyNzE3MzI0MTVhMzMx
OWVmNjM4MjJiMjBkY2M3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01CM0lSR2VuZXJhdG9yLmNwcApAQCAtNDEsMjAgKzQxLDIwIEBAIG5hbWVzcGFjZSBXQVNNIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEIzOwogCi1pbmxpbmUgQjM6Ok9wY29kZSB0b0IzT3AoV0FTTUJp
bmFyeU9wVHlwZSBvcCkKK2lubGluZSBCMzo6T3Bjb2RlIHRvQjNPcChCaW5hcnlPcFR5cGUgb3Ap
CiB7CiAgICAgc3dpdGNoIChvcCkgewotI2RlZmluZSBDUkVBVEVfQ0FTRShuYW1lLCBvcCwgYjNv
cCkgY2FzZSBXQVNNQmluYXJ5T3BUeXBlOjpuYW1lOiByZXR1cm4gYjNvcDsKKyNkZWZpbmUgQ1JF
QVRFX0NBU0UobmFtZSwgb3AsIGIzb3ApIGNhc2UgQmluYXJ5T3BUeXBlOjpuYW1lOiByZXR1cm4g
YjNvcDsKICAgICBGT1JfRUFDSF9XQVNNX0JJTkFSWV9PUChDUkVBVEVfQ0FTRSkKICN1bmRlZiBD
UkVBVEVfQ0FTRQogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci1pbmxpbmUgQjM6Ok9wY29kZSB0b0IzT3AoV0FTTVVuYXJ5T3BUeXBlIG9wKQoraW5saW5lIEIz
OjpPcGNvZGUgdG9CM09wKFVuYXJ5T3BUeXBlIG9wKQogewogICAgIHN3aXRjaCAob3ApIHsKLSNk
ZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgb3AsIGIzb3ApIGNhc2UgV0FTTVVuYXJ5T3BUeXBlOjpu
YW1lOiByZXR1cm4gYjNvcDsKKyNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgb3AsIGIzb3ApIGNh
c2UgVW5hcnlPcFR5cGU6Om5hbWU6IHJldHVybiBiM29wOwogICAgIEZPUl9FQUNIX1dBU01fVU5B
UllfT1AoQ1JFQVRFX0NBU0UpCiAjdW5kZWYgQ1JFQVRFX0NBU0UKICAgICB9CkBAIC02NywxMSAr
NjcsMTEgQEAgcHVibGljOgogCiAgICAgQjNJUkdlbmVyYXRvcihQcm9jZWR1cmUmKTsKIAotICAg
IHZvaWQgYWRkTG9jYWwoV0FTTVZhbHVlVHlwZSwgdWludDMyX3QpOwotICAgIEV4cHJlc3Npb25U
eXBlIGFkZENvbnN0YW50KFdBU01WYWx1ZVR5cGUsIHVpbnQ2NF90KTsKKyAgICB2b2lkIGFkZExv
Y2FsKFR5cGUsIHVpbnQzMl90KTsKKyAgICBFeHByZXNzaW9uVHlwZSBhZGRDb25zdGFudChUeXBl
LCB1aW50NjRfdCk7CiAKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBiaW5hcnlPcChXQVNN
QmluYXJ5T3BUeXBlLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdodCwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gdW5h
cnlPcChXQVNNVW5hcnlPcFR5cGUsIEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gYmluYXJ5T3AoQmluYXJ5T3BU
eXBlLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdodCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCk7CisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gdW5hcnlPcChVbmFy
eU9wVHlwZSwgRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAog
ICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEJsb2NrKCk7CiAgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gZW5kQmxvY2soVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgZXhwcmVzc2lvblN0
YWNrKTsKQEAgLTk2LDMzICs5NiwzMyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFBy
b2NlZHVyZSYgcHJvY2VkdXJlKQogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2Nr
KCk7CiB9CiAKLXZvaWQgQjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwoV0FTTVZhbHVlVHlwZSwgdWlu
dDMyX3QpCit2b2lkIEIzSVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3Qg
Y291bnQpCiB7CiAgICAgLy8gVE9ETzogQWRkIGxvY2Fscy4KIH0KIAotYm9vbCBCM0lSR2VuZXJh
dG9yOjp1bmFyeU9wKFdBU01VbmFyeU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgYXJnLCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KQorYm9vbCBCM0lSR2VuZXJhdG9yOjp1bmFyeU9wKFVuYXJ5T3BU
eXBlIG9wLCBFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAg
ICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCB0b0Iz
T3Aob3ApLCBPcmlnaW4oKSwgYXJnKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBCM0lS
R2VuZXJhdG9yOjpiaW5hcnlPcChXQVNNQmluYXJ5T3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBs
ZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK2Jvb2wg
QjNJUkdlbmVyYXRvcjo6YmluYXJ5T3AoQmluYXJ5T3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBs
ZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIHsKICAg
ICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIHRvQjNP
cChvcCksIE9yaWdpbigpLCBsZWZ0LCByaWdodCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUIz
SVJHZW5lcmF0b3I6OkV4cHJlc3Npb25UeXBlIEIzSVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KFdB
U01WYWx1ZVR5cGUgdHlwZSwgdWludDY0X3QgdmFsdWUpCitCM0lSR2VuZXJhdG9yOjpFeHByZXNz
aW9uVHlwZSBCM0lSR2VuZXJhdG9yOjphZGRDb25zdGFudChUeXBlIHR5cGUsIHVpbnQ2NF90IHZh
bHVlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgV0FTTVZhbHVlVHlwZTo6STMy
OgorICAgIGNhc2UgSW50MzI6CiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4o
dmFsdWUpKTsKLSAgICBjYXNlIFdBU01WYWx1ZVR5cGU6Okk2NDoKKyAgICBjYXNlIEludDY0Ogog
ICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1f
cHJvYywgT3JpZ2luKCksIHZhbHVlKTsKLSAgICBjYXNlIFdBU01WYWx1ZVR5cGU6OkYzMjoKKyAg
ICBjYXNlIEZsb2F0OgogICAgICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdEZsb2F0VmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIGJpdHdpc2VfY2FzdDxmbG9hdD4oc3Rh
dGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSk7Ci0gICAgY2FzZSBXQVNNVmFsdWVUeXBlOjpGNjQ6
CisgICAgY2FzZSBEb3VibGU6CiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PENvbnN0RG91YmxlVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIGJpdHdpc2VfY2FzdDxkb3Vi
bGU+KHZhbHVlKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTIwNSwxMSArMjA1LDExIEBAIEJhc2ljQmxvY2sqIEIzSVJHZW5lcmF0b3I6
OmJsb2NrRm9yQ29udHJvbExldmVsKHVuc2lnbmVkIGxldmVsKQogICAgIHJldHVybiBtX2NvbnRy
b2xTdGFja1ttX2NvbnRyb2xTdGFjay5zaXplKCkgLSAxIC0gbGV2ZWxdLmZpcnN0OwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rv
cjx1aW50OF90PiYgc291cmNlLCBXQVNNRnVuY3Rpb25JbmZvcm1hdGlvbiBpbmZvLCB1bnNpZ25l
ZCBvcHRMZXZlbCkKK3N0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxl
KFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2UsIEZ1bmN0aW9uSW5mb3JtYXRpb24gaW5m
bywgdW5zaWduZWQgb3B0TGV2ZWwpCiB7CiAgICAgUHJvY2VkdXJlIHByb2NlZHVyZTsKICAgICBC
M0lSR2VuZXJhdG9yIGNvbnRleHQocHJvY2VkdXJlKTsKLSAgICBXQVNNRnVuY3Rpb25QYXJzZXI8
QjNJUkdlbmVyYXRvcj4gcGFyc2VyKGNvbnRleHQsIHNvdXJjZSwgaW5mbyk7CisgICAgRnVuY3Rp
b25QYXJzZXI8QjNJUkdlbmVyYXRvcj4gcGFyc2VyKGNvbnRleHQsIHNvdXJjZSwgaW5mbyk7CiAg
ICAgaWYgKCFwYXJzZXIucGFyc2UoKSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9y
LmgKaW5kZXggYTQ1ODkyZjI0OTM4ZjgzMTJhMjQwYTI0MGY3ZmJmMGMxNWE2ODQ2Zi4uYzBlN2Y3
ZDYzOWY1MzM0OTk5NDk1NTkzNTMwMDcxZDA5ZjNiZTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBuYW1lc3BhY2UgV0FTTSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29t
cGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYsIFZlY3Rvcjx1aW50OF90PiYsIFdBU01GdW5j
dGlvbkluZm9ybWF0aW9uLCB1bnNpZ25lZCBvcHRMZXZlbCA9IDEpOworc3RkOjp1bmlxdWVfcHRy
PEIzOjpDb21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+Jiwg
RnVuY3Rpb25JbmZvcm1hdGlvbiwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsKIAogfSAvLyBuYW1l
c3BhY2UgV0FTTQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
Rm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKaW5kZXgg
MzljN2NmMjk0ZTJjMzEzZGE4MDY1MWY4MmNiNTg4NzkzZjc3ZTU0OS4uOTc1ZjgyYmQ2OGE1YjQ2
ZDE4MTZhNDQ5YmQ0YjY5MDM4ZGVhNDA1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01Gb3JtYXQuaApAQCAtNDQsNiArNDQsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
CisjaW5jbHVkZSAiQjNUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01MSw1MiArNTIsNTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNsYXNzIEpTRnVuY3Rpb247CiAKLWVudW0gY2xhc3MgV0FTTVZhbHVlVHlwZSA6IHVp
bnQ4X3QgewotICAgIEkzMiwKLSAgICBJNjQsCi0gICAgRjMyLAotICAgIEY2NCwKLSAgICBOdW1i
ZXJPZlR5cGVzCi19OworbmFtZXNwYWNlIFdBU00gewogCi1lbnVtIGNsYXNzIFdBU01GdW5jdGlv
blJldHVyblR5cGUgOiB1aW50OF90IHsKLSAgICBJMzIsCi0gICAgSTY0LAotICAgIEYzMiwKLSAg
ICBGNjQsCi0gICAgVm9pZCwKLSAgICBOdW1iZXJPZkV4cHJlc3Npb25UeXBlcwotfTsKK3VzaW5n
IEIzOjpUeXBlOwordXNpbmcgQjM6OkludDMyOwordXNpbmcgQjM6OkludDY0OwordXNpbmcgQjM6
OkZsb2F0OwordXNpbmcgQjM6OkRvdWJsZTsKIAotc3RydWN0IFdBU01TaWduYXR1cmUgewotICAg
IFdBU01GdW5jdGlvblJldHVyblR5cGUgcmV0dXJuVHlwZTsKLSAgICBWZWN0b3I8V0FTTVZhbHVl
VHlwZT4gYXJndW1lbnRzOworc3RhdGljX2Fzc2VydChJbnQzMiA9PSAwLCAiV0FTTSBuZWVkcyBC
Mzo6VHlwZTo6SW50MzIgdG8gaGF2ZSB0aGUgdmFsdWUgMCIpOworc3RhdGljX2Fzc2VydChJbnQ2
NCA9PSAxLCAiV0FTTSBuZWVkcyBCMzo6VHlwZTo6SW50NjQgdG8gaGF2ZSB0aGUgdmFsdWUgMSIp
Oworc3RhdGljX2Fzc2VydChGbG9hdCA9PSAyLCAiV0FTTSBuZWVkcyBCMzo6VHlwZTo6RmxvYXQg
dG8gaGF2ZSB0aGUgdmFsdWUgMiIpOworc3RhdGljX2Fzc2VydChEb3VibGUgPT0gMywgIldBU00g
bmVlZHMgQjM6OlR5cGU6OkRvdWJsZSB0byBoYXZlIHRoZSB2YWx1ZSAzIik7CisKK3N0cnVjdCBT
aWduYXR1cmUgeworICAgIFR5cGUgcmV0dXJuVHlwZTsKKyAgICBWZWN0b3I8VHlwZT4gYXJndW1l
bnRzOwogfTsKIAotc3RydWN0IFdBU01GdW5jdGlvbkltcG9ydCB7CitzdHJ1Y3QgRnVuY3Rpb25J
bXBvcnQgewogICAgIFN0cmluZyBmdW5jdGlvbk5hbWU7CiB9OwogCi1zdHJ1Y3QgV0FTTUZ1bmN0
aW9uSW1wb3J0U2lnbmF0dXJlIHsKK3N0cnVjdCBGdW5jdGlvbkltcG9ydFNpZ25hdHVyZSB7CiAg
ICAgdWludDMyX3Qgc2lnbmF0dXJlSW5kZXg7CiAgICAgdWludDMyX3QgZnVuY3Rpb25JbXBvcnRJ
bmRleDsKIH07CiAKLXN0cnVjdCBXQVNNRnVuY3Rpb25EZWNsYXJhdGlvbiB7CitzdHJ1Y3QgRnVu
Y3Rpb25EZWNsYXJhdGlvbiB7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlSW5kZXg7CiB9OwogCi1z
dHJ1Y3QgV0FTTUZ1bmN0aW9uUG9pbnRlclRhYmxlIHsKK3N0cnVjdCBGdW5jdGlvblBvaW50ZXJU
YWJsZSB7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlSW5kZXg7CiAgICAgVmVjdG9yPHVpbnQzMl90
PiBmdW5jdGlvbkluZGljZXM7CiAgICAgVmVjdG9yPEpTRnVuY3Rpb24qPiBmdW5jdGlvbnM7CiB9
OwogCi1zdHJ1Y3QgV0FTTUZ1bmN0aW9uSW5mb3JtYXRpb24geworc3RydWN0IEZ1bmN0aW9uSW5m
b3JtYXRpb24geworICAgIFNpZ25hdHVyZSogc2lnbmF0dXJlOwogICAgIHNpemVfdCBzdGFydDsK
ICAgICBzaXplX3QgZW5kOwogfTsKIAorfSAvLyBuYW1lc3BhY2UgV0FTTQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggNDk0NjlmNWRmODc2
YTlhMDAwOWFhNjMyN2U5N2I1ZTEwNDNmNzUxZC4uMjFkNjg3ODdiNmViYWIyMzdhMzE4NGJmNTg2
NmFkZDQ2MWEyMmRlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1
bmN0aW9uUGFyc2VyLmgKQEAgLTM1LDExICszNSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVz
cGFjZSBXQVNNIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4dD4KLWNsYXNzIFdBU01GdW5j
dGlvblBhcnNlciA6IHB1YmxpYyBXQVNNUGFyc2VyIHsKK2NsYXNzIEZ1bmN0aW9uUGFyc2VyIDog
cHVibGljIFBhcnNlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDb250ZXh0OjpF
eHByZXNzaW9uVHlwZSBFeHByZXNzaW9uVHlwZTsKIAotICAgIFdBU01GdW5jdGlvblBhcnNlcihD
b250ZXh0JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZmZXIsIGNvbnN0IFdBU01G
dW5jdGlvbkluZm9ybWF0aW9uJik7CisgICAgRnVuY3Rpb25QYXJzZXIoQ29udGV4dCYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgc291cmNlQnVmZmVyLCBjb25zdCBGdW5jdGlvbkluZm9ybWF0aW9u
Jik7CiAKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZSgpOwogCkBAIC00Nyw3ICs0
Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwog
CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VCbG9jaygpOwotICAgIGJvb2wgV0FS
Tl9VTlVTRURfUkVUVVJOIHBhcnNlRXhwcmVzc2lvbihXQVNNT3BUeXBlKTsKKyAgICBib29sIFdB
Uk5fVU5VU0VEX1JFVFVSTiBwYXJzZUV4cHJlc3Npb24oT3BUeXBlKTsKICAgICBib29sIFdBUk5f
VU5VU0VEX1JFVFVSTiB1bmlmeUNvbnRyb2woVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYsIHVuc2ln
bmVkIGxldmVsKTsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxFeHByZXNzaW9uVHlwZT4+JiBzdGFj
a0ZvckNvbnRyb2xMZXZlbCh1bnNpZ25lZCBsZXZlbCk7CkBAIC01NywxNCArNTcsMTQgQEAgcHJp
dmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Ci1XQVNNRnVuY3Rpb25QYXJz
ZXI8Q29udGV4dD46OldBU01GdW5jdGlvblBhcnNlcihDb250ZXh0JiBjb250ZXh0LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHNvdXJjZUJ1ZmZlciwgY29uc3QgV0FTTUZ1bmN0aW9uSW5mb3JtYXRp
b24mIGluZm8pCi0gICAgOiBXQVNNUGFyc2VyKHNvdXJjZUJ1ZmZlciwgaW5mby5zdGFydCwgaW5m
by5lbmQpCitGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6RnVuY3Rpb25QYXJzZXIoQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZmZXIsIGNvbnN0IEZ1bmN0
aW9uSW5mb3JtYXRpb24mIGluZm8pCisgICAgOiBQYXJzZXIoc291cmNlQnVmZmVyLCBpbmZvLnN0
YXJ0LCBpbmZvLmVuZCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogewogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb250ZXh0PgotYm9vbCBXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBh
cnNlKCkKK2Jvb2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlKCkKIHsKICAgICB1aW50
MzJfdCBsb2NhbENvdW50OwogICAgIGlmICghcGFyc2VWYXJVSW50MzIobG9jYWxDb3VudCkpCkBA
IC03NSwzMSArNzUsMzAgQEAgYm9vbCBXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNl
KCkKICAgICAgICAgaWYgKCFwYXJzZVVJbnQzMihudW1iZXJPZkxvY2Fsc1dpdGhUeXBlKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBXQVNNVmFsdWVUeXBlIHR5cGVPZkxv
Y2FsOworICAgICAgICBUeXBlIHR5cGVPZkxvY2FsOwogICAgICAgICBpZiAoIXBhcnNlVmFsdWVU
eXBlKHR5cGVPZkxvY2FsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBt
X2NvbnRleHQuYWRkTG9jYWwodHlwZU9mTG9jYWwsIG51bWJlck9mTG9jYWxzV2l0aFR5cGUpOwog
ICAgIH0KIAogICAgIHJldHVybiBwYXJzZUJsb2NrKCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbnRleHQ+Ci1ib29sIFdBU01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCbG9jaygp
Citib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKCkKIHsKICAgICB3aGls
ZSAodHJ1ZSkgewogICAgICAgICB1aW50OF90IG9wOwogICAgICAgICBpZiAoIXBhcnNlVUludDco
b3ApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghcGFyc2VFeHBy
ZXNzaW9uKHN0YXRpY19jYXN0PFdBU01PcFR5cGU+KG9wKSkpIHsKKyAgICAgICAgaWYgKCFwYXJz
ZUV4cHJlc3Npb24oc3RhdGljX2Nhc3Q8T3BUeXBlPihvcCkpKSB7CiAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oImZhaWxlZCB0byBwcm9jZXNzIG9w
OiIsIG9wKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChvcCA9PSBXQVNNT3BUeXBlOjpFbmQpCisgICAgICAgIGlmIChvcCA9PSBPcFR5cGU6OkVu
ZCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTA3LDcgKzEwNiw3IEBAIGJvb2wg
V0FTTUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKCkKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ29udGV4dD4KLWJvb2wgV0FTTUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJz
ZUV4cHJlc3Npb24oV0FTTU9wVHlwZSBvcCkKK2Jvb2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OnBhcnNlRXhwcmVzc2lvbihPcFR5cGUgb3ApCiB7CiAgICAgc3dpdGNoIChvcCkgewogI2RlZmlu
ZSBDUkVBVEVfQ0FTRShuYW1lLCBpZCwgYjNvcCkgY2FzZSBuYW1lOgpAQCAtMTE1LDcgKzExNCw3
IEBAIGJvb2wgV0FTTUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oV0FT
TU9wVHlwZSBvcCkKICAgICAgICAgRXhwcmVzc2lvblR5cGUgbGVmdCA9IG1fZXhwcmVzc2lvblN0
YWNrLnRha2VMYXN0KCk7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJpZ2h0ID0gbV9leHByZXNz
aW9uU3RhY2sudGFrZUxhc3QoKTsKICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OwotICAg
ICAgICBpZiAoIW1fY29udGV4dC5iaW5hcnlPcChzdGF0aWNfY2FzdDxXQVNNQmluYXJ5T3BUeXBl
PihvcCksIGxlZnQsIHJpZ2h0LCByZXN1bHQpKQorICAgICAgICBpZiAoIW1fY29udGV4dC5iaW5h
cnlPcChzdGF0aWNfY2FzdDxCaW5hcnlPcFR5cGU+KG9wKSwgbGVmdCwgcmlnaHQsIHJlc3VsdCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFw
cGVuZChyZXN1bHQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyNCwyOCArMTIzLDI4IEBA
IGJvb2wgV0FTTUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oV0FTTU9w
VHlwZSBvcCkKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9DQVNFKSB7CiAgICAg
ICAgIEV4cHJlc3Npb25UeXBlIGFyZyA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CiAg
ICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQudW5h
cnlPcChzdGF0aWNfY2FzdDxXQVNNVW5hcnlPcFR5cGU+KG9wKSwgYXJnLCByZXN1bHQpKQorICAg
ICAgICBpZiAoIW1fY29udGV4dC51bmFyeU9wKHN0YXRpY19jYXN0PFVuYXJ5T3BUeXBlPihvcCks
IGFyZywgcmVzdWx0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9leHBy
ZXNzaW9uU3RhY2suYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICN1bmRlZiBDUkVBVEVfQ0FTRQogCi0gICAgY2FzZSBXQVNNT3BUeXBlOjpJMzJDb25zdDogewor
ICAgIGNhc2UgT3BUeXBlOjpJMzJDb25zdDogewogICAgICAgICB1aW50MzJfdCBjb25zdGFudDsK
ICAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihjb25zdGFudCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChtX2NvbnRleHQuYWRk
Q29uc3RhbnQoV0FTTVZhbHVlVHlwZTo6STMyLCBjb25zdGFudCkpOworICAgICAgICBtX2V4cHJl
c3Npb25TdGFjay5hcHBlbmQobV9jb250ZXh0LmFkZENvbnN0YW50KEludDMyLCBjb25zdGFudCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBjYXNlIFdBU01PcFR5cGU6OkJs
b2NrOiB7CisgICAgY2FzZSBPcFR5cGU6OkJsb2NrOiB7CiAgICAgICAgIGlmICghbV9jb250ZXh0
LmFkZEJsb2NrKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBw
YXJzZUJsb2NrKCk7CiAgICAgfQogCi0gICAgY2FzZSBXQVNNT3BUeXBlOjpSZXR1cm46IHsKKyAg
ICBjYXNlIE9wVHlwZTo6UmV0dXJuOiB7CiAgICAgICAgIHVpbnQ4X3QgcmV0dXJuQ291bnQ7CiAg
ICAgICAgIGlmICghcGFyc2VWYXJVSW50MShyZXR1cm5Db3VudCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNTYsNyArMTU1LDcgQEAgYm9vbCBXQVNNRnVuY3Rpb25QYXJzZXI8Q29u
dGV4dD46OnBhcnNlRXhwcmVzc2lvbihXQVNNT3BUeXBlIG9wKQogICAgICAgICByZXR1cm4gbV9j
b250ZXh0LmFkZFJldHVybihyZXR1cm5WYWx1ZXMpOwogICAgIH0KIAotICAgIGNhc2UgV0FTTU9w
VHlwZTo6RW5kOgorICAgIGNhc2UgT3BUeXBlOjpFbmQ6CiAgICAgICAgIHJldHVybiBtX2NvbnRl
eHQuZW5kQmxvY2sobV9leHByZXNzaW9uU3RhY2spOwogCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcAppbmRleCBmYjJjMzEyODJkMjRk
MGM0Y2E3YWFlYTRjYzZlZWMyYTBkMmJkMGVhLi45MGMxZDVhMTQ3ODk2YjBiM2I2YTBkZDhmMTdm
ZmY1NzEzNjNhNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
TW9kdWxlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9k
dWxlUGFyc2VyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV0FTTSB7CiAKIHN0YXRp
YyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAotYm9vbCBXQVNNTW9kdWxlUGFyc2VyOjpw
YXJzZSgpCitib29sIE1vZHVsZVBhcnNlcjo6cGFyc2UoKQogewogICAgIGlmIChtX3NvdXJjZUxl
bmd0aCA8IDgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBX
QVNNTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2dMbigiUGFzc2VkIHByb2Nlc3NpbmcgaGVhZGVyLiIpOwogCi0gICAgV0FTTVNlY3Rpb25zOjpT
ZWN0aW9uIHByZXZpb3VzU2VjdGlvbiA9IFdBU01TZWN0aW9uczo6U2VjdGlvbjo6VW5rbm93bjsK
KyAgICBTZWN0aW9uczo6U2VjdGlvbiBwcmV2aW91c1NlY3Rpb24gPSBTZWN0aW9uczo6VW5rbm93
bjsKICAgICB3aGlsZSAobV9vZmZzZXQgPCBtX3NvdXJjZUxlbmd0aCkgewogICAgICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiU3RhcnRpbmcgdG8gcGFyc2UgbmV4dCBz
ZWN0aW9uIGF0IG9mZnNldDogIiwgbV9vZmZzZXQpOwpAQCAtNzEsOCArNzEsOCBAQCBib29sIFdB
U01Nb2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgaWYgKG1fb2Zmc2V0ICsgc2VjdGlvbk5h
bWVMZW5ndGggKyBtYXhMRUJCeXRlTGVuZ3RoID49IG1fc291cmNlTGVuZ3RoKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFdBU01TZWN0aW9uczo6U2VjdGlvbiBzZWN0aW9u
ID0gV0FTTVNlY3Rpb25zOjpsb29rdXAobV9zb3VyY2UuZGF0YSgpICsgbV9vZmZzZXQsIHNlY3Rp
b25OYW1lTGVuZ3RoKTsKLSAgICAgICAgaWYgKCFXQVNNU2VjdGlvbnM6OnZhbGlkYXRlT3JkZXIo
cHJldmlvdXNTZWN0aW9uLCBzZWN0aW9uKSkKKyAgICAgICAgU2VjdGlvbnM6OlNlY3Rpb24gc2Vj
dGlvbiA9IFNlY3Rpb25zOjpsb29rdXAobV9zb3VyY2UuZGF0YSgpICsgbV9vZmZzZXQsIHNlY3Rp
b25OYW1lTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFTZWN0aW9uczo6dmFsaWRhdGVPcmRlcihwcmV2
aW91c1NlY3Rpb24sIHNlY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBtX29mZnNldCArPSBzZWN0aW9uTmFtZUxlbmd0aDsKIApAQCAtODMsMTAgKzgzLDEwIEBAIGJv
b2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICB1bnNpZ25lZCBlbmQgPSBtX29m
ZnNldCArIHNlY3Rpb25MZW5ndGg7CiAKICAgICAgICAgc3dpdGNoIChzZWN0aW9uKSB7Ci0gICAg
ICAgIGNhc2UgV0FTTVNlY3Rpb25zOjpTZWN0aW9uOjpFbmQ6CisgICAgICAgIGNhc2UgU2VjdGlv
bnM6OkVuZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGNhc2UgV0FTTVNl
Y3Rpb25zOjpTZWN0aW9uOjpGdW5jdGlvblR5cGVzOiB7CisgICAgICAgIGNhc2UgU2VjdGlvbnM6
OkZ1bmN0aW9uVHlwZXM6IHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbigiUGFyc2luZyB0eXBlcy4iKTsKICAgICAgICAgICAgIGlmICghcGFyc2VG
dW5jdGlvblR5cGVzKCkpCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6
cGFyc2UoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIFdB
U01TZWN0aW9uczo6U2VjdGlvbjo6U2lnbmF0dXJlczogeworICAgICAgICBjYXNlIFNlY3Rpb25z
OjpTaWduYXR1cmVzOiB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nTG4oIlBhcnNpbmcgZnVuY3Rpb24gc2lnbmF0dXJlcy4iKTsKICAgICAgICAgICAg
IGlmICghcGFyc2VGdW5jdGlvblNpZ25hdHVyZXMoKSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBib29s
IFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgY2FzZSBXQVNNU2VjdGlvbnM6OlNlY3Rpb246OkRlZmluaXRpb25zOiB7Cisg
ICAgICAgIGNhc2UgU2VjdGlvbnM6OkRlZmluaXRpb25zOiB7CiAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlBhcnNpbmcgZnVuY3Rpb24gZGVmaW5p
dGlvbnMuIik7CiAgICAgICAgICAgICBpZiAoIXBhcnNlRnVuY3Rpb25EZWZpbml0aW9ucygpKQpA
QCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIFdBU01TZWN0aW9uczo6U2Vj
dGlvbjo6VW5rbm93bjogeworICAgICAgICBjYXNlIFNlY3Rpb25zOjpVbmtub3duOiB7CiAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVua25vd24g
c2VjdGlvbiwgc2tpcHBpbmcuIik7CiAgICAgICAgICAgICBtX29mZnNldCArPSBzZWN0aW9uTGVu
Z3RoOwpAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2UoKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rp
b25UeXBlcygpCitib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGVzKCkKIHsKICAg
ICB1aW50MzJfdCBjb3VudDsKICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGNvdW50KSkKQEAgLTE1
NywyNyArMTU3LDI5IEBAIGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGVz
KCkKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nTG4oImFyZ3VtZW50
Q291bnQ6ICIsIGFyZ3VtZW50Q291bnQpOwogCi0gICAgICAgIFZlY3RvcjxXQVNNVmFsdWVUeXBl
PiBhcmd1bWVudFR5cGVzOworICAgICAgICBWZWN0b3I8VHlwZT4gYXJndW1lbnRUeXBlczsKKyAg
ICAgICAgYXJndW1lbnRUeXBlcy5yZXNpemUoYXJndW1lbnRDb3VudCk7CisKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgewotICAgICAgICAgICAg
aWYgKCFwYXJzZVVJbnQ3KHR5cGUpIHx8IHR5cGUgPj0gc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FT
TVZhbHVlVHlwZTo6TnVtYmVyT2ZUeXBlcykpCisgICAgICAgICAgICBpZiAoIXBhcnNlVUludDco
dHlwZSkgfHwgdHlwZSA+PSBzdGF0aWNfY2FzdDx1aW50OF90PihUeXBlOjpMYXN0VmFsdWVUeXBl
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBhcmd1bWVudFR5
cGVzLmFwcGVuZChzdGF0aWNfY2FzdDxXQVNNVmFsdWVUeXBlPih0eXBlKSk7CisgICAgICAgICAg
ICBhcmd1bWVudFR5cGVzLmFwcGVuZChzdGF0aWNfY2FzdDxUeXBlPih0eXBlKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoIXBhcnNlVmFyVUludDEodHlwZSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIFdBU01GdW5jdGlvblJldHVyblR5cGUgcmV0dXJuVHlwZTsKKyAg
ICAgICAgVHlwZSByZXR1cm5UeXBlOwogCiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZ0xuKHR5cGUpOwogCiAgICAgICAgIGlmICh0eXBlKSB7Ci0gICAgICAgICAgICBX
QVNNVmFsdWVUeXBlIHZhbHVlOworICAgICAgICAgICAgVHlwZSB2YWx1ZTsKICAgICAgICAgICAg
IGlmICghcGFyc2VWYWx1ZVR5cGUodmFsdWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIHJldHVyblR5cGUgPSBzdGF0aWNfY2FzdDxXQVNNRnVuY3Rpb25SZXR1
cm5UeXBlPih2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm5UeXBlID0gc3RhdGljX2Nhc3Q8VHlw
ZT4odmFsdWUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVyblR5cGUgPSBXQVNN
RnVuY3Rpb25SZXR1cm5UeXBlOjpWb2lkOworICAgICAgICAgICAgcmV0dXJuVHlwZSA9IFR5cGU6
OlZvaWQ7CiAKICAgICAgICAgLy8gVE9ETzogQWN0dWFsbHkgZG8gc29tZXRoaW5nIHdpdGggdGhp
cyBkYXRhLi4uCiAgICAgICAgIFVOVVNFRF9QQVJBTShyZXR1cm5UeXBlKTsKQEAgLTE4NSw3ICsx
ODcsNyBAQCBib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25UeXBlcygpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblNp
Z25hdHVyZXMoKQorYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25TaWduYXR1cmVzKCkK
IHsKICAgICB1aW50MzJfdCBjb3VudDsKICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGNvdW50KSkK
QEAgLTIwMiw3ICsyMDQsNyBAQCBib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25T
aWduYXR1cmVzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXQVNNTW9kdWxlUGFyc2Vy
OjpwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbnMoKQorYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRnVu
Y3Rpb25EZWZpbml0aW9ucygpCiB7CiAgICAgdWludDMyX3QgY291bnQ7CiAgICAgaWYgKCFwYXJz
ZVZhclVJbnQzMihjb3VudCkpCkBAIC0yMTYsNyArMjE4LDcgQEAgYm9vbCBXQVNNTW9kdWxlUGFy
c2VyOjpwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbnMoKQogICAgICAgICBpZiAoIXBhcnNlVmFyVUlu
dDMyKGZ1bmN0aW9uU2l6ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
V0FTTUZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8gPSBtX2Z1bmN0aW9uc1tpXTsKKyAgICAgICAg
RnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5mbyA9IG1fZnVuY3Rpb25zW2ldOwogICAgICAgICBpbmZv
LnN0YXJ0ID0gbV9vZmZzZXQ7CiAgICAgICAgIGluZm8uZW5kID0gbV9vZmZzZXQgKyBmdW5jdGlv
blNpemU7CiAgICAgICAgIG1fb2Zmc2V0ID0gaW5mby5lbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKaW5kZXggYzE2NTA5OWJmMGFhY2NkNjRlOTE2
ZDAxMGRjNThlMmUyMjY1ZmY2My4uYzM3YWVhOTUwYzk5ZTRkNjBiM2ZjOWQxOGViNWYzNjZlN2Nl
Y2E3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBh
cnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIu
aApAQCAtMzUsMTkgKzM1LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgV0FTTSB7
CiAKLWNsYXNzIFdBU01Nb2R1bGVQYXJzZXIgOiBwdWJsaWMgV0FTTVBhcnNlciB7CitjbGFzcyBN
b2R1bGVQYXJzZXIgOiBwdWJsaWMgUGFyc2VyIHsKIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYWdpY051bWJlciA9IDB4YzsKIAotICAgIFdBU01Nb2R1bGVQYXJzZXIoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZmZXIpCi0gICAgICAgIDogV0FTTVBhcnNlcihz
b3VyY2VCdWZmZXIsIDAsIHNvdXJjZUJ1ZmZlci5zaXplKCkpCisgICAgTW9kdWxlUGFyc2VyKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgc291cmNlQnVmZmVyKQorICAgICAgICA6IFBhcnNlcihzb3Vy
Y2VCdWZmZXIsIDAsIHNvdXJjZUJ1ZmZlci5zaXplKCkpCiAgICAgewogICAgIH0KIAogICAgIGJv
b2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlKCk7CiAKLSAgICBjb25zdCBWZWN0b3I8V0FTTUZ1
bmN0aW9uSW5mb3JtYXRpb24+JiBmdW5jdGlvbkluZm9ybWF0aW9uKCkgeyByZXR1cm4gbV9mdW5j
dGlvbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8RnVuY3Rpb25JbmZvcm1hdGlvbj4mIGZ1bmN0aW9u
SW5mb3JtYXRpb24oKSB7IHJldHVybiBtX2Z1bmN0aW9uczsgfQogCiBwcml2YXRlOgogICAgIGJv
b2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rpb25UeXBlcygpOwpAQCAtNTUsOSArNTUs
MTAgQEAgcHJpdmF0ZToKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9u
RGVmaW5pdGlvbnMoKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9u
RGVmaW5pdGlvbih1aW50MzJfdCBudW1iZXIpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJO
IHBhcnNlQmxvY2soKTsKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUV4cHJlc3Np
b24oV0FTTU9wVHlwZSk7CisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFeHByZXNz
aW9uKE9wVHlwZSk7CiAKLSAgICBWZWN0b3I8V0FTTUZ1bmN0aW9uSW5mb3JtYXRpb24+IG1fZnVu
Y3Rpb25zOworICAgIFZlY3RvcjxGdW5jdGlvbkluZm9ybWF0aW9uPiBtX2Z1bmN0aW9uczsKKyAg
ICBWZWN0b3I8U2lnbmF0dXJlPiBtX3NpZ25hdHVyZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
QVNNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmgKaW5kZXggNWZkNmJiZjVkZWY1Mzcw
YzMwNGU1MTE0ODMwMTJjNDU1OTZhMzJkMy4uODAwMmYyNjQxNTc0OTk1M2VlZTU4MDI5ZTg2MzBi
Y2MxOGI1YjRjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9w
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaApAQCAtMTA2LDE1
ICsxMDYsMTUgQEAgbmFtZXNwYWNlIFdBU00gewogCiAjZGVmaW5lIENSRUFURV9FTlVNX1ZBTFVF
KG5hbWUsIGlkLCBiM29wKSBuYW1lID0gaWQsCiAKLWVudW0gV0FTTU9wVHlwZSA6IHVpbnQ4X3Qg
eworZW51bSBPcFR5cGUgOiB1aW50OF90IHsKICAgICBGT1JfRUFDSF9XQVNNX09QKENSRUFURV9F
TlVNX1ZBTFVFKQogfTsKIAotZW51bSBjbGFzcyBXQVNNQmluYXJ5T3BUeXBlIDogdWludDhfdCB7
CitlbnVtIGNsYXNzIEJpbmFyeU9wVHlwZSA6IHVpbnQ4X3QgewogICAgIEZPUl9FQUNIX1dBU01f
QklOQVJZX09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIAotZW51bSBjbGFzcyBXQVNNVW5hcnlP
cFR5cGUgOiB1aW50OF90IHsKK2VudW0gY2xhc3MgVW5hcnlPcFR5cGUgOiB1aW50OF90IHsKICAg
ICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTVBhcnNlci5oCmluZGV4IDFhZjgxNDMzYWM2NTkxMTEwN2Qx
ZDQ4ZDI3YzQ5NjViYTgyMmM5NDIuLmRmOWU4YjM1MzgxYWJiZTdlMDA1N2M4MDk5NjA5MDYwM2Yw
MDRjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QYXJzZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGFyc2VyLmgKQEAgLTM4LDkg
KzM4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXQVNNIHsKIAotY2xhc3MgV0FT
TVBhcnNlciB7CitjbGFzcyBQYXJzZXIgewogcHJvdGVjdGVkOgotICAgIFdBU01QYXJzZXIoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5kKTsKKyAgICBQYXJz
ZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5kKTsKIAog
ICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN1bWVDaGFyYWN0ZXIoY2hhcik7CiAgICAg
Ym9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gY29uc3VtZVN0cmluZyhjb25zdCBjaGFyKik7CkBAIC01
MSwxNCArNTEsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlVmFyVUludDMyKHVpbnQzMl90JiByZXN1bHQpIHsgcmV0dXJuIGRlY29kZVVJbnQzMihtX3Nv
dXJjZS5kYXRhKCksIG1fc291cmNlTGVuZ3RoLCBtX29mZnNldCwgcmVzdWx0KTsgfQogCiAKLSAg
ICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVZhbHVlVHlwZShXQVNNVmFsdWVUeXBlJiBy
ZXN1bHQpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVmFsdWVUeXBlKFR5cGUm
IHJlc3VsdCk7CiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1fc291cmNlOwogICAgIHNp
emVfdCBtX3NvdXJjZUxlbmd0aDsKICAgICBzaXplX3QgbV9vZmZzZXQ7CiB9OwogCi1BTFdBWVNf
SU5MSU5FIFdBU01QYXJzZXI6OldBU01QYXJzZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3Vy
Y2VCdWZmZXIsIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkKK0FMV0FZU19JTkxJTkUgUGFyc2Vy
OjpQYXJzZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZmZXIsIHNpemVfdCBzdGFy
dCwgc2l6ZV90IGVuZCkKICAgICA6IG1fc291cmNlKHNvdXJjZUJ1ZmZlcikKICAgICAsIG1fc291
cmNlTGVuZ3RoKGVuZCkKICAgICAsIG1fb2Zmc2V0KHN0YXJ0KQpAQCAtNjcsNyArNjcsNyBAQCBB
TFdBWVNfSU5MSU5FIFdBU01QYXJzZXI6OldBU01QYXJzZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBzb3VyY2VCdWZmZXIsIHNpemVfdAogICAgIEFTU0VSVChzdGFydCA8IGVuZCk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpjb25zdW1lQ2hhcmFjdGVyKGNoYXIgYykKK0FM
V0FZU19JTkxJTkUgYm9vbCBQYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIoY2hhciBjKQogewogICAg
IGlmIChtX29mZnNldCA+PSBtX3NvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNzgsNyArNzgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgV0FTTVBhcnNlcjo6Y29uc3VtZUNo
YXJhY3RlcihjaGFyIGMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1BTFdBWVNfSU5MSU5FIGJv
b2wgV0FTTVBhcnNlcjo6Y29uc3VtZVN0cmluZyhjb25zdCBjaGFyKiBzdHIpCitBTFdBWVNfSU5M
SU5FIGJvb2wgUGFyc2VyOjpjb25zdW1lU3RyaW5nKGNvbnN0IGNoYXIqIHN0cikKIHsKICAgICB1
bnNpZ25lZCBzdGFydCA9IG1fb2Zmc2V0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IHN0cltp
XTsgaSsrKSB7CkBAIC05MCw3ICs5MCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2Vy
Ojpjb25zdW1lU3RyaW5nKGNvbnN0IGNoYXIqIHN0cikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
QUxXQVlTX0lOTElORSBib29sIFdBU01QYXJzZXI6OnBhcnNlVUludDMyKHVpbnQzMl90JiByZXN1
bHQpCitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyOjpwYXJzZVVJbnQzMih1aW50MzJfdCYgcmVz
dWx0KQogewogICAgIGlmIChtX29mZnNldCArIDQgPj0gbV9zb3VyY2VMZW5ndGgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTk5LDcgKzk5LDcgQEAgQUxXQVlTX0lOTElORSBib29sIFdBU01Q
YXJzZXI6OnBhcnNlVUludDMyKHVpbnQzMl90JiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpwYXJzZVVJbnQ3KHVpbnQ4X3QmIHJl
c3VsdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI6OnBhcnNlVUludDcodWludDhfdCYgcmVz
dWx0KQogewogICAgIGlmIChtX29mZnNldCA+PSBtX3NvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFy
c2VyOjpwYXJzZVVJbnQ3KHVpbnQ4X3QmIHJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0IDwgMHg4
MDsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIFdBU01QYXJzZXI6OnBhcnNlVmFyVUludDEodWlu
dDhfdCYgcmVzdWx0KQorQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjo6cGFyc2VWYXJVSW50MSh1
aW50OF90JiByZXN1bHQpCiB7CiAgICAgdWludDMyX3QgdGVtcDsKICAgICBpZiAoIXBhcnNlVmFy
VUludDMyKHRlbXApKQpAQCAtMTE2LDE0ICsxMTYsMTQgQEAgQUxXQVlTX0lOTElORSBib29sIFdB
U01QYXJzZXI6OnBhcnNlVmFyVUludDEodWludDhfdCYgcmVzdWx0KQogICAgIHJldHVybiB0ZW1w
IDw9IDE7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpwYXJzZVZhbHVlVHlw
ZShXQVNNVmFsdWVUeXBlJiByZXN1bHQpCitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyOjpwYXJz
ZVZhbHVlVHlwZShUeXBlJiByZXN1bHQpCiB7CiAgICAgdWludDhfdCB2YWx1ZTsKICAgICBpZiAo
IXBhcnNlVUludDcodmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHZhbHVl
ID49IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01WYWx1ZVR5cGU6Ok51bWJlck9mVHlwZXMpKQor
ICAgIGlmICh2YWx1ZSA+PSBzdGF0aWNfY2FzdDx1aW50OF90PihUeXBlOjpMYXN0VmFsdWVUeXBl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdBU01W
YWx1ZVR5cGU+KHZhbHVlKTsKKyAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFu
LmNwcAppbmRleCBiNDY5MzFmNjY5YWFlNjAxYWVjMGIxYjc0MGY1YjFkMjhiMGY5YjJmLi40N2M0
Y2Y2ZWU1Njc3ZDJhMWNiYjI1YWFjMWQ0YWY2ZmMwZTk3MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTVBsYW4uY3BwCkBAIC00Myw3ICs0Myw3IEBAIFBsYW46OlBsYW4oVk0mIHZt
LCBWZWN0b3I8dWludDhfdD4gc291cmNlKQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBk
YXRhTG9nTG4oIlN0YXJ0aW5nIHBsYW4uIik7Ci0gICAgV0FTTU1vZHVsZVBhcnNlciBtb2R1bGVQ
YXJzZXIoc291cmNlKTsKKyAgICBNb2R1bGVQYXJzZXIgbW9kdWxlUGFyc2VyKHNvdXJjZSk7CiAg
ICAgaWYgKCFtb2R1bGVQYXJzZXIucGFyc2UoKSkgewogICAgICAgICBkYXRhTG9nTG4oIlBhcnNp
bmcgbW9kdWxlIGZhaWxlZC4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTIsNyArNTIsNyBAQCBQ
bGFuOjpQbGFuKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSkKICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZ0xuKCJQYXJzZWQgbW9kdWxlLiIpOwogCi0gICAgZm9yIChjb25z
dCBXQVNNRnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5mbyA6IG1vZHVsZVBhcnNlci5mdW5jdGlvbklu
Zm9ybWF0aW9uKCkpIHsKKyAgICBmb3IgKGNvbnN0IEZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8g
OiBtb2R1bGVQYXJzZXIuZnVuY3Rpb25JbmZvcm1hdGlvbigpKSB7CiAgICAgICAgIGlmICh2ZXJi
b3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIGZ1bmNpb24gc3RhcnRpbmcg
YXQ6ICIsIGluZm8uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgaW5mby5lbmQpOwogICAgICAg
ICByZXN1bHQuYXBwZW5kKHBhcnNlQW5kQ29tcGlsZSh2bSwgc291cmNlLCBpbmZvKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVNlY3Rpb25zLmNwcAppbmRleCBlNjAyNWMxZDVj
YWQzZWY3ZWYzZmU0ODliOWRmYmRhMGIyM2ZjYzYzLi5mMTk2N2ZiMmU2YzViYjY3NDU3MmU4YzI5
Y2M5OTZlYzEzYjEzMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNU2VjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0
aW9ucy5jcHAKQEAgLTQyLDE0ICs0MiwxNCBAQCBzdHJ1Y3QgU2VjdGlvbkRhdGEgewogCiBzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBz
ZWN0aW9uRGF0YUxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihXQVNNU2VjdGlvbnM6OlNl
Y3Rpb246OlVua25vd24pOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNlY3Rpb25EYXRhTGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNlY3Rpb25zOjpVbmtub3duKTsKIHN0YXRpYyBjb25z
dCBTZWN0aW9uRGF0YSBzZWN0aW9uRGF0YVtzZWN0aW9uRGF0YUxlbmd0aF0gewogI2RlZmluZSBD
UkVBVEVfU0VDVElPTl9EQVRBKG5hbWUsIHN0cikgeyBzaXplb2Yoc3RyKSAtIDEsIHN0ciB9LAog
ICAgIEZPUl9FQUNIX1dBU01fU0VDVElPTl9UWVBFKENSRUFURV9TRUNUSU9OX0RBVEEpCiAjdW5k
ZWYgQ1JFQVRFX1NFQ1RJT05fREFUQQogfTsKIAotV0FTTVNlY3Rpb25zOjpTZWN0aW9uIFdBU01T
ZWN0aW9uczo6bG9va3VwKGNvbnN0IHVpbnQ4X3QqIG5hbWUsIHVuc2lnbmVkIGxlbmd0aCkKK1Nl
Y3Rpb25zOjpTZWN0aW9uIFNlY3Rpb25zOjpsb29rdXAoY29uc3QgdWludDhfdCogbmFtZSwgdW5z
aWduZWQgbGVuZ3RoKQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIkRl
Y29kaW5nIHNlY3Rpb24gd2l0aCBuYW1lOiAiLCBTdHJpbmcobmFtZSwgbGVuZ3RoKSk7CkBAIC01
Nyw5ICs1Nyw5IEBAIFdBU01TZWN0aW9uczo6U2VjdGlvbiBXQVNNU2VjdGlvbnM6Omxvb2t1cChj
b25zdCB1aW50OF90KiBuYW1lLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgIGlmIChzZWN0aW9u
RGF0YVtpXS5sZW5ndGggIT0gbGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGlmICghbWVtY21wKG5hbWUsIHNlY3Rpb25EYXRhW2ldLm5hbWUsIGxlbmd0aCkpCi0gICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0FTTVNlY3Rpb25zOjpTZWN0aW9uPihpKTsKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTZWN0aW9uczo6U2VjdGlvbj4oaSk7CiAgICAgfQot
ICAgIHJldHVybiBXQVNNU2VjdGlvbnM6OlNlY3Rpb246OlVua25vd247CisgICAgcmV0dXJuIFNl
Y3Rpb25zOjpVbmtub3duOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXQVNNCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCmluZGV4IGM5MDZhMmZhMDc3ZjExMjc0NzNkZTZm
OWNjODEzNmExMTYyOGQxNmYuLjFmYzU2ZWViODU0ZGNjZTk3NzUzMzJlMjJmYmVkNTIyOWVlNzhk
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCkBAIC0zOCw4
ICszOCw4IEBAIG5hbWVzcGFjZSBXQVNNIHsKICAgICBtYWNybyhEZWZpbml0aW9ucywgImNvZGUi
KSBcCiAgICAgbWFjcm8oRW5kLCAiZW5kIikKIAotc3RydWN0IFdBU01TZWN0aW9ucyB7Ci0gICAg
ZW51bSBjbGFzcyBTZWN0aW9uIHsKK3N0cnVjdCBTZWN0aW9ucyB7CisgICAgZW51bSBTZWN0aW9u
IHsKICNkZWZpbmUgQ1JFQVRFX1NFQ1RJT05fRU5VTShuYW1lLCBzdHIpIG5hbWUsCiAgICAgICAg
IEZPUl9FQUNIX1dBU01fU0VDVElPTl9UWVBFKENSRUFURV9TRUNUSU9OX0VOVU0pCiAjdW5kZWYg
Q1JFQVRFX1NFQ1RJT05fRU5VTQpAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgV0FTTVNlY3Rpb25z
IHsKICAgICB7CiAgICAgICAgIC8vIFRoaXMgYWxsb3dzIHVua25vd24gc2VjdGlvbnMgYWZ0ZXIg
RW5kLCB3aGljaCBJIGRvdWJ0IHdpbGwgZXZlciBiZSBzdXBwb3J0ZWQgYnV0CiAgICAgICAgIC8v
IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBwb3RlbnRpYWxseSBicmVhayBiYWNrd2FyZHMgY29tcGF0
YWJpbGl0eS4KLSAgICAgICAgaWYgKHByZXZpb3VzID09IFNlY3Rpb246OlVua25vd24pCisgICAg
ICAgIGlmIChwcmV2aW91cyA9PSBVbmtub3duKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIHJldHVybiBwcmV2aW91cyA8IG5leHQ7CiAgICAgfQo=
</data>
<flag name="review"
          id="311094"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>